您现在的位置: IT专家网 > WinSystem子站 > 评论分析
承载和使用 WCF 服务
本文讨论 Windows Communication Foundation (WCF) 承载方案和 WCF 服务的使用。传统的 ASMX Web 服务通常仅由 Microsoft Internet 信息服务 (IIS) 承载。
现在,即可开始在服务层中安排第一个服务调用。示例解决方案文件按以下方式进行了修改,以帮助您查看代码:
•解决方案上的“设置启动项目”已选中多个项目。
•ExchangeServiceIISHost Web 项目的“使用动态端口”已设置为 False,并且“端口号”使用硬编码设置。
需要将对象的简短说明添加到项目中。在 SvcUtil.exe(“添加服务引用”)调用期间,在项目中自动添加了下面的项和引用。其中一些只是为了帮助 Visual Studio 集成;其他则是通过代理直接使用服务所必需的。
•服务引用:在此文件夹中,我们添加了两项。第一,“映射”文件为通过 Visual Studio 加载项生成和重新生成代理提供支持。第二,ExchangeService.cs 代表具体的代理类实现,它利用命名空间 System.ServiceModel 提供简单的集成类。
•配置:第二项是 App.config 文件。App.config 文件(在 Visual Studio 构建过程中将自动重命名为“<程序集名称>.config”)提供运行时 WCF 配置参数。如果看一看此文件的内部,将发现大量设置,其中很多是默认的或多余的。常见做法是,在生成该文件后使用 WCF SvcConfigEditor.exe 编辑器实用程序管理该文件。此实用程序位于 Windows SDK Bin 目录下。还可以在“Visual Studio 2005 工具”菜单中找到它。图 5-20 显示了该工具的实现。

图 5-20. SvcConfigEditor.exe
从图 5-20 中的“SvcConfigEditor.exe”屏幕上可以看到,通过配置可以管理数量巨大的详细属性。这是 WCF 的最强大的优势之一:能够对具体实现的很多方面进行控制,而不会影响核心服务实现。服务实现不需要更改即可从基于 HTTP 的协议迁移到另一个面向消息的协议这一概念就是一个示例。若要获得有关该工具的功能的详细信息,请参考本书的第 3 章、第 6 章或 MSDN 帮助。
命令行实现
一种替代方法是直接利用 SvcUtil.exe 实用程序,而不是 Visual Studio 加载项。在从 Visual Studio 中直接执行时,Visual Studio 加载项将再次带参数调用 SvcUtil.exe 以生成代理。通过查看“输出”窗口,并在下拉列表中将“显示输出”设置为“服务引用”,可以看到命令行和该命令的结果。
若要手动生成,可通过选择“开始” | “所有程序” | “Microsoft Windows SDK” | “CMD”,以选择 CMD 窗口。此命令提示符很有用,因为它的路径被设置为 SDK 工具和实用工具所在的二进制目录。
您将使用 SvcUtil.exe 命令行工具生成可在 SimpleClientWithProxy 项目中使用的两个输出。但是,本章附带的示例代码使用了上一节介绍的“添加服务引用”方法。此处介绍的步骤解释了如何生成与“添加服务引用”相同的输出。它生成的输出文件是客户端代理源代码文件和应用程序配置文件。然后,这些文件将合并到客户端项目中。SvcUtil.exe 可以生成这二者。在此示例中,以下命令(它只有一行,尽管此处显示多行)将产生代理类和配置文件:
列表 5-12. 用于产生代理类和配置文件的命令
| svcutil /config:app.config /out:"ExchangeService.cs" /language:csharp /n:*, SimpleClientWithProxy.ExchangeService "http://localhost/ExchangeService/? ExchangeService.svc" |
命令有很好的自解释功能。/n 开关表明生成的代理类应当属于哪个命名空间。最后一个参数是可以在其上找到架构信息的服务端点的 URL。注意,?wsdl 可以替换为 ?mex,因为 SvcUtil.exe 同时支持两种发现方法。通过从命令提示符执行 svcutil.exe /?,可以获得进一步帮助。
下一步是获得输出文件 ExchangeService.cs 和 App.config,并将它们合并到项目中。通过从 Visual Studio 2005 中的“项目”菜单选择“添加现有项”,可以将第一个文件 ExchangeService.cs 直接添加到项目中。
第二个文件必须作为应用程序配置 (App.config) 文件添加到项目中。如果项目还没有 App.config 文件,则可以从“项目”菜单中再次选择“添加现有项”以添加该文件。如果已有现成的 App.config,则必须合并 system.serviceModel 部分,以确保具备所有适当的子元素。
结论
在了解了有关承载的可选方案的所有内容后,您将能够构建 WCF 应用程序,并在任何需要的地方承载它们。此外,您还能够解释在最新可用环境(Windows Vista 或 Windows Server 2007 上的 IIS 7.0 与 WAS)中进行承载的好处。
- 本文关键词:

