每当是文件被仍一定之正统来针对Web于这文件中按一定的专业来针对Web

图片 1

在WCF服务端的运转时,有一样组类库随时待命把服务的头条数据输出为WSDL描述提供被请求者,只要发生客户端按照服务端约定的办法来要求元数据,服务端立即将服务运作时状态写照成WSDL文件提供。客户端取的其实即便是WSDL文件(还有有框架描述文件XSD),客户端将到文件后更以好之不二法门来解读WSDL,把他翻译成客户端可用之源代码或布文件,这时客户端就取了劳务的编程模型,通过有些代理类,客户端还是好像调用本地对象同以WCF服务。

我们若记住,WCF服务端公开元数据要具备简单个原则:

  1. 翻译WSDL文件

事实上采取服务引用和用svcutil.exe生成的客户端模型是一致的,不过服务引用保留了WSDL文件(以及部分有关的七七八八之文书),没有svcutil.exe来得那么舒服,但是它们跟VS2010合一,使用起来非常简短,而且当服务发生变化时,只需要右击服务引用选择创新服务就是可另行生载WSDL了

配置文件(web.config)如下:

svcutil.exe http://localhost/iisservice/hellowcfservice.svc?wsdl

咱俩临时无按照浏览器提供给咱们的章程做,因为本老方式做就是将收获WSDL和翻译WSDL为客户端代码合在一起了,我们先行拿走WSDL元数据文件,看看它是呀法的。我们仍如下的指令做:

 

看来网提示的那行命令了么?系统以报我们什么样使用svcutil.exe来获取首批数据。我们本尝试一下,首先打开VS2010命令行:

2.
元数据交换的经过是哪的

 

 

(1) 为服务添加ServiceMetadata行为。

这样它们便未见面生成WSDL而直接扭转客户端文件了。

 

svctuil.exe /out:ClientProxy.cs /config:app.config http://localhost/iisservice/hellowcfservice.svc?wsdl 

可看看,生成了一个cs文件和一个布置文件,这些就是是依据WSDL文件翻译成的客户端代码文件了。打开来探望,一定非生疏,就是用ClientBase<>来深成一个客户端代理类并将终结点的信配置于了.config文件里。把立即半独文本包含在客户端的色中连拿output.config改化app.config就好了。

用作服务端,公开元数据是急需配备的,不同的部署会促成元数据明白之道不同。

然它们便非见面生成WSDL而直接扭转客户端文件了。

 

如若想使用这种元数据明白办法,必须安排服务之ServiceMetadata行为,并点名httpGetEnabled

“true”,而老大数据明白终结点不必配置,系统会活动配置一个,配置文件之写法如下:

    <configuration>  
      <system.serviceModel>  
        <services>  
          <service name="LearnWCF.HelloWCFService" behaviorConfiguration="metadataExchange">  
            <endpoint address="" binding="wsHttpBinding" contract="LearnWCF.IHelloWCF"/>  
          </service>  
        </services>  
        <behaviors>  
          <serviceBehaviors>  
            <behavior name="metadataExchange">  
              <serviceMetadata httpGetEnabled="true"/>  
            </behavior>  
          </serviceBehaviors>  
        </behaviors>  
      </system.serviceModel>  
    </configuration>  

在这种安排下,访问元数据的艺术是访问下面的地址:

http://localhost/iisservice/hellowcfService.svc?wsdl 

老二栽:通过MEX元数据交换终结点。

每当这种方法下,我们第一要保管服务具有ServiceMetadata行为,但是httpGetEnabled可以不必为true。此外我们尚需呢劳动显式地增长一个终结点,这个终结点的地方、绑定和签订都是指定的我们无可知转

<endpoint address=”mex” binding=”mexHttpBinding” contract=”IMetadataExchange” /> 

布局文件之写法如下:

    <configuration>  
      <system.serviceModel>  
        <services>  
          <service name="LearnWCF.HelloWCFService" behaviorConfiguration="metadataExchange">  
            <endpoint address="" binding="wsHttpBinding" contract="LearnWCF.IHelloWCF"/>  
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>  
          </service>  
        </services>  
        <behaviors>  
          <serviceBehaviors>  
            <behavior name="metadataExchange">  
              <serviceMetadata />  
            </behavior>  
          </serviceBehaviors>  
        </behaviors>  
      </system.serviceModel>  
    </configuration>  

