Web 服务软件工厂:建模版本也称为“服务工厂”,它是一个资源集合,这些资源可帮助您以简单有效的方式在 Windows Communication Foundation (WCF) 和 ASMX 中建模和构建 Web 服务。与先前版本的服务工厂相比,最新版本使用的是模型,而先前版本使用的是基于 Guidance Automation Toolkit (GAT) 的向导。服务工厂现在允许您通过创建三种不同的模型来构建 Web 服务:数据约定模型、服务约定模型和宿主模型。我们将首先讨论这三种模型,然后再为您介绍如何自定义服务工厂。您可以在“在线服务工厂资源”侧栏中列出的网站内找到更多信息。
使用 GAT 向导生成代码的主要缺点是在对生成的代码进行必要更改时会比较复杂。假设您想要重命名生成服务中的某个操作,您必须保存自定义代码,然后重做要在其中使用新名称或者在生成的代码中重命名操作的整个向导。重做向导是一项耗时的工作;因为向导没有记忆,您必须重新指定全部内容。更改由向导生成的代码也不是理想的做法,因为您要返回去重新处理许多细节问题,而向导的目的恰恰是要避免这一点。模型为此问题提供了一种不错的解决方案,与向导相比,它可以记住您输入的内容。
构建集成到 Visual Studio 中的建模语言在过去是一件很困难的事情,但是附带有 Visual Studio SDK 的 Domain-Specific Language (DSL) Tools 使此项工作变得非常容易。现在服务工厂附带了使用 DSL Tools 构建的三种模型。请注意,没有针对数据访问和服务安全的模型。先前版本服务工厂中的“数据访问指导包”现在成为一个单独的工厂(称为存储库工厂),而“安全性指导包”也成为服务工厂社区站点单独的一个可用数据包。
新版本的服务工厂还为如何构建自己的软件工厂提供了良好示例,因为它使用并组合了所有可用工具来构建一个:
用来生成项目并提供上下文菜单的向导 GAT
用于三种不同模型的 DSL Tools
支持交叉模型引用的 Designer Integration Service (DIS)
服务工厂源代码还包含一些有趣的库,这些库拥有目前工厂工具没有的一些功能。如果要构建自己的工厂,则重用以下各项内容可能会让您受益匪浅:
代码生成库,允许您在单独的文件中生成代码
交叉模型验证库,可协助您验证交叉模型引用
Visual Studio 模拟对象库,可帮助您方便地对工厂进行单元测试
正如我们曾提到的,服务工厂由三种模型构成。在数据约定模型中,定义了 Web 服务的数据约定。在服务约定模型中,定义了服务、服务约定、操作以及消息。最后,宿主模型被用来建模服务端点和客户端代理。
为了介绍工厂,我们将创建一个从 Peedy 的比萨饼店订购比萨饼的 Web 服务。此 Web 服务可以接受比萨饼订单,并允许您选购大小和浇头不同的比萨饼。提交订单后,会将订单价格返回给客户作为确认。