在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
最近一段是时间项目可能需要提供短信功能,客户作为一个 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 接 口中的 SyncOrderRelationReq 和 SyncOrderRelationResp 包的实现,将这对“发送/响应”包的收发变为“一次对 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
|
请发表评论