假定依这种安排,我们不能不遵循如下地址来拜访公开之首批数据:

http://localhost/iisservice/hellowcfservice.svc/mex

顾,由于尚未拉开HTTP
GET,我们不能够在浏览器中一直输入这个地方来收获WSDL了(会提示400左),我们务必通过svcutil.exe或添加服务引用的方法来访问。

使用svcutil.exe或劳务引用的时光可不关心元数据明白办法是HTTP
GET还是Mex,他们会自动检索到适当的计,只待拿劳务之svc文件地点输入就得了,但是咱该懂得,这点儿栽元数据明白之方法是起分别的。

  1. 总结

由此今天底上学,我们更为了解了WCF元数据的和元数据交换的法则。虽然咱于事实上工程被还见面同时该采取初数据交换工具来提携提高效率,但是及时背后有的有所环节为是咱们该控制的。

有关资源

MSDN关于Svcutil.exe用法的文档

http://msdn.microsoft.com/zh-cn/library/aa347733.aspx

 

 

using System;  
using System.ServiceModel;  

namespace LearnWCF  
{  
    [ServiceContract]  
    public interface IHelloWCF  
    {  
        [OperationContract]  
        string HelloWCF();  
    }  

    public class HelloWCFService : IHelloWCF  
    {  
        public string HelloWCF()  
        {  
            return "Hello WCF!";  
        }  
    }  
} 

 

图片 2

 

每当浏览器中输入服务地方会要下图所示:

在WCF服务端的运转时,有平等组类库随时待命把劳动之状元数据输出为WSDL描述提供给请求者,只要有客户端按照服务端约定的方来要求元数据,服务端立即将服务运行时状态写照成WSDL文件提供。客户端取的实际上即便是WSDL文件(还有一对框架描述文件XSD),客户端将到文件后还用自己之法子来解读WSDL,把他翻成客户端可用之源代码或布文件,这时客户端就拿走了劳动的编程模型,通过有代理类,客户端还是好像调用本地对象同采取WCF服务。

因此整个过程是这样:客户端向服务端请求元数据交换–>服务端运行时将最先数据编写成WSDL文件提供–>客户端取文件–>客户端翻译文件–>客户端根据翻译结果好本地类代码和安排–>客户端取劳动之本土编程模型。这即是初次数据交换的经过。

 

 

  1. 获得WSDL

 

图片 3

首数据交换

开–>所有程序–>Visual Studio
2010–>Visual Studio Tools–>Visual Studio命令行提示

两头缺一不可。

第一种:通过HTTP GET方法。

顾名思义,就是冲当前目录下的具备的WSDL文件与XSD文件来深成客户端代码文件。过程会是这样

WCF的当众元数据的一手要出半点栽:

开–>所有程序–>Visual Studio
2010–>Visual Studio Tools–>Visual Studio命令行提示

WSDL是一个XML文件,其实就是是个文本文件,客户端必须以那仍自己之阳台特色把他翻成本地代码文件来使用。svcutil当然会供者功能。在wsdl文件所在目录下利用如下的通令就好把WSDL文件翻译成本地代码文件:

 图片 4

参考:http://blog.csdn.net/songyefei/article/details/7397296

用作服务端,公开元数据是用安排的,不同之部署会促成元数据明白的法门各异。

 图片 5

WSDL是一个XML文件,其实就算是单文本文件,客户端必须将那仍好的阳台特色将他翻成本地代码文件来用。svcutil当然会供者效果。在wsdl文件所在目录下使用如下的一声令下就好把WSDL文件翻译成本地代码文件:

顾名思义,就是依据当前目录下的装有的WSDL文件与XSD文件来挺成客户端代码文件。过程会是这样

参考:http://blog.csdn.net/songyefei/article/details/7397296

 svcutil *.wsdl *.xsd

实际采取服务引用和用svcutil.exe生成的客户端模型是平等的,不过服务引用保留了WSDL文件(以及有息息相关的七七八八底文书),没有svcutil.exe来得那么舒服,但是它们跟VS2010拼,使用起来很简单,而且当服务发生变化时,只需要右击服务引用选择创新服务就是得重新生载WSDL了

咱俩投入了一个参数/t:metadata
表示只是输出元数据,不弯代码。命令的履进程如下:

svcutil.exe http://localhost/iisservice/hellowcfservice.svc?wsdl

