开源.NetCore通用工具库Xmtool使用连载

Posted 黎明

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开源.NetCore通用工具库Xmtool使用连载相关的知识,希望对你有一定的参考价值。

【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等功能相同的异步方法,使用时可根据需要选择。



【Github源码】

FunDA:一个开源的函数式数据处理工具库,也是Slick的补充

  如果你是一个Slick用户,或者你是一个数据库编程人员正在尝试进入函数式编程模式,那么FunDA可能会帮到你。

目前市面上FRM(Functional Relational Mapper),即函数式的数据库处理工具库的选择并不多,Typesafe公司的Slick可能是最通用的选择了。整体上来说:Slick还是一个不错的函数式数据库编程工具,用scala语言,很多地方引用了函数式的抽象模式和对象(functional abstractions and objects)。但是,FRM是一种偏重数据读取(data access)的开发模式,骨子里是一种批次运算模式,缺少了数据处理(data persistence)所惯用的recordset逐行处理方式。对于那些习惯了使用ORM(Object Relational Mapper)的资深数据库软件编程人员来说,这几乎是他们在大型复杂数据库软件开发项目中无法使用Slick的致命弱点。另一方面市面上容易掌握的能实现数据处理并行运算的开发工具也不多,对这方面的需求也比较旺盛。

  FunDA在Slick功能的基础上增加了recordset数据集逐行处理功能,让使用者感觉亲切,能更灵活自然的在前台内存里实现强大的数据处理功能。更重要的是FunDA增加了并行运算功能,可以实现对数据库的并行读写、以及数据处理函数的并行运算。此外,FunDA的数据库读取方式支持reactive-streams标准,能对大量数据进行后台缓存,然后逐块输出,保证了资源的安全使用。

  虽然作为一个函数式组件库(combinator library),但考虑到FunDA的使用人群是面向那些有着丰富数据库编程经验的编程人员,应该尽量降低用户对函数式编程技能的水平要求。FunDA通过一套自定义函数编程模式能使用户按照固定的方式编写程序,避开函数式编程的多样方式,把精力集中在数据处理功能上。

  FunDA现在已经是一个开源项目了。项目地址是:https://github.com/bayakala/funda 欢迎大家下载尝试。希望大家能有良好的使用体验。作为一个开源项目,作者更希望能有更多的人直接参与这个项目的开发,为项目发展作出贡献。

以上是关于开源.NetCore通用工具库Xmtool使用连载的主要内容,如果未能解决你的问题,请参考以下文章

开源.NetCore通用工具库Xmtool使用连载

开源.NetCore通用工具库Xmtool使用连载

Coravel是.NetCore中开源的工具库,可以让你使用定时任务,缓存,队列,事件,广播等高级应用程序变得轻而易举!...

Asp.net Core - 通用存储库模式 - 使用 TrimStart 搜索

免费开源ERP Odoo实施指南 连载二:POSTGRESQL概述

开源个.NetCore写的 - 并发请求工具PressureTool