基於 CMPP3.0 協議 SP 端的實現(C#)

 

 

    最近一段是時間項目可能需要提供短信功能,客戶作爲一個 SP 端提供短信業務;網上搜索了一番,找到了比較不錯的 CMPP30 類的代碼,該代碼基本實現了 CMPP3.0 協議中的短信收發、網絡重連等功能。本人將其重新改造,提供了同步發送、異步發送的支持(原先版本的異步發送並非標準的 .NET 異步發送模式,這部分代碼是一個異步操作實現的“範本”,可供大家參考),增加了對 PROVISION 接口的支持。

    本人已將這些代碼打包爲一個 RAR 文件,稍後會上傳到 Internet 供大家交流、學習;下面將對這版 CMPP30 類的 API 進行簡要介紹:

          1)用於收發短信 CMPP30 類的 API:

 


  1/// <summary>
  2/// CMPP30 短信網關通訊組件(供 SP 使用)。
  3/// </summary>

  4public class CMPP30
  5{
  6
  7    屬性
 13
 14    構造函數
 20
 21    公有方法
158
159}
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 代碼如下:

 

 

Code
Provision 類的 API
 

                       注意:asmx 頁還是需要使用者自己建的,只需要將 asmx 的後臺代碼類繼承 Provision 類,並實現抽象函數 OnSyncOrderRelationReq

                   可,在該抽象函數內,記錄手機用戶訂購(或取消)業務的信息。

          3)對 PROVISION 反向訂購/取消接口的支持:

                   最後再簡要地說一下關於對反向訂購/取消的支持,我的實現就是對 dsmp.wsdl 這個 WEB 服務的一個簡單封裝。該 WEB 在移動的服務器上發

              布。需要說明的是:根據反向訂購/取消的業務流程,在這個過程中會執行正向訂購/取消的那個 WEB 服務函數,因爲反向訂購/取消業務也會要求SP

              接收一個 SyncOrderRelationReq 包並返回與其相應的 SyncOrderRelationResp 包。所以 PROVISION 實現的關鍵還是在 Provision 類。

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章