如此这般输出的文件我们即便可以一直包含在客户端项目面临利用了。

  1. 应用劳务引用

咱俩导航及一个目下准备得首数据文件。

  1. 获得WSDL
  1. 运用劳务引用
  1. 还好地采用初数据交换工具
  1. 复好地行使初数据交换工具

1.
头数据是哪提供的

  1. 展开一点点

 

 

源代码如下(HelloWCF.cs):

 

可看看变化了3个文件,包括个别单架构文件与一个WSDL文件,这些就是是劳动端元数据的描述了,所有的客户端请求到之实际上都是是文件。WSDL的正式比较多,关于其的内容,我们之后再也开展来拘禁,不过大概的打开看一下就是可知顾有些与服务协定、绑定、操作这些东西有关的地方。

在浏览器被输入服务地方会如下图所示:

 

图片 6

WCF的明白元数据的手法主要发生有限种植:

(1) 为服务添加ServiceMetadata行为。

    <configuration>  
      <system.serviceModel>  
        <services>  
          <service name="LearnWCF.HelloWCFService" behaviorConfiguration="metadataExchange">  
            <endpoint address="" binding="wsHttpBinding" contract="LearnWCF.IHelloWCF"/>  
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>  
          </service>  
        </services>  
        <behaviors>  
          <serviceBehaviors>  
            <behavior name="metadataExchange">  
              <serviceMetadata httpGetEnabled="true"/>  
            </behavior>  
          </serviceBehaviors>  
        </behaviors>  
      </system.serviceModel>  
    </configuration>  

 

前面我们询问了动用svcuitl.exe来博取WSDL并翻译成客户端代码的经过。实际上就简单步可同步二为同样。直接执行下的通令可以一直获取客户端文件:

首批数据交换

图片 7

比方想采取这种元数据明白方法,必须配备服务之ServiceMetadata行为,并点名httpGetEnabled

“true”,而首先数据明白终结点不必配置,系统会活动配置一个,配置文件之写法如下:

    <configuration>  
      <system.serviceModel>  
        <services>  
          <service name="LearnWCF.HelloWCFService" behaviorConfiguration="metadataExchange">  
            <endpoint address="" binding="wsHttpBinding" contract="LearnWCF.IHelloWCF"/>  
          </service>  
        </services>  
        <behaviors>  
          <serviceBehaviors>  
            <behavior name="metadataExchange">  
              <serviceMetadata httpGetEnabled="true"/>  
            </behavior>  
          </serviceBehaviors>  
        </behaviors>  
      </system.serviceModel>  
    </configuration>  

于这种安排下,访问元数据的主意是看下面的地点:

http://localhost/iisservice/hellowcfService.svc?wsdl 

次栽:通过MEX元数据交换终结点。

每当这种方法下,我们第一要保证服务具有ServiceMetadata行为,但是httpGetEnabled可以不用为true。此外我们尚用吗劳动显式地加上一个终结点,这个终结点的地址、绑定和签订都是指定的我们不可知更改

<endpoint address=”mex” binding=”mexHttpBinding” contract=”IMetadataExchange” /> 

部署文件之写法如下:

    <configuration>  
      <system.serviceModel>  
        <services>  
          <service name="LearnWCF.HelloWCFService" behaviorConfiguration="metadataExchange">  
            <endpoint address="" binding="wsHttpBinding" contract="LearnWCF.IHelloWCF"/>  
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>  
          </service>  
        </services>  
        <behaviors>  
          <serviceBehaviors>  
            <behavior name="metadataExchange">  
              <serviceMetadata />  
            </behavior>  
          </serviceBehaviors>  
        </behaviors>  
      </system.serviceModel>  
    </configuration>  

假定依这种布局,我们不能不比照如下地址来拜访公开之首先数据:

http://localhost/iisservice/hellowcfservice.svc/mex

注意,由于尚未拉开HTTP
GET,我们无能够在浏览器被一直输入是地方来抱WSDL了(会提醒400荒谬),我们不能不通过svcutil.exe或丰富服务引用的章程来走访。

动svcutil.exe或劳务引用的上可以无关注元数据明白方法是HTTP
GET还是Mex,他们见面自行搜索到当的主意,只待拿劳动的svc文件地点输入就好了,但是咱应理解,这片栽元数据明白之不二法门是有分别之。

  1. 总结

