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