如何配置和承载服务

配置绑定

配置服务:任务

为什么要配置服务:在设计和实现服务协定后,即可配置服务。 在其中可以定义和自定义如何向客户端公开服务指定可以找到服务的地址、服务用于发送和接收消息的传输和消息编码,以及服务需要的安全类型

两种配置方式
在配置文件中配置
在代码中配置

配置服务:通过配置文件

【WCF系列】(三)如何配置和承载服务

WCF术语介绍

服务协定:服务协定将多个相关的操作联系在一起,组成单个功能单元。 协定可以定义服务级设置,如服务的命名空间、对应的回调协定以及其他此类设置。 在大多数情况下,协定是通过用您所选的编程语言创建一个接口并将 ServiceContractAttribute 属性应用于该接口来定义的。 通过实现该接口,可生成实际的服务代码。

操作协定:操作协定定义参数并返回操作的类型。 在创建定义服务协定的接口时,可以通过将 OperationContractAttribute 属性应用于协定中包含的每个方法定义来表示一个操作协定。 可以将操作建模为采用单个消息作为参数并返回单个消息,或者建模为采用一组类型作为参数并返回一个类型。 在后一种情况下,系统将确定需要为该操作交换的消息的格式。

宿主:服务必须承载于某个进程中。 “宿主”是控制服务的生存期的应用程序。 服务可以是自承载的,也可以由现有的宿主进程进行管理。

 

Service元素

Service元素:在<services>配置节中可以定义多个服务,每一个服务都被放到<service>配置节中,WCF的宿主程序可以通过配置文件找到这些定义的服务并发布这些服务。

每个服务都具有以下属性:
  name:指定提供服务协定的实现的类型。 这是完全限定名称(命名空间和类型名称)
  behaviorConfiguration:指定一个在behaviors 元素中找到的behavior 元素的名称。 指定的行为控制操作,例如服务是否允许模拟。

<service>配置节包含name和behaviorConfiguration属性。其中,name配置了实现Service Contract的类型名。类型名必须是完整地包含了命名空间和类型名。而behaviorConfiguration的配置值则与其后的<behaviors>配置节的内容有关。<endpoint>是<service>配置节的主体,其中,<endpoint>配置节包含了endpoint的三个组成部分:Address、Binding和Contract。由于具体的binding配置是在<bindings>配置节中完成,因而,在<endpoint>中配置了bindingConfiguration属性,指向具体的binding配置。

<services>
    <service name="BruceZhang.MyService" behaviorConfiguration="MyBehavior">
        <endpoint address="" 
            binding="netTcpBinding" 
            bindingConfiguration="DuplexBinding" 
            contract="BruceZhang.IHello" />
    </service>
</services>

<behaviors>配置节

  当我们在定义一个实现了Service Contract的类时, binding和address信息是客户端必须知道的,否则无法调用该服务。然而,如果需要指定服务在执行方面的相关特性时,就必须定义服务的behavior。

【WCF系列】(三)如何配置和承载服务

Endpoint元素

每个终结点都需要以下属性表示的地址、绑定和协定:

address:指定服务的统一资源标识符(URI),它可以是一个绝对地址或是一个相对于服务基址给定的地址,如果设置为空字符串,则指示在创建服务的ServiceHost时,终结点在指定的基址上可用。

Binding:通常,指定一个类似WsHttpBinding的系统提供的绑定,但也可以指定一个用户定义的绑定。 指定的绑定确定传输协议类型、安全和使用的编码,以及是否支持或启用可靠会话、事务或流。

bindingConfiguration:如果必须修改绑定的默认值,则可通过在bindings元素中配置相应的binding元素来执行此操作 此属性应赋予与用于更改默认值的binding 元素的name 属性相同的值。

contract:指定定义协定的接口。 这是在由service 元素的name 属性指定的公共语言运行库(CLR) 类型中实现的接口。

<services>
    <service name="WcfServiceThree.Service1" behaviorConfiguration="serviceDemo">
        <host>
            <baseAddresses>
                <add baseAddress="http://localhost:1123/Service1.svc/Service1"/>
            </baseAddresses>
        </host>
        <endpoint address="" binding="wsDualHttpBinding" contract="WcfServiceThree.IService1">
            <identity>
                <dns value="localhost"/>
            </identity>
        </endpoint>
    </service>
</services>
<behaviors>
    <serviceBehaviors>
        <behavior name="serviceDemo">
            <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
            <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
    </serviceBehaviors>
</behaviors>
View Code

相关文章:

  • 2022-01-02
  • 2021-12-26
  • 2021-11-22
  • 2022-01-28
  • 2021-08-31
  • 2021-11-20
  • 2021-07-02
  • 2021-05-20
猜你喜欢
  • 2021-08-09
  • 2021-08-29
  • 2021-10-23
  • 2021-12-12
  • 2021-12-12
相关资源
相似解决方案