zoukankan      html  css  js  c++  java
  • WCF(二) endpoint

    为什么要了解endpoint?

    各个应用程序的通信是以“终结点(Endpoint)”的来实现的

    Endpoint的组成

    Address: Address通过一个URI唯一地标识一个Endpoint,并告诉潜在的WCF service的调用者如何找到这个EndpointBinding:

    Binding:Binding实现在Client和Service通信的所有底层细节。比如Client与Service之间传递的Message是如何编码的——text/XML, binary,MTOM;这种Message的传递是采用的哪种Transport——TCP, Http, Named Pipe, MSMQ; 以及采用怎样的机制解决Secure Messaging的问题——SSL,Message Level Security。所以Binding解决的是How to communicate with service?

    Contract: Contract的主要的作用是暴露某个WCF Service所提供的所有有效的Functionality。从Message Exchange的层面上讲,Contract实际上是抱每个Operation转化成为相对应的Message Exchange Pattern——MEP(Request/Response; One-way; Duplex)。所以Contract解决的是What functionalities do the Service provide?

    Behavior: Behavior的主要作用是定制Endpoint在运行时的一些必要的Behavior。比如Service 回调Client的Timeout;Client采用的Credential type;以及是否支持Transaction等。

    如何设置endpoint

    一个endpoint必须包含A,B,C三个元素

    <system.serviceModel>
        <bindings>
          <basicHttpBinding>
            <binding name="BasicHttpBinding_IMyFirstSerice" />
          </basicHttpBinding>
        </bindings>
        <client>
          <endpoint address="http://localhost:13961/MyFirstSerice.svc"
            binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IMyFirstSerice"
            contract="ServiceReference1.IMyFirstSerice" name="BasicHttpBinding_IMyFirstSerice" />
        </client>
      </system.serviceModel>

    Endpoint相关的信息都具有两种定义方式——Managed Code 和Configuration

    一般我们采取Configuration配置的方式实现可定制化的过程

  • 相关阅读:
    从a文件判断是否删除b文件中的行(sed示例)
    绝对路径的表示方式为什么是"/usr"而不是"//usr"
    判断ssh远程命令是否执行结束
    彻底搞懂shell的高级I/O重定向
    Resource Agent:LSB和OCF
    流程控制语句(MySQL/MariaDB )
    MySQL/MariaDB中游标的使用
    翻译:DECLARE HANDLER语句(已提交到MariaDB官方手册)
    从集合的无序性看待关系型数据库中的"序"
    MariaDB/MySQL存储过程和函数
  • 原文地址:https://www.cnblogs.com/ilooking/p/4551659.html
Copyright © 2011-2022 走看看