
其实由上图可以知晓这里我主要采用了Api+服务的模式,这也是现在互联网公司经常采用的一种搭配默认;利用api接受请求插入待发送邮件队列和入库,然后通过部署多个NetCore跨平台服务(这里服务指的是:控制台应用)来做分布式处理操作,跨平台服务主要操作有:
. 邮件发送
. 邮件发送状态的通知(如果需要通知子业务,那么需要通知业务方邮件发送的状态)
. 通知失败处理(自动往绑定的责任人发送一封邮件)
. 填充队列(如果待发邮件队列或者通知队列数据不完整,需要修复队列数据)
这里我用最简单的方式,继承Controller封装了一个父级的BaseController,来让各个api的Controller基础统一来做身份验证;来看看重写 public override voidOnActionExecuting(ActionExecutingContext context) 的验证代码:
邮件请求父类实体:
此邮件系统使用到了第三方包,这也能够看出有很多朋友正为开源,便利,NetCore的推广努力着;
首先看看MailKit(邮件发送)包,通过安装下载命令: Install-Package MailKit 能够下载最新包,然后你不需要做太花哨的分装,只需要正对于邮件发送的服务器,端口,账号,密码做一些设置基本就行了,如果可以您可以直接使用我的代码:
Redis方面的操作包StackExchange.Redis,现在NetCore支持很多数据库驱动(例如:Sqlserver,mysql,postgressql,db2等)这么用可以参考下这篇文章AspNetCore - MVC实战系列(一)之Sqlserver表映射实体模型,不仅如此还支持很多缓存服务(如:Memorycach,Redis),这里讲到的就是Redis,我利用Redis的list的队列特性来做分布式任务存储,尽管目前我用到的只有一个主Redis服务还没有业务场景需要用到主从复制等功能;这里分享的代码是基于StackExchange.Redis基础上封装对于string,list的操作:
用到Redis的那些操作就添加哪些就行了,也不用太花哨能用就行;
本文转自zsdnr 51CTO博客,原文链接:http://blog.51cto.com/12942149/1928940,如需转载请自行联系原作者