(二)CommunityServer的开发框架
1. 三层架构,即数据访问层、业务逻辑层和表现层。这样开发的系统简洁并且易于理解。
2. Provider模式,关于Provider模式我们已经非常熟悉,这是我们处理数据访问层逻辑和业务逻辑层逻辑经常会采用的方式,实现Provider 模式需要4各类:基础类(即对应数据库中相应表的类)、工具类(即在基础类基础上写的函数类)、接口类(即工具类中会调用接口类中的方法)、实现类(即实现接口类中的方法)。例如下面的例子:User(基础类,对应数据库中的User表)-->Users(工具类,包含User的方法,比如 GetUser方法)-->UserDataProvider(接口类,该类中声明了GetUser方法)-->SqlUserDataProvider(实现类,该类实现了UserDataProvider类中声明的GetUser方法)。
3. 需要注意的是构建三层架构使用Provider模式时一定要谨慎,鼓励大家自己尝试一下,会发现张口容易动手难。
(三)依赖注入。关于依赖注入,大家可以看我的前一篇博客--也来谈谈依赖注入模式。希望会对大家有帮助。本着测试先行的原则,引入依赖注入不仅使代码复用性加强,而且便于测试。在我们平台项目中,我们使用了Castle IoC。
(四)Rhino Mocks单元测试框架。在平台项目的测试中,由于开发框架的特殊性以及其中的三层架构用到了几种技术,所以为了测试全面,我们需要将测试分为几层来测试。总体来看我们这个项目的大体构造流程如下所列:基础类-->工具类-->接口类-->实现类 -->controller-->View。因而我们在测试时将其分成工具类的测试(即函数的测试)以及Controller层业务逻辑的测试两部分。需要注意的是这两部分的关注点是不一样的,在工具类的测试部分,我们关注的是函数实现业务逻辑的正确性,因此我们会忽略数据访问层而专注于测试函数功能是否能够实现;在Controller层业务逻辑测试部分,我们关注的是在controller层处理的业务逻辑能否在view层返回给我们需要的数据,因此我们关注的是controller类里面的业务逻辑实现,而我们会刻意忽略其中调用的函数的实现环节。
(五)最后附上一个简单的实例说明:这个实例MySingleCase就是一个最简单的MVC框架+CommunityServer开发框架+Provider模式+IOC+Rhino Mocks测试框架的应用,其模式和我们现在正在开发的平台项目一致。
其中MysingleCase.Components中放置的是全局类以及公共类,包括CSCache.cs缓存类、CSConfiguration全局配置类、DataProvider(Provider基类)、IoC(依赖翻转的公共操作类)、WindsorServiceLocator.cs(服务定位器处理类)等。
MysingleCase.Models中放置的是项目中用到的用户自定义的基础类,包括基础类、工具类、接口类。其中Service中放置的就是使用依赖注入时需要的接口类。
MysingleCase.Web 项目中就是具体的MVC框架的使用。Controllers文件夹下面是所有的Controller,对应于每一个Controller中的 ActionResult的表示层都放在Views文件夹下的相应路径下。而其中的IoC文件中的ContainerBuilder.cs类负责 Controller以及需要使用依赖翻转的所有类的注册。别忘记我们使用MVC的必要条件也就是Global.asax中的路由规则是必不可少的
源代码:http://files.cnblogs.com/wynsdie/asimplecase.zip