在这个系列里我们将学习一般业务系统的整个过程,涉及到从数据库一直到silverlight页面的各个方面。示例中遵循我一贯的风格,不采用任何第三方框架。但为了简单起见,这里不考虑多种数据库支持(其实多种数据库支持在可以利用存储过程的情况下,非常简单,封装一个数据库访问层即可),同时为了减轻贴图的压力,我们假设各位对于基本的silverlight的程序创建没有任何问题。下面是整个程序的大致框架:
![](https://box.kancloud.cn/2016-08-02_57a041c733b2f.gif)
1)数据库:示例中采用sqlserver.
2)应用服务层:分为4.5层,其中实体层是大部分层次都需共享的,因此力求简单,干净(除了必要的属性外,不要给实体任何方法),其它4层一次是:
A)数据库访问层:封这一层的目的一是为了简化数据访问层访问数据库的接口,二是为了支持多种不同类型的数据库;
B)数据访问层:这层主要是提供各种业务数据的访问包括查询,修改,删除,新增等。这一层的目的是为了使得业务逻辑层对数据的访问数据库无关(是不是数据库,何种数据库都可无关),并使得业务层在业务逻辑处理过程中可以采用搭积木的方式进行,有利于复杂业务逻辑的处理和复用。
C)业务逻辑层:负责处理业务逻辑,同时RIA服务层数据需要规整也在此进行封装,如果业务逻辑同时涉及到多个数据,也可以在这里通过创建不同的数据访问实例来实现。
D) WCF RIA 服务层:主要负责对Silverlight客户端提供服务,同时检查客户端与服务端调用的安全,注意这一层除了安全检查外,不进行任何业务逻辑处理,而是直接调用业务逻辑的相应方法。
以上的分层好处是:业务逻辑可以除了提供给RIA服务层外,其实对于Aspnet,webservice,Winform等都是适用的,可以最大限度的复用业务逻辑。
3)SilverLight客户端:分4层,依次是实体与服务代理层,模型层,视图模型层,视图层。
A)实体与服务代理层:这层包括自动生成的实体和服务代理,主要负责与服务端得远程服务调用。
B)模型层(M):负责处理数据缓存,负责处理调用服务代理层的服务。增加这一层的目的就是要使得对于VM层而言,数据是来自本地还是网络服务不再关心,毕竟silverlight属于富客服端技术体系;
C)视图模型层(VM):负责视图的模型数据组织,并提供一定的对视图的控制功能。
D)视图层(V):与客户交互,并将交互情况及时反馈给VM层。