1. 透過現象看本質 反射被譽為是 c#中的黑科技 ,在很多領域中都有反射的身影,例如,我們經常使用的ORM框架,ABP框架 等。 反射指程式可以訪問、檢測和修改它本身狀態或行為的一種能力。. 程式集包含模塊,而模塊包含類型,類型又包含成員。. 反射則提供了封裝程式集、模塊和類型的對象。. 您可以使 ...
【Github源碼】
《上一篇》 介紹了Xmtool工具庫中的發送郵件類庫,今天我們繼續為大家介紹其中的發送簡訊類庫。
發送簡訊就像發送郵件一樣,在軟體系統中使用非常普遍,甚至比發送郵件還要常見,有些甚至是軟體標配功能;例如現在的簡訊驗證碼登錄、通過簡訊找回密碼等等。
發送簡訊需要通過不同的額簡訊服務商提供的服務才可以,不同服務商提供了不同的SDK或HTTP服務,方法、參數各不相同,使用起來很不方便;系統運行上線後如果想切換一個簡訊發送平臺,更是困難,相當於重新實現一次簡訊發送功能。
為瞭解決以上問題,本類庫定義了一套標準方法,將各種簡訊發送平臺基於標準方法進行二次封裝;在使用時,無論是選用哪家的簡訊發送平臺,都通過標準方法進行調用,使用方便,擴展維護也異常簡單。
當前版本,系統實現了阿裡簡訊和騰訊簡訊兩個簡訊發送平臺的二次封裝,後續根據需要會持續更新。
public enum SmsProvider
{
Unset,
Alibaba, // 阿裡簡訊平臺
Tencent // 騰訊簡訊平臺
}
使用時,需要首先獲取一個簡訊發送對象ISmsProvider;獲取對象時,需要指定簡訊發送平臺。
獲取簡訊發送對象後,需要使用Config方法進行配置,這是正式發送簡訊前必須要進行的工作。
配置完成後,用戶便可以調用下麵的任意一個方法進行簡訊發送操作,簡單方便。
1. 獲取簡訊發送對象
public static ISmsProvider Sms(SmsProvider provider)
ISmsProvider sms = Xmtool.Sms(SmsProvider.Alibaba);
// TODO
2. 配置簡訊發送對象
public static ISmsProvider Config(params string[] args)
ISmsProvider sms = Xmtool.Sms(SmsProvider.Alibaba);
// 阿裡雲簡訊平臺配置方法
sms = sms.Config("accessKeyId(替換成自己的)", "accessKeySecret(替換成自己的)",
"阿裡雲簡訊簽名(替換成自己的)", "模板編碼(替換成自己的)");
/* 騰訊雲簡訊平臺
sms = sms.Config("secretId(替換成自己的)", "secretKey(替換成自己的)",
"騰訊雲簡訊簽名(替換成自己的)", "模板Id(替換成自己的)", "appId(替換成自己的)");
*/
// TODO
3. 發送簡訊-標準版
說明:標準版預設使用配置時指定的簽名和模板進行發送。
public bool Send(string templateParam, params string[] phoneNums)
ISmsProvider sms = Xmtool.Sms(SmsProvider.Alibaba);
// 阿裡雲短雲平臺配置方法
sms = sms.Config("accessKeyId(替換成自己的)", "accessKeySecret(替換成自己的)",
"阿裡雲簡訊簽名(替換成自己的)", "模板編碼(替換成自己的)");
/* 騰訊雲簡訊平臺
sms = sms.Config("secretId(替換成自己的)", "secretKey(替換成自己的)",
"騰訊雲簡訊簽名(替換成自己的)", "模板Id(替換成自己的)", "appId(替換成自己的)");
*/
sms.Send("參數(替換成自己的,如:{\"code\":\"1234\"})", "136********");
4. 發送簡訊-自定義版
說明:自定義版可以在發送時指定簽名和模板。
public bool Send2(string signName, string templateCode, string templateParam, params string[] phoneNums)
ISmsProvider sms = Xmtool.Sms(SmsProvider.Alibaba);
// 阿裡雲簡訊平臺配置方法
sms = sms.Config("accessKeyId(替換成自己的)", "accessKeySecret(替換成自己的)",
"阿裡雲簡訊簽名(替換成自己的)", "模板編碼(替換成自己的)");
/* 騰訊雲簡訊平臺
sms = sms.Config("secretId(替換成自己的)", "secretKey(替換成自己的)",
"騰訊雲簡訊簽名(替換成自己的)", "模板Id(替換成自己的)", "appId(替換成自己的)");
*/
sms.Send("自定義簽名", "自定義模板", "參數(替換成自己的,如:1234)", "136********");
*另外,同時提供了SendAsync、Send2Async等功能相同的非同步方法,使用時可根據需要選擇。