• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

基于CMPP3.0协议SP端的实现(C#)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

    最近一段是时间项目可能需要提供短信功能,客户作为一个 SP 端提供短信业务;网上搜索了一番,找到了比较不错的 CMPP30 类的代码,该代码基本实现了 CMPP3.0 协议中的短信收发、网络重连等功能。本人将其重新改造,提供了同步发送、异步发送的支持(原先版本的异步发送并非标准的 .NET 异步发送模式,这部分代码是一个异步操作实现的“范本”,可供大家参考),增加了对 PROVISION 接口的支持。

    本人已将这些代码打包为一个 RAR 文件,稍后会上传到 Internet 供大家交流、学习;下面将对这版 CMPP30 类的 API 进行简要介绍:

          1)用于收发短信 CMPP30 类的 API:

 

}
CMPP30 类 API
 

                      这个类是核心类,我的代码注释很清楚,所以就不再赘述;需要注意一下的就是 Send、BeginSend、EndSend 是符合 .NET 框架标准的异步操

                  作模式;与网上的 CMPP30 类不用的是 Send 函数要求传入 CMPP_SUBMIT 数据包并返回一个 CMPP_SUBMIT_RESP 包,这有利于调用者得到

                  由 ISMG 服务器返回的 MsgID 字段,否则调用者只能通过 SMS 事件得到 CMPP_SUBMIT_RESP 包,但是仅仅有这个包是不能与其相对应的

                  CMPP_SUBMIT 进行匹配的。

                      另外说一下,所有与 ISMG 的交互都会导致 SMS 事件的引发,该事件参数中会提供一个 SMS_EVENT 枚举供事件处理程序使用,详细信息请参

                  考 SMS_EVENT 的代码。

                      最后对使用我代码的朋友说一下,Start 与 Stop 这两个函数只能调用一次。如果你的程序中调用 Stop 停止了 CMPP30 服务,则必须重新实例

                  化一个新的 CMPP30 对象来启动该服务。

          2)对 PROVISION 正向订购/取消接口的支持:

                      根据 MISC1.6 的描述,对 PROVISION 接口的实现应该采用基于 SOAP 协议的 WEB 服务技术,我这里提供了一个 Provision 抽象类,该类继

               承自 System.Web.Services.WebService。呵呵,看出来了吧,我的想法就是让 asmx 页的后台类继承 Provision 类。该类封装了 PROVISION 接

               口中的 SyncOrderRelationReqSyncOrderRelationResp 包的实现,将这对“发送/响应”包的收发变为“一次对 WEB 服务函数的调用”,当接

               收到 SyncOrderRelationReq 时就调用 Provision 类中的 SyncOrderRelationReq 函数(WebMethod),并将该函数返回值转变为一个

               SyncOrderRelationResp 包返回给移动的服务器。API 代码如下:

 

}
Provision 类的 API
 

                       注意:asmx 页还是需要使用者自己建的,只需要将 asmx 的后台代码类继承 Provision 类,并实现抽象函数 OnSyncOrderRelationReq

                   可,在该抽象函数内,记录手机用户订购(或取消)业务的信息。

          3)对 PROVISION 反向订购/取消接口的支持:

                   最后再简要地说一下关于对反向订购/取消的支持,我的实现就是对 dsmp.wsdl 这个 WEB 服务的一个简单封装。该 WEB 在移动的服务器上发

              布。需要说明的是:根据反向订购/取消的业务流程,在这个过程中会执行正向订购/取消的那个 WEB 服务函数,因为反向订购/取消业务也会要求SP

              接收一个 SyncOrderRelationReq 包并返回与其相应的 SyncOrderRelationResp 包。所以 PROVISION 实现的关键还是在 Provision 类。

 

              下面是本文代码的下载链接:http://files.cnblogs.com/arcadiaray/CMPP30.rar

 



鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
《Dotnet9》系列-开源C#Winform控件库1《HZHControls》强力推荐发布时间:2022-07-10
下一篇:
C#/VB.NET合并PDF页面发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap