一种新的移动N层架构(第七部分)
在这部分,我将更为实际的展示从代码角度来看这一新的移动架构第一部分看起来会是个什么样子,如果您需要了解一些背景,请参阅本系列前面部分:
- 第1部分总体介绍
- 第2部分谈到了底层的变化(逻辑+数据,LINQ2SQL)
- 第3部分讨论了消息通讯(WCF)
- 第4部分涵盖了用户界面中的重要内容(MVC模式)
- 第5部分概述了新的架构
- 第6部分新架构-业务域的实现
这个已经实现的架构被发布在CodePlex一个名字为Windows Mobile Architecture Blueprint的架构里,这意味着您可以访问完整的源代码并进行讨论,提出改进建议等等,当我带着你纵览整个架构时,我建议你身边放一份源代码以方便查看更详细的信息。
下一步的架构构造是创建服务接口(即服务),因此,我增加了一个新的叫做Blueprint.Facade的“WCF Service Application”项目到已经包含了业务域项目(Blueprint.Domain )的解决方案中。我的第一个服务将发布业务域提供的非常简单的功能(能够从数据库中获取所有类别)。首先,我把服务接口和服务分别改名为IService和Service(最后都删除了“ 1 ”),在这里,你必须确保所有引用得到更新(4个在Web.config文件中且不要忘记还有一个在Service.svc中) 。服务接口( IService.cs )的实现可以这样做...
[
ServiceContract
]
public interface IService
{
[ OperationContract ]
Category [] GetCategories();
}
public interface IService
{
[ OperationContract ]
Category [] GetCategories();
}
...而且还有一个业务域项目的引用,服务( Service.svc.cs )的实现可使用此代码...
public class Service : IService
{
public Category[] GetCategories()
{
using(NorthwindDataContext dc = new NorthwindDataContext())
return dc.GetCategories();
}
}
{
public Category[] GetCategories()
{
using(NorthwindDataContext dc = new NorthwindDataContext())
return dc.GetCategories();
}
}
...来完整的实现。当项目建成并运行的时候,这个WCF是预备被消费的,因此记住服务的网址会是一个好主意,在我们今后的帖子中当我们研究这项服务可以如何被移动客户端应用程序消费时还会用到。