码迷,mamicode.com
首页 > Web开发 > 详细

在net.tcp模式下,由SvcUtil.exe生成代理类文件和配置文件(转)

时间:2014-08-29 23:57:58      阅读:552      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   os   使用   io   ar   文件   

WCF服务调用可以采用两个方法,由工具SvcUtil.exe生成本地代理服务类和配置文件方式,或者采用ChannelFactory直接创建服务代理对象。本文主要采用前面一种方式来进行。

SvcUtil.exe位于:C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin目录下,可以将本工具添加到VS2010的工具菜单中,以方便使用:

VS菜单-》工具-》外部工具-》添加-》在“命令”文本框选取其路径如下:C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\SvcUtil.exe,在初始目录(这里是配置文件和代理类生成后放置的地方),我们选取“$(SolutionDir)”。

添加完成后,工具下拉菜单会出现SvcUtil,如何使用呢?

首先,对于Http类型的Uri来说,很容易搞定,直接在SvcUtil的输入框输入类似:http://localhost:22222/calService/metadata即可生成服务器端在客户端的代理类和配置文件,然后将这两个文件拷到项目中并将output.config改名为app.config就可以了。

如果遇到net.tcp(比如:net.tcp://localhost:22222/chatservice)该怎么进行呢?

其实很简单,我们只需要在服务入口处添加Service的EndPoint即可。

bubuko.com,布布扣
 Uri uri = new Uri(ConfigurationManager.AppSettings["addr"]);
            using(ServiceHost host = new ServiceHost(typeof(NikeSoftChat.ChatService),uri))
            {
                ServiceMetadataBehavior smb = host.Description.Behaviors.Find<ServiceMetadataBehavior>();
                if (smb == null)
                {
                    host.Description.Behaviors.Add(new ServiceMetadataBehavior());
                }

                host.AddServiceEndpoint(typeof(IMetadataExchange), MetadataExchangeBindings.CreateMexTcpBinding(), "mex");
                host.Open();

                Console.WriteLine("Chat service listen on endpoint {0}", uri.ToString());
                Console.WriteLine("Press ENTER to stop chat service...");
                Console.ReadLine();
                host.Abort();
                host.Close();
            }
bubuko.com,布布扣

注意,黄色标记很重要,它能够暴露出元数据出来,如果没有黄色标记部分,利用SvcUtil生成net.tcp的代理类和配置文件将是不可能的。

然后,将net.tcp://localhost:22222/chatservice输入SvcUtil.exe的输入框,然后点击生成,显示信息如下:

bubuko.com,布布扣
Microsoft (R) Service Model Metadata Tool
[Microsoft (R) Windows (R) Communication Foundation,版本 3.0.4506.2152]
版权所有(c) Microsoft Corporation。保留所有权利。

正在尝试使用 WS-Metadata Exchange 从“net.tcp://localhost:22222/chatservice”下载元数据。此 URL 不支持 DISCO。
正在生成文件...
E:\WCF\WCF_ChatRoom\ChatService.cs
E:\WCF\WCF_ChatRoom\output.config
请按任意键继续. . .
bubuko.com,布布扣

在net.tcp模式下,由SvcUtil.exe生成代理类文件和配置文件(转)

标签:des   style   blog   http   os   使用   io   ar   文件   

原文地址:http://www.cnblogs.com/zuking/p/3945883.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!