CTOCIO IT专家网

天极传媒 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
IT专家网搜索

您现在的位置: IT专家网 > WinSystem子站 > 评论分析

承载和使用 WCF 服务

作者: Chris Peiris、Dennis Mulder,  出处:微软, 责任编辑: 韩博颖, 
2008-05-21 09:04
  本文讨论 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 显示了该工具的实现。

  SvcConfigEditor.exe

  图 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"
  警告 要让此操作有效,需要一个正在运行的 Windows ServiceHost 版本,或者必须更改 URL 以指向 IIS 中承载的任何服务(使 URL 指向本章讨论的任何 .svc 文件)。此外,服务需要 metadataexchange 端点,第 3 章对此进行了介绍。本章附带的代码配置了 metadataexchange 端点,但在本章中它不在内嵌代码内!

  命令有很好的自解释功能。/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)中进行承载的好处。

?26?? 9 ... 21 22 23 24 25 26

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。
  • 周排行榜
  • 月排行榜

邮件订阅

该文章的读者还阅读了

天极服务 | 关于我们 | 网站律师 | 加入我们 | 联系我们 | 广告业务 | 友情链接 | 我要挑错
All Rights Reserved, Copyright 2004-2008, Ctocio.com.cn
渝ICP证B2-20030003号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i