转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
WinVista新技术 WCF开发指南之客户端开发         ★★★★

WinVista新技术 WCF开发指南之客户端开发

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1425 更新时间:2009/4/23 19:02:04

作者:朱先忠编译

  一. 客户端编程

  为了调用服务上的操作,客户端首先需要把服务合同导入到客户端的本地描述中。这意味着,该服务需要客户端暴露一个标准方法以检索它的元数据-这是通过让服务暴露一个元数据交换(MEX)端点来实现的。只要服务在宿主上注册至少一个TCP、HTTP或IPC基地址,那么,这个基于WCF的服务就能够自动地暴露一个MEX端点。

  如果客户端使用WCF,那么调用操作的普通方法是使用一个代理。这个代理是一个CLR类,它暴露单个描述服务合同的CLR接口。注意,如果该服务支持若干合同,那么客户端需要对于每一种合同类型都创建一个相应代理。代理负责提供与服务的合同相同的操作,而且还提供其它方法来管理代理的生命周期和到服务的连接。该代理完整地封装该服务的每一个方面:服务的位置,服务的实现技术及其运行时刻平台和通讯传输。

  你可以使用Visual Studio 2005来导入服务元数据并且生成一个代理。如果服务是自宿主的,那么首先要启动该服务,然后从客户端工程的上下文菜单中选择"Add Service Reference…"。如果服务宿主在IIS或WAS上,那么就不需要预启动该服务了。

  有趣的是,如果服务是自宿主在与客户端工程同一个方案中的另一个工程中,那么你可以在Visual Studio 2005中启动宿主并且仍然添加参考,因为不同于大多数工程设置,这个选项是无法禁止的(见图6)。这会导致调出"Add Service Reference"对话框,你需要在其中提供服务的基地址(或一个基地址和一个MEX URI)以及包含代理的命名空间。


图6.你可以使用Visual Studio 2005生成一个代理。
  Visual Studio 2005使用SvcUtil.exe命令行工具,并且你可以自己使用它。主要理由是,你可以使用SvcUtil开关所提供的众多的选项。为了直接使用SvcUtil,你可以提供给它MEX地址并且,作为选择,还可以提供一个代理文件名。默认的代理文件名是实现该服务的服务端类的名字。例如,当把服务MyService宿主在IIS中时,简单地运行下列命令行:

   SvcUtil http://localhost/MyService/MyService.svc /out:Proxy.cs

  借助于自宿主,你可以不受限于仅使用HTTP基地址。假定自宿主服务注册这些基地址:

http://localhost:8002
net.tcp://localhost:8003
net.pipe://localhost/MyPipe
  然后,启动宿主,则你可以使用任何下列命令之一来生成该代理:

SvcUtil http://localhost:8002/MEX /out:Proxy.cs
SvcUtil http://localhost:8002/ /out:Proxy.cs
SvcUtil net.tcp://localhost:8003/MEX /out:Proxy.cs
SvcUtil net.pipe://localhost/MyPipe /MEX/out:Proxy.cs
  该代理类没有对服务实现类的参考,而只参考服务暴露的合同。这个代理可以与一个提供地址和绑定的客户端配置文件一起使用,也可以在没有配置文件的情况下使用。注意,每一个代理实例都准确地指向一个端点,与之交互的端点在构造时刻提供给代理。

  二. 管理客户端配置

  客户端需要知道服务所在地并使用与它的服务相同的绑定;当然,也要以代理的形式导入服务合同。实质上,这与在服务的端点处捕获的信息完全一致。为了反映这一信息,客户端配置文件包含关于目标端点的信息并且甚至使用与宿主相同的模式。

  例如,列表6(见本文相应下载源码)显示了与一个服务(其宿主是根据列表2进行配置的)进行交互需要的客户端配置文件。注意,在这个客户端配置文件中的合同类型(和命名空间)是由SvcUtil生成的导入的类型(和命名空间,如果有的话),而不是服务类型和命名空间。该客户端配置文件可以列出与服务支持一样多的端点,并且该客户端可以使用任何其中之一来与该服务交互。列表7(见本文相应下载源码)展示了客户端配置文件-它匹配显示于列表3中的宿主配置文件。

  默认地,SvcUtil还自动生成一个客户端配置文件output.config。你可以使用/config开关来指定一个配置文件名:

SvcUtil http://localhost:8002/MyService/MEX/out:Proxy.cs /config:App.Config
  并且,你可以使用/noconfig开关来压缩生成的配置文件:

SvcUtil http://localhost:8002/MyService/MEX/out:Proxy.cs /noconfig
  为了支持进程内宿主,应用程序配置文件应该列出服务和客户端节,见列表8(见本文相应下载源码)。注意,NetNamedPipeBinding被用于进程内调用。

  WCF提供一个能够编辑宿主和客户端配置文件的配置文件编辑器SvcConfigEditor.exe(见图7)。在写本文时,SvcConfigEditor只是生成一些不可读的配置文件,因此,在纠正这一问题之前,你应该手工地编辑这个文件。


图7:SvcConfigEditor用于编辑宿主和客户端配置文件。


[网络安全]十大技术摆脱莫名黑客的网络攻击下篇  [网络安全]十大技术摆脱莫名黑客的网络攻击上篇
[网络安全]四种网络加密技术详解及应用介绍  [网络安全]菜鸟学习—认识无线网络安全技术规范
[网络安全]“自动运行蠕虫变种JPH ”病毒技术细节  [Web开发]ASP.NET技术中常见问题的详细解答及代码之一
[Web开发]Net2.0如何实现伪静态技术,或者地址重写?  [Web开发]ASP.NET 2.0的新技术URL映射
[Web开发]伪静态技术与页面多参数传送的处理办法  [Web开发]利用Ajax技术实现在线歌词搜索功能
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台