在这篇文章中,将分享经验,希望对于初学架构设计的架构师或者希望成为架构师的资深开发者有所帮助。将构建一个简单的Web客户端客户订单管理系统,并且将使用自己的分布式应用平台。这个应用将涵盖以下几个部分:
(分布式应用层与项目细节):了解分布式环境中的分层设计是什么,以及在实现实际应用时如何命名。
(数据库和库设计):了解数据库设计以及如何实现与Edmx容器交互的库。
(引擎和服务管理器设计):学习如何实现包含核心业务逻辑的引擎,以及如何实现WCF服务及其服务契约,并且如何使用测试客户端测试服务。
(客户端实现):学习如何实现实际的客户端,该客户端使用MVVM模式调用服务。
会尽快发布剩余的部分。
为了运行WCF服务、数据库设计和Silverlight应用程序,需要.NET Framework版本3.0或更高版本。Windows Vista默认安装了.NET Framework v3.0,因此如果使用的是Windows XP SP2,则需要安装它。要开发分布式企业应用程序,应该拥有Visual Studio 2008或更高版本的Visual Studio,SQL Server Management Studio Express 2005以及Windows SDK。本文使用的是VS2010和SQL Server Management Studio Express 2005。
当阅读这篇文章的标题时,可能会问这个问题。如果是架构师或希望成为架构师的资深开发者,请花些时间阅读这篇文章(抱歉占用了宝贵时间)。当完成这篇文章后,将会觉得可以很容易地设计任何复杂的应用程序。对此非常有信心。然而,不会深入讨论设计原则。如果愿意,可以从Microsoft网站上学习,该网站非常清晰地描述了一切。在看来,没有实际实施就一遍又一遍地理论上描述概念是没有意义的。因此,将直接描述实时中应该做什么、为什么以及如何做。设计复杂的应用程序并不容易。众所周知,在架构、设计和实现层面需要做出许多决策。这些决策将影响应用程序的安全性、可扩展性、可维护性和可用性。本文将帮助从头开始设计应用程序,明确分离数据层、业务层、服务层和表示层等层次。让开始行动吧。
让从访问这些层次开始,讨论这些层次应该提供什么以及不应该提供什么。图1显示了本文用于设计架构的简化逻辑组件层次。不会在这里包含很多组件。只需查看图1,立即理解本文的目的。
让以图1为基础,并添加另一个图来描述如何从头开始实现客户订单管理企业应用程序。在开始讨论之前,将考虑一些层次的组件作为平台。因为这个平台可以托管在任何地方,客户端可以通过网络消费他们需要的任何东西。这被称为分布式环境。在这里,将考虑业务层、服务层和数据访问层作为一个单一的平台。因此,这些多个客户端平台(移动、Web等)可以利用COMS(客户订单管理系统)。这是COMS的主要优势。查看图2,了解将如何实现COMS平台以及技术细节。
这通过edmx实体容器与实体框架交互,并向服务引擎提供数据。当谈到库实现时,会更多地讨论这个问题。
这包含核心业务逻辑实现,并且与服务库交互以获取实际的数据库,而不需要直接联系数据库。所有的业务验证应该在这里实现,以便于扩展性。当谈到引擎实现时,会更多地讨论这个问题。
这一层将所有COMS系统功能作为WCF服务公开,客户端可以从任何平台访问。管理器从不直接与数据库或库交互。因为业务层包含了需要在将响应发送给客户端之前调用的所有验证。当谈到服务管理器的实现时,会更多地讨论这个问题。
实际的用户界面,调用服务。这可以是任何富客户端、Web客户端、移动客户端或另一个服务调用。在本文中,将使用Silverlight来实现Web客户端。如果可能的话,将尝试发布一些移动UI实现,以测试COMS平台作为本文的一部分。
坦白说,不知道移动应用程序的实现,所以将学习并在一部分中解释如何在移动平台上使用COMS平台服务。但必须相信并等待几个星期。
本文的初始版本创建于2010年9月20日。