[WCF] Endpoint

每一个 WCF 服务都会关系到地址(Address)、绑定(Binding)和契约(Contract),而 WCF 则通过 Endpoint 将 ABC 三个方面联系在一起。每一个 Endpoint 都必须包括 ABC 三个方面,缺一不可,而 host 进程会提供 Endpoint 供客户端调用。每个 Endpoint 都对应一个唯一地址,但是多个 Endpoint 可以共享相同的绑定和契约,每个服务又可以提供多个 Endpoint 供客户端掉用。

 

使用配置文件

再次体现 Microsoft 的傻瓜式编程。唯一值得注意的地方是在 service 节点中添加了 behaviorConfiguration 属性。

<? xml version="1.0" ?>

< configuration  xmlns ="http://schemas.microsoft.com/.NetConfiguration/v2.0" >
  
< system .serviceModel >
    
< services >
      
<!-- <service name="MyService" behaviorConfiguration="returnFaults">
        <endpoint contract="IMyService" binding="wsHttpBinding"/>
      </service>
-->
      
< service  name ="Anrs.Service.AnrsService"  behaviorConfiguration ="returnFaults" >
        
< endpoint  contract  = "Anrs.Service.IAnrsServiceContract1"
                  binding  
= "wsHttpBinding"
                  address  
= "http://localhost:4021/AnrsServiceByIIS/AnrsService/"   />
      
</ service >
    
</ services >
    
    
< behaviors >
      
< serviceBehaviors >
        
< behavior  name ="returnFaults"   >
          
< serviceMetadata  httpGetEnabled ="true" ></ serviceMetadata >
          
< serviceDebug  includeExceptionDetailInFaults ="true"   />
        
</ behavior >
      
</ serviceBehaviors >
    
</ behaviors >
  
</ system.serviceModel >

  
< system .web >
    
< compilation  debug ="true" />
  
</ system.web >
</ configuration >

 

使用配置文件的好处自不待言,无论是修改了服务的地址、绑定还是契约,都不需要重新编译甚至部署。配置完成后,就能在浏览器中看到如下的画面了。

 

编程控制 Endpoint

相对于配置文件的简单,编程控制 Endpoint 也不会多几行代码。下面的代码就相当于上面的配置文档。

using  System;
using  System.ServiceModel;
using  System.ServiceModel.Channels;

namespace  Anrs.Service
{
    
class  Program
    {
        
static   void  Main( string [] args)
        {
            ServiceHost sh            
=   new  ServiceHost( typeof (AnrsService));
            Binding     wsHttpBinding 
=   new  WSHttpBinding();

            sh.AddServiceEndpoint(
typeof (IAnrsServiceContract1),
                wsHttpBinding,
                
new  Uri( " http://localhost:8086/AnrsService/ " ));
            sh.Open();
            
            Console.Write(
" Press any key to exit " );
            Console.ReadLine();

            sh.Close();
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值