WCF配置心得_其它相关

根据蒋金楠老师的博文所说的, WCF的终结点有三个要素组成,分别是地址(Address)、绑定(Binding)和契约(Contract),简记可写成Endpoint = ABC。
 地址:地址决定了服务的位置,解决了服务寻址的问题。
 绑定:绑定实现了通信的所有细节,包括网络传输、消息编码,以及其他为实现某种功能对消息进行的相应处理。绑定的类型包括BasicHttpBinding、WsHttpBinding、NetTcpBinding等。
 契约:契约是对服务操作的抽象,也是对消息交换模式以及消息结构的定义。
 以上这些内容摘抄自蒋老师的博文。理解的这些对配置WCF很有帮助。
那下面就一步步来配置一个WCF。

首先是服务端,
一个WCF的核心是终结点,那么先把终结点写列出来,

复制代码 代码如下:

<services>
      <service name="BLL.Logic" behaviorConfiguration="te">
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:9091/logicService"/>
          </baseAddresses>
        </host>
        <endpoint address="" binding="ws2007HttpBinding" contract="BLL.ILogic"  bindingConfiguration="transportWS2007HttpBinding" />
      </service>
    </services>

 从<endpoint>几个属性address(地址) binding(绑定),Contract(契约),这几个属性正是上面所说的"ABC"  注意一下 binding里填的是BasicHttpBinding、WsHttpBinding、NetTcpBinding这些值,而确切使用哪一个binding呢,就需要在bindingConfiguration中设置,值是使用的<binding>的name值。contract项目中contract的契约接口的完全限定名,这里关于binding的配置接下来会介绍。address没填值,这里在<host>中已经给定了一个地址了。
      介绍完<endpoint>,再看看<endpoint>外面的。<endpoint>包含在<services>的<service>下,这里的<serivces>是一个集合,里面可以包含多个服务,每个服务都会有特定的命名(name),而name则是项目里头实现契约(Contract)的服务(Service)的类的完全限定名。这里对servicebehavior进行了一些设置,具体的内容在名为te的<servicebehavior>中。
既然上面有配置有涉及到binding和behavior,下面则分别对两者进行配置。

复制代码 代码如下:

<bindings>
      <ws2007HttpBinding>
        <binding name="transportWS2007HttpBinding" maxReceivedMessageSize="2147483647"  maxBufferPoolSize="2147483647">
          <readerQuotas maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxDepth="2147483647" maxNameTableCharCount="2147483647" maxStringContentLength="2147483647"/>
          <security mode="Message">
            <transport clientCredentialType="None"/>
          </security>
        </binding>
      </ws2007HttpBinding>

        <basicHttpBinding>
          <binding name="newBinding" maxBufferPoolSize="21474835647" maxReceivedMessageSize="2147483647" messageEncoding="Text">
            <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
          </binding>
        </basicHttpBinding>
</bindings>

 bindings这部分和services一样,也是一个集合,里面包含着各种类型的binding,例如在<ws2007HttpBinding>里面的<binding>才是确切的某一个binding, <endpoint>使用时,bindingConfiguration的名称要写对外,binding的类型也不能错。<binding>里面的子节点和属性就不再一一介绍了,若是要通过WCF传输比较大的数据时,要在binding的属性和<readerQuotas>设置一下。

复制代码 代码如下:

  <behaviors>
      <serviceBehaviors>
        <behavior name="te">
          <serviceMetadata httpGetEnabled="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>

最后到behaviors了。同理,behaviors也是一个集合,里面有两种类型,一种是serviceBehaviors,用于配置service的;另一种是endpointBehaviors,用于配置endpoint的。这两种类型都是一个集合,子节点<behavior>是它们的子项,以name来区分各个behavior,至于里面有什么属性和子项也不多说了,使用时在相应的service或endpoint的behaviorConfiguration属性填上behavior的name值就行了。
服务端的配置就唠叨到这里,下面到客户端的。

复制代码 代码如下:

<client>
      <endpoint address="http://localhost:9091/logicService" binding="ws2007HttpBinding"
          bindingConfiguration="WS2007HttpBinding_ILogic" contract="Proxy.ILogic"
          name="WS2007HttpBinding_ILogic">
      </endpoint>
    </client>

首先也是是终结点,客户端的终结点放在client里,里面也是有"ABC",这里的address一定要与服务端配置的一样,否则找不到相应的服务的。binding的类型也要与服务端的一样,contract则是用svcutil或其他工具生成的代码里的那个类的完全限定名。

复制代码 代码如下:

<ws2007HttpBinding>
        <binding name="WS2007HttpBinding_ILogic" closeTimeout="00:01:00"
            openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
            bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
            maxBufferPoolSize="524288" maxReceivedMessageSize="2147483647"
            messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
            allowCookies="false">
          <readerQuotas maxDepth="32" maxStringContentLength="1024" maxArrayLength="2147483647"
              maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <reliableSession ordered="true" inactivityTimeout="00:10:00"
              enabled="false" />
        </binding>
      </ws2007HttpBinding>