由此今天底上学,我们进一步了解了WCF元数据的和元数据交换的规律。虽然咱以实际工程被还见面同时该下初数据交换工具来帮助提高效率,但是就背后有的富有环节也是我们该掌握的。

系资源

MSDN关于Svcutil.exe用法的文档

http://msdn.microsoft.com/zh-cn/library/aa347733.aspx

 

这个家伙得以以Windows
SDK中找到,具体位置为 C:\Program Files\Microsoft
SDKs\Windows\v6.0\Bin,如果您来VS2010,可以启动VS2010之命令行工具,这样虽可以以其他目录下使用这顺序。

看来网提示的那么行命令了么?系统在告诉我们怎么利用svcutil.exe来收获正数据。我们现在摸索一下,首先打开VS2010命令行:

通过前片首的念,我们了解了WCF通信的局部基本原理,我们清楚,WCF服务端和客户端通过合享元数据(包括劳动协定、服务器终结点消息)在少数只终结点上起通道从而进行通信。我们经过手写代码(或布)的方式吗服务端编写了首位数据信息,没有因元数据交换就实现了通信。然而在实际应用被,元数据往往是群之,而且重修元数据的做事吧是匪值得的,因此一定会用到长数据交换的点子受客户端获取元数据,本篇我们就算来进一步询问一下长数据和元数据交换。

 

咱设牢记,WCF服务端公开元数据要拥有简单独规范:

双面缺一不可。

 图片 8

 

svctuil.exe /out:ClientProxy.cs /config:app.config http://localhost/iisservice/hellowcfservice.svc?wsdl 

using System;  
using System.ServiceModel;  

namespace LearnWCF  
{  
    [ServiceContract]  
    public interface IHelloWCF  
    {  
        [OperationContract]  
        string HelloWCF();  
    }  

    public class HelloWCFService : IHelloWCF  
    {  
        public string HelloWCF()  
        {  
            return "Hello WCF!";  
        }  
    }  
} 

 

   
我们掌握,元数据包括了一旦同劳务端进行通信的持有信息,包括劳动协定接口、服务端终结点地址、绑定等信息,它指出了客户端应该到哪儿去探寻服务与怎样调用服务的凡事线索。但是服务端是哪公布该首数据的啊?
    答案是动WSDL文件,WSDL即Web Service Description
Language,Web服务描述语言,它是一个XML文件,在斯文件被本一定之科班来对Web
Service进行描述,他是入W3C标准的,因为WCF是叫规划也供不同平台调用的服务框架,所以客户端可能是勿微软平台的,比如Java什么的。因此WCF必须利用WSDL这种国际标准的叙说道来讲述服务才能够给众之平台所访问。

第一种:通过HTTP GET方法。

还有相应的框架描述文件(XSD)

svcutil.exe /t:metadata http://localhost/iisservice/hellowcfservice.svc?wsdl  

于微软平台受到,有些许种办法来进行首数据交换,第一凡是利用服务引用,第二是采用初数据实用工具(svcutil.exe)来拓展,我们先行读书是家伙。

图片 9

svcutil.exe /t:metadata http://localhost/iisservice/hellowcfservice.svc?wsdl  

然而本这样的不二法门转的公文或者未极端符合我们的渴求,我们得以长有些参数来指定我们输出的公文称:

安排文件(web.config)如下:

2.
元数据交换的进程是什么的

前面我们了解了下svcuitl.exe来取得WSDL并翻译成客户端代码的历程。实际上这点儿步可齐二乎同。直接实施下的吩咐可以一直拿走客户端文件:

 

(2) 打开元数据交换终结点。

 svcutil *.wsdl *.xsd

咱事先押一个例证,就是咱在前面几篇中建立的IIS服务HelloWCFService,它为我夜宿在IIS中。

   
我们领略,元数据包括了而同服务端进行通信的装有消息,包括服务协定接口、服务端终结点地址、绑定等信息,它指出了客户端应该到哪里去探寻服务及怎样调用服务的满线索。但是服务端是哪些公布其首批数据的吗?
    答案是动WSDL文件,WSDL即Web Service Description
Language,Web服务描述语言,它是一个XML文件,在这个文件被仍一定的正规化来对Web
Service进行描述,他是切合W3C标准的,因为WCF是被规划呢供不同平台调用的劳务框架,所以客户端可能是无微软平台的,比如Java什么的。因此WCF必须使WSDL这种国际标准的描述道来讲述服务才能够被多的平台所走访。

