.Net Core应用搭建的分布式邮件系统设计.docxVIP

.Net Core应用搭建的分布式邮件系统设计.docx

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
.Net Core应用搭建的分布式邮件系统设计.docx

 为什么要在公司中首例采用NetCore做开发为什么要在公司中首例采用NetCore做开发,有些netcoreapi不是还不全面么,您都敢尝试?恐怕会有人这样问我,我只能告诉你NetCore现在出2.0版本了,很多Framwork的常用封装都已经有了,况且她主打的是MVC模式,能够高效的开发系统,也有很多Core的Nuget包支持了,已经到达了几乎可以放心大胆使用的地步,退一万不说有些东西不支持那这又如何,可以采用接口的方式从其他地方对接过来也是一种不错的处理方案。为了让C#这门优秀的语言被广泛应用,默默努力着。 目前我写的NetCore方面的文章AspNetCore - MVC实战系列目录 .NetCore上传多文件的几种示例 开源一个跨平台运行的服务插件 - TaskCore.MainForm NET Core-学习笔记 Asp.NetCore1.1版本没了project.json,这样来生成跨平台包 正片环节 - 分布式邮件系统设计图  分布式邮件系统说明其实由上图可以知晓这里我主要采用了Api+服务的模式,这也是现在互联网公司经常采用的一种搭配默认;利用api接受请求插入待发送邮件队列和入库,然后通过部署多个NetCore跨平台服务(这里服务指的是:控制台应用)来做分布式处理操作,跨平台服务主要操作有: . 邮件发送 . 邮件发送状态的通知(如果需要通知子业务,那么需要通知业务方邮件发送的状态) . 通知失败处理(自动往绑定的责任人发送一封邮件) . 填充队列(如果待发邮件队列或者通知队列数据不完整,需要修复队列数据) Api接口的统一验证入口这里我用最简单的方式,继承Controller封装了一个父级的BaseController,来让各个api的Controller基础统一来做身份验证;来看看重写 public override voidOnActionExecuting(ActionExecutingContext context) 的验证代码:  1 public override void OnActionExecuting(ActionExecutingContext context) 2 { 3 base.OnActionExecuting(context); 4 5 var moResponse = new MoBaseRp(); 6 try 7 { 8 9 #region 安全性验证 10 11 var key = request; 12 if (!context.ActionArguments.ContainsKey(key)) { moResponse.Msg = 请求方式不正确; return; } 13 var request = context.ActionArguments[key]; 14 var baseRq = request as MoBaseRq; 15 //暂时不验证登录账号密码 16 if (string.IsNullOrWhiteSpace(baseRq.UserName) || string.IsNullOrWhiteSpace(baseRq.UserPwd)) { moResponse.Msg = 登录账号或密码不能为空; return; } 17 else if (baseRq.AccId = 0) { moResponse.Msg = 发送者Id无效; return; } 18 else if (string.IsNullOrWhiteSpace(baseRq.FuncName)) { moResponse.Msg = 业务方法名不正确; return; } 19 20 //token验证 21 var strToken = PublicClass._Md5(${baseRq.UserName}{baseRq.AccId}, ); 22 if (!strToken.Equals(baseRq.Token, StringComparison.OrdinalIgnoreCase)) { moResponse.Msg = Token验证失败; return; } 23 24 //验证发送者Id 25 if (string.IsNullOrWhiteSpace(baseRq.Ip)) 26 { 27 var account = _db.EmailAccount.SingleOrDefault(b = b.Id == baseRq.AccId); 28 if (account == null) { moResponse.Msg = 发送者Id无效。; return; } 29 else 30 { 31 if (account.Status != (int)EnumHelper

您可能关注的文档

文档评论(0)

czy2014 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档