; &
#160;
160;
0;
{S0} &
#160;
0;
160;
; &
#160;
60; 第一章
60;
0; 最新modificationsnbsp;
160; 添加到该系列的最后一篇文章是WCF范例 - 第十四章 - 验证放大器; 异常管理,补充说:这篇文章是2011年1月上旬和讨论 &
#160; 如何实现IDataErrorInfo接口验证属性的组合。 这种方法提供了一个全面的验证机制,无论是在客户端和
; 服务器端。本文还讨论了异常和预警管理。 &
#160;
近日,客户服务组件的因素已经发生减少在客户端所需的文物数量
当创建一个新的合同或补充或修订方法。代码是已经在主干上的分支。现有条款需要修改这些变化的结果,在树枝的代码也需要变化。
0;
在2010年12月,应用程序的服务器端被部署到Azure,CodePlex上提供一个现成的运行客户端。 WPF客户端可以调用 &
#160;在Azure部署一个WebRole方法。此源代码可以在CodePlex在
您可能要遵循系列/代码更新:
60; @ enriquealbert / wcfbyexample 简介
本文首先讨论了如何设计和开发了一系列的 WPF客户端使用的通讯和NHibernate WCF持久性的目的。
60;
设计企业应用程序需要一套全面的技能。在小 分配的时间和资源的中小型项目可不可行 &
#160; 程度,是在较大的项目,它是在这个时候,最佳做法的来源 和模式可以成为非常有利的。有很多文章,书籍和其他 材料涉及具体的方面,但它几乎是不可能找到一个
60; 地方所有的技术和模式一起提供使用 一个全面讨论为何以及如何。
这些文章的意图是提供一个完整的企业如何的例子 应用程序开发的早期阶段,以一个全功能的阶段。的文章
; 建立对每一个新的方面覆盖和/或现有功能的其他顶部 增强作为调整建筑师业务的非功能性的结果 &
#160;要求。
0;它是在一系列假设,遵循敏捷实践,使解决方案的
建筑师侧重于提供的RAD,DDD和TDD方法的灵活机制。 建筑师的一个关键方面是能够部署一个全功能的要求
60; 客户对业务拓展的目的,需要一个最低的基础设施 足迹;避免数据库,部署到IIS等on.nbsp; Backgroundnbsp;
建筑师的要求如下: 富客户端使用WPF 客户端连接到服务器使用WCF服务 NHibernate是用于持久性的目的 客户端应用程序可以运行对内存中的资料库(探索客户)
; 探索客户端的部署必须保持简单
60; 应用程序必须容易测试,测试可以对运行在内存或NHibernate 库
其他假设: 我们有完全控制在客户端和服务器组件 我们从头开始创建数据库,我们不使用一些旧的数据库
60; 我们正在部署的服务器组件使用IIS7和WS,我们将使用TCP / IP 我们有完整的设计控制在数据库中的表的PK中,我们将采用独特的
; 在这个项目为我们所有的实体长领域
eDirectory的解决方案
我们将开始使用一个非常简单的业务场景,在我们的系列的,重点
0; 该系列的架构不是业务领域。我们可能会扩大我们的域名 在未来,如果我们发现,我们要探索一些更复杂的建筑师concepts.nbsp的;
; Thenbsp;业务domainnbsp;是基于一个简单的接触,它是目前 这么简单,只需要一个单一的实体:客户。解决方案的名称是
160; eDirectory.nbsp;
源代码可以在CodePlex发现:
0; 最新版本,可以发现在主干分支,每章是位于 其自己的标记分支。你可能想使用在Codeplex上的浏览功能导航
60; 在branches.nbsp之间;
;建筑师Overviewnbsp;
eDirectory的应用程序定义了三个差异化的应用程序组件:&
#160; 数据库,服务器和client.nbsp;
; {S1}
&
#160; 在客户端和服务器应用程序的结构成层,在最 案件层层堆叠旁边对方,连续层 脱钩机制,使不同的实现可以使用。有些服务 可跨多个层。
正如我们前面提到的,我们的客户端和服务器的完全控制。因此,我们将
60; 后期服务发现继电器,而不是服务合约 在应用程序的两侧。这也是真正的DTO和一些常见的 业务验证。因此,一个共同的的装配是指包含组件 &
#160; 由服务器和客户端applications.nbsp; NBSP的共享; {S2}
160; 在服务器端,我们发现的核心组件,业务领域的声明 业务实体和它们的行为(行动的方法)。然后服务声明 公开我们的域的动作方法。服务fornbsp; persistencenbsp;
序列化的制约,只能暴露客户端和服务器之间的DTO。因此, 实体转化为DTO的,需要一个全面的解决 方式。 为了分离我们的业务domainnbsp; fromnbsp数据库,资源库
160; 组件是负责我们的实体的持久性。我们将定义一个
60; 这两层之间的通用接口。两个具体的实现 库可供选择:在内存和NHibernate.nbsp; 事务管理是我们的quot; workquot单位;实施。它负责
; 我们的商业交易和处理业务消息(警告和 例外)。 &
#160; {S3} 最后,但并非最不重要,我们有客户端组件。客户端是一个WPF应用程序 使用MVVM模式设计的。这种模式提供了一个整洁的观点的XAML组件 没有或非常少的代码背后,XAML中的绑定功能结合
0; 如何在客户端呈现所提供的DTO的ViewModel类利用 服务层。
; 客户端分为两个主要部分分离的服务层。该适配器 负责管理业务消息在执行过程中检索 服务。 WCF代理层是负责管理WCF服务, &
#160; 设计是整齐的,是一种很好的方式,从WCF服务客户端分离。 {S4}的
在CodeProject上可用的文章
160;
;
160;
; &
#160; 日期
60;
; &
#160; 文章
; &
#160;
0;
2010年6月28日
60;
; &
#160; WCF通过例如
60; - 第一章 - 基线
;
160;
0;
2010年05月
; &
#160;
60;
;
160;
0;
2010年7月10日
160;
0;
160;
; &
#160;
60; 2010年7月16日
; &
#160;
60;
;
160;
0;
2010年7月23日
160;
0;
160;
; &
#160;
60; 2010年8月31日 &
#160;
60;
160;
0; 2010年04月
;
0; &
#160;
60;
; 2010年9月15日
60;
; &
#160; {A9}
160;
0; &
#160;
60; 2010年9月19日 &
#160;
60;
; WCF示例 - 第九章 - 通知物业
160; 更改
160; &
#160;
60; 2010年- 10 - 16 &
#160;
60;
; {A10}
0;
60;
; 2010年- 11 - 04
160;
0;
{A11}
; &
#160;
0;
2010年11月24
160;
0; {A12}
60;
;
2010年12月19日
160;
0;
WCF的范例 - 第十三章 - 业务领域
0; 扩展
160;
0;
160; 2011年一月07
160;
0;
WCF的范例 - 第十四章 - 验证放大器;
160; 异常管理 &
#160;
60;
60; 在Codeplex上的可用章(源代码)
160;
0;
160; 日期
60;
; &
#160; 章 &
#160;
60;
; &
#160;
60; 2010年6月14日
; &
#160;
60; 第一章 - 基线
60;
; &
#160;
60;
; 2010年6月14日 &
#160;
60;
; 第二章 - 响应
;
160;
0;
2010年6月14日
160;
0;
第三章 - 响应
; &
#160;
0;
2010年6月14日
60;
; &
#160; 第四章 - 事务管理
60;
; &
#160;
60;
; 2010年6月14日 &
#160;
60;
; 第五章 - 服务定位器
160;
0;
2010年6月14日
160;
0;
第六章 - 基线MVVM
60;
;
160;
0; 2010年6月14日 &
#160;
60;
; 第七章 - 合同定位
60;
; &
#160;
60;
; 2010年7月29日 &
#160;
60;
; 第八章 - RelayCommand
160;
0;
160;
0; 2010年7月29日
160;
0; 第九章 - 通知属性更改模式
; &
#160;
60;
; &
#160; 2010年7月29日
60;
; &
#160; 第十章 - 依赖注入
60;
; &
#160;
60;
; 2010年9月12日
160;
0;
第十一章 - NHibernate的实施
; &
#160;
0;
2010年- 10 - 07
0;
160; 第十二章 - WCF实现
60;
; &
#160;
60;
; 2010年11月14
0;
160; 第十三章 - 业务领域扩展
60;
160;
0; 12 - 12 - 2010
160;
0;
Azure的解决方案 - 在内存模式WebRole &
#160;
60;
; &
#160;
60; 2011年一月07
60;
; &
#160; 第十四章 - 验证放大器;异常管理
60;
;
160;
0; 07 - 10 - 2011
60;
; &
#160; 客户端重新因素:ServiceAdapter放大器; CommandDispatcher格局
60;
;
160;
以后的章节
60;
; &
#160;
60; 章
60;
; &
#160; 国家 &
#160;
60;
; &
#160;
60; Azure的部署 - 在内存WebRole
60;
; &
#160; 源代码是可用
;
160;
0;
Azure的部署 - NHibernate的WebRole
160;
0; 有待
160;
0;
160;
0; 现有章节修订为客户重新因素的结果 &
#160;
60;
; 有待
0; &
#160;
0;
历史
&
#160; 2010年6月14日 - 文章创建。
160;
2010年6月28日 - 第一章我是做系列出版。
05 2010年7月 - 第二章被添加到序列
60; 2010年7月10日 - 第三章被添加到序列
2010年7月16日 - 第四章被添加到序列
2010年7月23日 - 第五章被添加到序列
2010年8月31日 - 第六章被添加到序列
2010年9月04 - 第七章被添加到序列
2010年9月15日 - 第八章被添加到序列
2010年9月19日 - 第九章被添加到序列
2010年10月07日 - 第十二章的源代码可以在CodePlex
60; 2010年10月16日 - 第十章被添加到序列
2010年11月04日 - 第十一章被添加到序列
2010年11月24日 - 第十二章被添加到序列
2010年12月12日 - 在内存WebRole部署到微软Azure的
2010年12月19日 - 第十三章被添加到序列
; 2011年01月07日 - 第十四章被添加到序列
2011年2月09 - 第十四章第2条中被添加到序列
2011年10月07日 - 客户端重新因素是在Codeplex