这家伙得以以Windows
SDK中找到,具体位置为 C:\Program Files\Microsoft
SDKs\Windows\v6.0\Bin,如果你来VS2010,可以启动VS2010之命令行工具,这样即便得于其它目录下用此次。

图片 10

而是仍这样的章程转变的文本或者无太相符我们的求,我们可增长一些参数来指定我们输出的文本称:

俺们先行看一个例,就是咱们当眼前几乎首中成立之IIS服务HelloWCFService,它被自己留宿在IIS中。

故此整个经过是如此:客户端向服务端请求元数据交换–>服务端运行时以第一数据编写成WSDL文件提供–>客户端取文件–>客户端翻译文件–>客户端根据翻译结果很本地类代码和配备–>客户端取劳动的本地编程模型。这就是是第一数据交换的过程。

 

 图片 11

 

  1. 翻译WSDL文件
  1. 进行一点点

经前片篇的攻,我们询问了WCF通信的片基本原理,我们了解,WCF服务端和客户端通过联合享元数据(包括劳动协定、服务器终结点信息)在少单终结点上建立通道从而进行通信。我们透过手写代码(或安排)的方呢服务端编写了初数据信息,没有因元数据交换就贯彻了通信。然而以事实上使用被,元数据往往是很多之,而且再也修元数据的办事啊是休值得的,因此一定会用到长数据交换的点子受客户端获取元数据,本篇我们即便来更了解一下首批数据和元数据交换。

再有相应的框架描述文件(XSD)

可看看变化了3只公文,包括个别独架构文件以及一个WSDL文件,这些虽是劳务端元数据的叙说了,所有的客户端请求到之莫过于都是是文件。WSDL的正规化比较多,关于她的情,我们后再也拓展来拘禁,不过大概的开拓看一下哪怕能望有些跟劳动协定、绑定、操作这些东西有关的地方。

我们投入了一个参数/t:metadata
表示无非输出元数据,不转变代码。命令的行进程如下:

 

于微软平台受到,有零星栽办法来展开首数据交换,第一凡是利用劳务引用,第二凡采用初数据实用工具(svcutil.exe)来开展,我们先学是家伙。

源代码如下(HelloWCF.cs):

这样输出的文书我们就算得直接包含在客户端项目蒙采用了。

咱少无随浏览器提供给咱们的法做,因为据好方式做就是管获得WSDL和翻译WSDL为客户端代码合在一起了,我们先拿走WSDL元数据文件,看看她是呀则的。我们仍如下的一声令下做:

 

1.
初次数据是何许提供的

(2) 打开元数据交换终结点。

及时虽是以前文中我们看的道,我们可以应用HTTP
Get的措施来收获WSDL文件就以劳动地址.svc后面和达到?wsdl的方式直接求到WSDL文件。我们可以一直当浏览器中输入服务端地址.svc?wsdl,浏览器就径直沾了WSDL文件并也咱展示出来了。

 

    <configuration>  
      <system.serviceModel>  
        <services>  
          <service name="LearnWCF.HelloWCFService" behaviorConfiguration="metadataExchange">  
            <endpoint address="" binding="wsHttpBinding" contract="LearnWCF.IHelloWCF"/>  
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>  
          </service>  
        </services>  
        <behaviors>  
          <serviceBehaviors>  
            <behavior name="metadataExchange">  
              <serviceMetadata httpGetEnabled="true"/>  
            </behavior>  
          </serviceBehaviors>  
        </behaviors>  
      </system.serviceModel>  
    </configuration>  

 

图片 12

咱导航及一个目下准备得首届数据文件。

好观看,生成了一个cs文件和一个布置文件,这些就是是依据WSDL文件翻译成的客户端代码文件了。打开来探望,一定非生疏,就是行使ClientBase<>来特别成一个客户端代理类并将终结点的信配置于了.config文件里。把这点儿独文件包含在客户端的档次中连拿output.config改化app.config就得了。

 

 

图片 13

图片 14

就就是是当前文中我们看来底点子,我们好运用HTTP
Get的主意来博取WSDL文件就于劳动地址.svc后面和达到?wsdl的方直接求到WSDL文件。我们可一直在浏览器被输入服务端地址.svc?wsdl,浏览器就直获得了WSDL文件并也咱展示出来了。

相关文章