另一个还要提的是这个binding,客户端的binding比服务端的要配置多一点东西closeTimeout,openTimeout,receiveTimeout 大致与服务端一样。
另外若要传输比较的大数据时,可以按我这样来配,其实这个配置已经适用于传输几M的图片。由于是个入门者,很多东西的理解还不够透彻,以上有说错的还请各位批评指出。谢谢!

时间: 2024-10-01 09:58:16

WCF配置心得_其它相关的相关文章

让你不苦恼:Java的中文编程配置心得

编程|心得|中文 Java的中文编程与配置心得 Java的中文问题历史悠久,连绵不绝,至今也没有完全解决,但是上有政策下有对策,我们总是有办法搞定它的.跟Java相关的中文问题主要有两类,一类是编程的问题,涉及到I/O,内码转换等.第二类是Java运行环境的配置,涉及字体,属性配置等.我刚刚用了一天的时间解决这些问题,觉得很有必要给自己写个备忘录之类的. 我看还是从问题入手吧,这样不致于让大家打瞌睡.我想写个程序,这个程序有个基本功能就是显示文件内容,我用JTextArea来做显示的事情,程序简

求助:关于多域名WCF配置出错问题

问题描述 当只有一个域名(如www.a.cn)指向程序时,一切ok当另外一个域名(如a.cn)也指向程序时,html页面可以访问,但是wcf出错错误提示:此集合已经包含方案http的地址.此集合中每个方案中最多只能包含一个地址请高手指点一下,万分感谢! 解决方案 解决方案二:helpup!解决方案三:你们用的是配置文件还是代码配置服务及客户端的?把配置相关的发来看看啦解决方案四:关于多域名WCF配置出错问题,我也遇到了,不知现在楼主解决了吗,有什么好的办法

WCF 配置服务 演示

1.搭建IIS(具体步骤略)2.服务契约如下: namespace JianKunKing.NewVersion.Service { // 注意: 使用"重构"菜单上的"重命名"命令,可以同时更改代码.svc 和配置文件中的类名"NewVersionService". //[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.

编写WCF服务时右击配置文件无“Edit WCF Configuration”(编辑 WCF 配置)远程的解决办法

原文:编写WCF服务时右击配置文件无"Edit WCF Configuration"远程的解决办法 今天在看<WCF揭秘>书中看到作者提出可以在一个WCF Host应用程序的App.Config文件上右击, 通过弹出的" Edit WCF Configuration"(编辑WCF配置)选项来利用GUI界面编辑WCF的配置信息. 但是我在尝试的时候并没有找到这个右键菜单,开始还以为作者弄错了,但又尝试了一会后便发现了窍门. 右键App.Config文件默认

php配置libevent扩展的相关问题

问题描述 php配置libevent扩展的相关问题 php上配置libevent扩展,网上教程说将libevent0.1.0.tgz解压后执行./configure,但下载的包解压后都没有configure文件,没有办法按照该命令安装,该怎么解决? 解决方案 PHP5.4环境搭配 apache httpd.config中的配置? LoadModule php5_module "c:/www/php54/php5apache2_2.dll" AddType application/x-h

Windows 2008 FTP 7.5的安装及配置心得

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   FTP7.5服务器配置及配合IIS管理用户授权和中文规则支持的几个要点,关于FTP7.5的安装及配置的文章比较多,但是都不大解释其中的几个重要环节,以下是我的几点配置心得(经实验已经配置成功): 一.安装FTP服务时注意必须安装IIS管理服务和FTP扩展,否则配合IIS管理用户的授权会有问题. 二.很重要的一环,启用FTP服务对中文目录及文件名命名规则的上传支持

Fiori开发环境配置日志_单机版

Fiori开发环境配置日志_单机版   http://mp.weixin.qq.com/s?__biz=MzA5NzUxMTExNg==&mid=2653462870&idx=2&sn=4a7ef879bdf09378c1048ae4663fefba&chksm=8b43b2f5bc343be3c05205f4374b235dea978b6c9a86d5cedda46671253cecc51087722e69c0&mpshare=1&scene=5&

Tomcat配置心得及相关资料

心得 Tomcat缺省的Connector在8080端口,而且预先有多个WebApps,所以不想去动它.但是,想要在80端口发布自己的webapp怎么办呢?有办法:1.首先,在Server下建立一个新的Service,比如说取名ServiceA,并且指定其docBase,比如说docBaseA(不要与webapps同名)2.然后,为这个ServiceA建立80端口的Connector,并且指定一个Host(仍然用localhost最简单)3.在conf下,新建ServcieA目录,然后放入你的s

Java的中文编程与配置心得

Java的中文问题历史悠久,连绵不绝,至今也没有完全解决,但是上有政策下有对策,我们总是有办法搞定它的.跟Java相关的中文问题主要有两类,一类是编程的问题,涉及到I/O,内码转换等.第二类是Java运行环境的配置,涉及字体,属性配置等.我刚刚用了一天的时间解决这些问题,觉得很有必要给自己写个备忘录之类的.我看还是从问题入手吧,这样不致于让大家打瞌睡.我想写个程序,这个程序有个基本功能就是显示文件内容,我用JTextArea来做显示的事情,程序简单的到家了,但是就是中文都是乱码.我的配置是JBu