乍识WCF6

by admin on 2018年9月24日

联系方式

请发送简历及
gaohangwang@gmail.com,我帮助您内推,团队现十分缺人。

 

俺们会提供什么

  • 呢世界做出微小而美好的改变之机会
  • 16薪水,年度期权奖励
  • 暨同等众多来自 Google, Microsoft, Yahoo, Line
    等著名海外店之海归大牛们并坐班之时
  • 公积金(按上限缴纳),商业保险,无息住房贷款,餐补,免费班车 etc.

 哲学原理 1

我们于召开呀

简易地说,我们召开的凡蚂蚁金服的十分数额解析平台。其中包面向 BI
的数据报表、数据解析、决策支持的成品,面向数据仓库的数并、ETL、任务调度、质量保障的活。不仅当蚂蚁金服内部有多重的用户,而且趁机蚂蚁金服的金融云产品提供给更多集团外的用户,包括过多有名的银行、保险、证券公司等。

  1. 重新好地以初数据交换工具

咱要哪的您

  • 具有扎实的 Java 语言基础,熟悉主流的 Java 框架,了解 JVM
    的中坚落实原理。
  • 负有系统架构能力,熟悉分布式系统、分布式缓存、高并发等主流技术。
  • 本着怪数目生态系统熟悉。
  • 持有良好的编码习惯,追求写高质量之代码。
  • 生龙活虎于 github , stackoverflow 等社区,或富有技能博客者优先。

 

所以整个经过是如此:客户端向服务端请求元数据交换–>服务端运行时以第一数据编写成WSDL文件提供–>客户端取文件–>客户端翻译文件–>客户端根据翻译结果十分本地类代码和布置–>客户端取劳动之地方编程模型。这便是初次数据交换的进程。

源代码如下(HelloWCF.cs):

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

 

 

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

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

 

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

俺们导航及一个目录下准备得第一数据文件。

WCF的公然元数据的一手主要发生些许种植:

哲学原理 2

 

 哲学原理 3

这家伙得以当Windows
SDK中找到,具体位置为 C:\Program Files\Microsoft
SDKs\Windows\v6.0\Bin,如果您闹VS2010,可以启动VS2010之命令行工具,这样就算得当其余目录下下是序。

  1. 获得WSDL
  1. 拓展一点点

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

部署文件(web.config)如下:

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

如此这般它就是非会见生成WSDL而一直扭转客户端文件了。

骨子里以服务引用和用svcutil.exe生成的客户端模型是一样的,不过服务引用保留了WSDL文件(以及部分系的七七八八的文本),没有svcutil.exe来得那舒心,但是它和VS2010集成,使用起来颇简单,而且当服务发生变化时,只需要右击服务引用选择创新服务就是可再生载WSDL了

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

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

    <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>  

可观看变化了3只文本,包括个别独架构文件及一个WSDL文件,这些虽是劳动端元数据的叙述了,所有的客户端请求到之实在都是其一文件。WSDL的正统比较多,关于它的始末,我们随后再进行来拘禁,不过大概的打开看一下不怕会看有些与劳动协定、绑定、操作这些东西有关的地方。

2.
元数据交换的过程是安的

 

见状网提示的那么行命令了么?系统在告知我们怎么下svcutil.exe来博第一数据。我们现尝试一下,首先打开VS2010命令行:

事先我们了解了用svcuitl.exe来获取WSDL并翻译成客户端代码的过程。实际上就片步可共二吧同样。直接实施下的指令可以直接沾客户端文件:

好望,生成了一个cs文件以及一个配置文件,这些就是冲WSDL文件翻译成的客户端代码文件了。打开来探望,一定不生疏,就是采取ClientBase<>来大成一个客户端代理类并拿终结点的信息配置在了.config文件里。把立即半独文本包含在客户端的类型遭到连把output.config改成为app.config就得了。

 

然仍这样的方法变的公文或者无顶适合我们的求,我们得长有的参数来指定我们输出的文本称:

每当WCF服务端的运转时,有同等组类库随时待命把劳务的初次数据输出为WSDL描述提供被请求者,只要出客户端按照服务端约定的不二法门来要求元数据,服务端立即将服务运行时状态写照成WSDL文件提供。客户端取的实在就是WSDL文件(还有局部框架描述文件XSD),客户端将到文件后再行下好的法门来解读WSDL,把他翻成客户端可用的源代码或部署文件,这时客户端就得到了劳务的编程模型,通过有些代理类,客户端还是可像调用本地对象同使用WCF服务。

哲学原理 4

哲学原理 5

二者缺一不可。

 

哲学原理 6

   
我们明白,元数据包括了如同劳动端进行通信的有所消息,包括服务协定接口、服务端终结点地址、绑定等消息,它指出了客户端应该到何处去追寻服务和哪调用服务的布满线索。但是服务端是怎公布该首数据的吧?
    答案是动WSDL文件,WSDL即Web Service Description
Language,Web服务描述语言,它是一个XML文件,在是文件中按一定的正儿八经来针对Web
Service进行描述,他是吻合W3C标准的,因为WCF是深受规划为供不同平台调用的服务框架,所以客户端可能是匪微软平台的,比如Java什么的。因此WCF必须使WSDL这种国际标准的描述道来讲述服务才能够吃多底阳台所走访。

 

1.
首位数据是哪些提供的

WSDL是一个XML文件,其实就是独文件文件,客户端必须以该仍好的阳台特色把他翻成本地代码文件来利用。svcutil当然会提供这职能。在wsdl文件所在目录下利用如下的授命就可以把WSDL文件翻译成本地代码文件:

 svcutil *.wsdl *.xsd

 

作服务端,公开元数据是用安排的,不同的安排会造成元数据明白之计各异。

经过前片首的习,我们询问了WCF通信的一对基本原理,我们知道,WCF服务端和客户端通过同步享元数据(包括服务协定、服务器终结点消息)在片单终结点上立通道从而进行通信。我们透过手写代码(或安排)的道啊服务端编写了最先数据信息,没有借助元数据交换就兑现了通信。然而在其实采用中,元数据往往是过多底,而且再也修元数据的办事啊是免值得的,因此一定会为此到伯数据交换的办法受客户端获取元数据,本篇我们即便来进一步了解一下头版数据和元数据交换。

于微软平台受到,有半点种方法来展开首数据交换,第一凡是利用服务引用,第二凡是采用初数据实用工具(svcutil.exe)来进行,我们事先念之家伙。

如此这般输出的文本我们就是好直接包含在客户端项目遭到采取了。

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

咱们少未循浏览器提供被我们的点子做,因为据老方式做就将收获WSDL和翻译WSDL为客户端代码合在一起了,我们先行取得WSDL元数据文件,看看它是呀样子的。我们本如下的命做:

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

倘想使这种元数据明白办法,必须安排服务之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

 

  1. 翻译WSDL文件

 

咱们要铭记,WCF服务端公开元数据要拥有简单只极:

咱在了一个参数/t:metadata
表示仅输出元数据,不扭转代码。命令的施行过程如下:

首批数据交换

  1. 行使劳务引用

哲学原理 7

顾名思义,就是基于当前目录下之备的WSDL文件及XSD文件来蛮成客户端代码文件。过程会是这么

第一种:通过HTTP GET方法。

using System;  
using System.ServiceModel;  

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

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

 

立刻就算是在前文中我们视底计,我们可以应用HTTP
Get的措施来收获WSDL文件就以劳动地址.svc后面和达到?wsdl的不二法门直接伸手到WSDL文件。我们可一直以浏览器被输入服务端地址.svc?wsdl,浏览器就直获得了WSDL文件并为我们来得出了。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图