面向领域驱动的应用开发框架Apworks 2.5发布
今天我发布了新版本的Apworks,版本号为:2.5.4563.21309。有兴趣和有需要的朋友可以直接到Apworks官方站点下载最新的安装程序或源代码。
功能更新
Apworks 2.5.4563.21309包含了以下功能更新:
- 支持Visual Studio 2010的项目模板以及相关说明书(中英文两个版本),下文会对其进行介绍
- 将整个框架的ID类型由System.Long换成System.Guid
- 新增WcfPerRequestLifetimeManager
- 添加基于Entity Framework Code First的仓储实现
- 仓储中添加了“饥饿加载”功能,用于在懒加载(Lazy Loading)的环境下,指定某些需要直接加载的实体属性
- 仓储中添加了“分页”功能,能够支持逻辑相对简单的分页效果。如需实现复杂的分页功能,可以参考《Byteart Retail V2 - 基于Entity Framework Code First的领域驱动设计实践案例》一文中“面向特定需求的仓储接口”部分的内容
- 新增Apworks.Services.ApplicationServices命名空间,并在此命名空间下实现了DataTransferObject类型,用以支持数据传输对象的设计
- 所有第三方组件更新到最新稳定版本
- 修复NHibernateContext中Rollback方法由于try...catch引起的对象回收异常
- 修复NHibernateContext提交时由于异常并且没有关闭NHibernate Session而导致的Session不可用问题
- 对仓储相关类的XML文档进行修复
系统需求
安装程序需求
如需通过安装包安装Apworks,请确保机器符合以下需求:
- Windows XP Professional SP3或更高版本的Windows操作系统
- Microsoft .NET Framework 4.0完整版(注:不是Client Profile版本)
- Microsoft Visual Studio 2010 SP1 Ultimate/Professional(注:如果需要使用Visual Studio项目模板的话,请安装此项)
源代码使用需求
如需使用源代码,并正常运行所有的单元测试用例,请确保机器符合以下需求:
- Windows XP Professional SP3或更高版本的Windows操作系统
- Microsoft .NET Framework 4.0完整版(注:不是Client Profile版本)
- Microsoft Visual Studio 2010 SP1 Ultimate/Professional
- Microsoft SQL Server (2005/2008/Express/Standard/Enterprise)
- Oracle MySQL
- Configuration Section Designer Visual Studio Extensions
- WiX Toolset v3.6
- InstallShield Limited Edition
- Microsoft MSMQ
- Message Queuing服务正常运行
- Microsoft Distributed Transaction Coordinator服务正常运行
使用安装程序安装Apworks
从2.5版本开始,Apworks将使用InstallShield来制作安装程序,因此您将看到与以前版本Apworks不同的安装程序界面。
- 下载setup.exe安装程序。请【单击此处】直接下载Apworks v2.5.4563.21309的setup.exe安装程序
- 双击setup.exe安装程序,这将打开Apworks的安装程序:
- 单击Next按钮,选择“I accept the terms in the license agreement”选项后,单击Next按钮。Apworks使用Apache License Version 2.0
- 选择安装路径后,单击Next按钮
| - 直接单击Install按钮进行安装
- 安装完成以后,直接单击Finish按钮
- 在开始菜单中,即可找到与Apworks相关的快捷方式:
Visual Studio 项目模板的使用
概述
为了帮助开发人员能够更快地使用Apworks进行应用程序开发,从2.5版开始,Apworks将在其安装包内包含Visual Studio的应用程序项目模板。由于Apworks安装程序是用InstallShield LE(Limited Edition,限制版)创建的,由于许可证的约束,在创建Apworks安装程序时并不能完全使用InstallShield所提供的强大功能。为了在Apworks安装成功后,开发人员能够方便地使用Visual Studio应用程序项目模板,我们可能需要执行一些额外的操作。在本文档中,将对每个项目模板进行详细介绍。
安装
Apworks安装程序无法直接安装包含在Visual Studio扩展(VSE)中的项目模板,用户应该通过在开始菜单中访问Apworks目录以手动安装Visual Studio扩展,如下:
点击这个菜单项后,会出现VSIX Installer对话框,用户可以选择相应的Visual Studio版本进行安装。
现在开始安装Visual Studio扩展,通过点击对话框上的“安装”按钮,如果安装成功完成后,你会看到以下画面:
管理
安装完成后,您可以启用/禁用扩展,通过使用Visual Studio的扩展管理器对话框(在Visual Studio中选择“工具” - >“扩展管理器”菜单)。你还可以卸载扩展。
使用项目模板创建应用程序
在Microsoft Visual Studio中,单击“文件 - >新建 - >项目”菜单,这将打开“新建项目”对话框。在Installed Templates的Visual C#分类下,你可以找到一个名为“Apworks”的子类,所有与Apworks相关的项目模板都在这个子类下。注意,Apworks项目模板只支持Visual C#编程语言,所以你无法在其它语言的分类下找到Apworks子类。
选择你想使用的项目模板,像创建其他类型的应用一样,给您的解决方案取个名称,并单击“确定”按钮。 Visual Studio会为您创建的项目。
项目模板
在本节中,将对所有的项目模板进行介绍。
Layered Service Application (Entity Framework)
此项目模板将创建一个基于传统的分层架构的示例服务应用解决方案。所创建的示例应用程序基于一个非常简单的场景:用户能够维护他们的笔记条目。这个应用程序将使用微软的ADO.NET Entity Framework作为仓储的实现技术。
请注意,所创建的应用程序是一个WCF服务应用程序,项目模板不提供任何用于呈现应用程序界面的GUI逻辑。开发人员应根据项目的实际情况将GUI部分的代码引入解决方案中。这是因为与用户界面相关的技术发展迅速,开发平台以及框架变化多端,版本各异,让Apworks所创建的应用程序绑定到一个特定的界面技术显然不是一个很好的选择。
要创建Layered Service Application (Entity Framework),在“新建项目”对话框中,选择该模板,并提供项目名称,然后单击“确定”,并按照以下步骤:
- 在“新建项目”对话框中点击OK按钮后,出现Create Apworks Application对话框。在此对话框中有三个标签页:
- Database - 提供数据库中的信息,该数据库将被新的应用程序用作后端数据存储。请注意,目前此项目模板只支持SQL Server数据库。如果你想使用其他数据库(如Oracle,或者是NoSQL数据库),您可以更改Services项目的Web.config文件中的连接字符串。这是项目模板的限制,Apworks框架允许你根据实际项目需求使用任何一种数据库
- Services –这里提供与WCF服务相关的配置。目前,你只需要指定WCF服务的命名空间。默认情况下,它会使用http://www.XXXX.com作为命名空间,其中XXXX为您的解决方案的名称
- About – 关于项目模板
- Database - 提供数据库中的信息,该数据库将被新的应用程序用作后端数据存储。请注意,目前此项目模板只支持SQL Server数据库。如果你想使用其他数据库(如Oracle,或者是NoSQL数据库),您可以更改Services项目的Web.config文件中的连接字符串。这是项目模板的限制,Apworks框架允许你根据实际项目需求使用任何一种数据库
- 在“数据库”选项卡,选择你想使用的SQL Server数据库:
确保“Enable MARS”选项被选中。
您还可以点击“测试”按钮来测试连接: - 在“服务”选项卡,输入合理的命名空间
- 点击OK按钮,Visual Studio会为您完成以下任务:1、在您选定的数据库中创建表和数据;2、编译整个解决方案 - 这是必需的,因为在转换Services项目下的文本模板时,需要引用其它几个项目的编译结果
- 在解决方案资源管理器中,将创建下列项目:
- ApworksStarter.Application –此C#类库项目包含应用程序接口和应用服务的实现
- ApworksStarter.Domain – 此C#类库项目包含领域模型、仓储接口、规约和O / R映射架构
- ApworksStarter.Domain.Repositories – 此C#类库项目包含仓储的实现
- ApworksStarter.Infrastructure – 此C#项目类库包含基础结构层的类型。目前,此项目模板创建的项目只提供了一个用于定义扩展方法的类型。您可以向此项目添加更多的基础结构类型
- ApworksStarter.Services – WCF服务应用程序,用以初始化应用程序,并向客户端公开服务接口
- 在解决方案资源管理器中点击ApworksStarter.Services项目,然后单击“转换所有模板”工具箱按钮,这将转换这一项目下的所有定义的模板:
转换的结果将显示在Visual Studio的输出窗口: - 按F5来启动调试器
- 启动WCF测试客户端
- 在WCF测试客户端,点击“文件 - >添加服务”菜单,将弹出添加服务的对话框
- 在添加服务对话框,输入endpoint如下:
- 在Request面板中,双击RetrieveUserByID,在“id”字段输入“c0ece0e5-469f-4AA1-aab4-9037aab2de43”,然后单击Invoke按钮:
- 服务被成功调用后,Response面板中显示如下:
- 现在你可以在解决方案中创建你的GUI项目,并调用此服务提供的功能
Layered Service Application (NHibernate)
此模板将创建与Layered Service Application (Entity Framework)相同的示例应用程序,不同之处在于,此模板所创建的应用程序将使用NHibernate框架来实现仓储架构。有关此项目模板的其他信息,请参阅上面的“Layered Service Application (Entity Framework)”部分。
总结
欢迎广大读者提出宝贵意见和建议!