i.Domain Model & Table Module
根据Martin Flower的定义Domain Model:An object model of the domain that incorporates both behavior and data.
- Rich Domain Model :是上面的这种定义
- Anemic Domain Model :这种方式方法和Data是分别在不同的类里实现的,OR-Mapping就是建立在这种方式上的。
ii.NHibernate
NHibernate是OR-Mapping的一种实现,是一个比较齐整的框架,是从Java的Hibernate转过来的。当然.Net下还有其它的OR-Mapping实现,如Gentle.net
iii.SqlMapper & IBatis.Net
SqlMapper为Domain Model和Table Module两种方式一个折中方案,它可以以面向对象的方式直接处理自定义数据实体对象,同时可以根据与数据源与业务实体的映射关系执行手写的Sql语句,这样完全使得我们可以针对具体数据源做优化,对于复杂操作同样可以胜任。IBatis.Net 是SqlMapper的实现。
3)or-Mapping与复杂查询的问题
OR-Mapping带来的好处是在CU,D方面还可以,毕竟大批量的删除一般不会经常出现,但是R方面就是一个实实在在的问题,面对复杂查询的执行效率也是一个问题。蹩脚的解决方案是两条线,R这方面采用Table Module这种方式来,而CUD才用对象。
5. Commom Tier
是系统性能、检测、跟踪用的,有些可以采用AOP来解决,如计数等。
三.企业级应用
企业级应用一般的特点是数据量大,交互操作要求高,在线用户量比较大,用户地理分布较广。这就要求我们在设计架构是要考虑其安全性,数据存储要求,集群,与其它应用交互。
l)安全性
安全性是一个多角度多方位的立体式问题,应用体统的安全性,是与其它安全性一起才构建起来。 一般安全分成几个层级:
1.网络安全性
-网络服务的安全,如http,ftp,mail
2.操作系统安全性
-访问控制表(ACL)安全控制,主要通过组、用户权限控制完成
-网络访问安全控制,在域模式下
3.数据安全性
- 数据库系统安全
-数据访问权限安全
- 数据加密
-数据备份
4.应用系统安全性
-Asp.net的安全性
-安全通信
对于上面列举的一些安全层次,有些是在系统的使用过程中要注意的问题,并非在架构设计时能做到的,但是,可以做为输入项来构建一套安全的系统。下面主要来讲一下如何用Asp.net来构建安全的系统。
1.Asp.net安全性
-ASP.NET 身份验证,包括 Windows、表单、Passport 和无身份验证
-ASP.NET 授权,包括URL 授权、文件授权 、主体权限需求 和.NET 角色
-标识和主体,主要是通过编程方式来进行(标识和主体对象必须实现 IIdentity 和 IPrincipal 接口。这些接口在 System.Security.Principal 名称空间内定义 )
2.在采用windows验证时,Asp.net可以在IIS上配置一些安全选项。
3.安全通信
-Internet协议安全(IPsec)
IPSec 提供传输级安全通信解决方案,可以用于保护两台计算机之间传送的数据安全 。VPN也是在这个协议基础上构建的。
-安全套接字(SSL)
这通常用于保护浏览器和 Web 服务器之间的通道安全。 结合IIS和证书,就可以配置https协议使用。
-远程调用(RPC)加密
分布式 COM (DCOM) 使用的 RPC 协议提供了一个身份验证级别(数据包保密性),它对客户端和服务器之间传送的每个数据包都进行加密。
2)存储
企业级应用级的存储特点是I/O访问要求高,数据容错性要求高。所以,就有可能使用比较高端的存储设备以满足存储要求,硬件不是软件系统架构的内容,但是Raid等使用却是软件架构必需考虑的。
3)集群
同存储要求一样,对于一个大型的应用来说,大访问量,分布式数据应用,就可能需要使用集群。
对于分布式数据库的需要使用数据库集群,可采用数据库系统本身得到解决。
对于分布式部署需要应用服务器集群,这在代码实现上就要先期考虑到Session在分布式部署环境下的同步问题。
4)与其它应用交互
在设计架构时,还要考虑与其它系统的交互。
1.使用其它系统的接口
2.与原有系统的整合
3.开放接口,供其它系统使用