ado.net使用事务
1 | string constr = ""; |
分层
理解分层:
逻辑分层N-Layer
逻辑上将系统中的不同功能模块、不同子系统等进行分层
好的逻辑分层可以让后续选择物理架构更灵活,选择性更大
我们学习的”三层架构”属于逻辑分层(three-layer)
物理分层N-Tier
物理部署时将系统的不同模块部署在不同的服务器上
三层架构
界面层UI;
数据访问层DAL(Data Access Layer);
业务逻辑层BLL(business logic layer )
三层结构的程序不是说把项目分成DAL,BLL,WebUI三个模块就叫三层了,下面几个问题在你的项目里面:
⒈ UILayer里面只有少量(或者没有)SQL语句或者存储过程调用,并且这些语句保证不会修改数据?
⒉ 如果把UILayer拿掉,你的项目还能在Interface/API的层次上提供所有功能吗?
⒊ 你的DAL可以移植到其他类似环境的项目吗?
⒋ 三个模块,可以分别运行于不同的服务器吗?
如果不是所有答案都为YES,那么你的项目还不能算是严格意义上的三层程序. 三层程序有一些需要约定遵守的规则:
⒈ 最关键的,UI层只能作为一个外壳,不能包含任何业务逻辑(BizLogic)的处理过程
⒉ 设计时应该从BLL出发,而不是UI出发. BLL层在API上应该实现所有BizLogic,以面向对象的方式
⒊ 不管数据层是一个简单的SqlHelper也好,还是带有Mapping过的Classes也好,应该在一定的抽象程度上做到系统无关
⒋ 不管使用COM+(Enterprise Service),还是Remoting,还是WebService之类的远程对象技术,不管部署的时候是不是真的分别部署到不同的服务器上,最起码在设计的时候要做这样的考虑,更远的,还得考虑多台服务器通过负载均衡作集群
所以考虑一个项目是不是应该应用三层/多层设计时,先得考虑下是不是真的需要? 实际上大部分程序就开个WebApplication就足够了,完全没必要作的这么复杂. 而多层结构,是用于解决真正复杂的项目需求的。
单例模式
构造函数变私有,通过静态方法只创建同一个对象,本质控制该类对象的创建
1 | public class Singleton |
通过dotnet发送邮件
创建mail对象
1 | var mail = new MailMessage(); |
创建正文,主题等
1 | mail.Subject = "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$4关于一些问题$$$$$$$$$$$$$$$$$$$$$$4"; |
登录
1 | SmtpClient client = new SmtpClient("smtp.qq.com",587);//腾讯邮箱 |
发送
1 | client.Send(mail); |
加附件
1 | MailMessage msg=new MailMessage(); |
加图片
1 | AlternateView av = AlternateView.CreateAlternateViewFromString("<img src=\"cid:neirongid\"/><h1>hello</h1><font color=\”red\“>^_^</font>”, Encoding.UTF8, "text/html"); |