WCF终结点地址基本内容概述

WCF开发工具是一款功能强大的开发插件,其应用技术也比较繁多,可以灵活的应用在开发才过程中。其中,在WCF中提供了基址技术,这使的我们在指定WCF终结点地址时可以酌情选用相对地址或者绝对地址,指定绝对地址的方法是在终结点定义中提供完全限定的地址,如下代码所示:

创新互联公司主要从事成都网站制作、成都网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务太和,十多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220

 
 
 
  1. < service name="TerryLee.WCFAddressing.Service.CalculatorService" 
  2. behaviorConfiguration="calculatorBehavior"> 
  3. < endpoint address="http://localhost:8887/CalculatorService" 
  4. binding ="basicHttpBinding" 
  5. contract="TerryLee.WCFAddressing.Contract.ICalculator"> 
  6. < /endpoint> 
  7. < /service> 

使用绝对地址固然简单,但是如果我们的服务需要公开多个终结点,而这些WCF终结点地址又具有相同的基地址时,也许相对地址是更好的选择。在创建服务宿主对象时,提供一个基地址,如下代码所示:

 
 
 
  1. using (ServiceHost calculatorServiceHost =  
  2. new ServiceHost(typeof(CalculatorService),  
  3. new Uri("http://localhost:8887/CalculatorService")))  
  4. {  
  5. calculatorServiceHost.Opened += delegate  
  6. {  
  7. Console.WriteLine("Service begin to listen via the Address:{0}",  
  8. calculatorServiceHost.BaseAddresses[0].ToString());  
  9. };  
  10. calculatorServiceHost.Open();  
  11. Console.Read();  

又或者同时在配置文件中指定基地址,这样就无须在每个终结点中指定绝对地址了,如下代码所示:

 
 
 
  1. < service name="TerryLee.WCFAddressing.Service.CalculatorService" 
  2. behaviorConfiguration="calculatorBehavior"> 
  3. < host> 
  4. < baseAddresses> 
  5. < add baseAddress="http://localhost:8887/Calculator"/> 
  6. < /baseAddresses> 
  7. < /host> 
  8. < endpoint address="myservice1" 
  9. binding ="basicHttpBinding" 
  10. contract="TerryLee.WCFAddressing.Contract.ICalculator"> 
  11. < /endpoint> 
  12. < endpoint address="myservice2" 
  13. binding ="wsHttpBinding" 
  14. contract="TerryLee.WCFAddressing.Contract.ICalculator"> 
  15. < /endpoint> 
  16. < /service> 

但请注意,基址技术是为我们在配置终结点时提供了方便,客户端对它是毫无所知的,客户端看到的仍然是绝对地址,在打开服务宿主时,它会匹配所有的相对地址,从而为每个终结点提供相应的绝对地址,如上面的示例,可以在WSDL中看到:

 
 
 
  1. < wsdl:service name="CalculatorService"> 
  2. < wsdl:port name="BasicHttpBinding_ICalculator" 
    binding="tns:BasicHttpBinding_ICalculator"> 
  3. < soap:address location="http://localhost:8887/Calculator/myservice1" /> 
  4. < /wsdl:port> 
  5. < wsdl:port name="WSHttpBinding_ICalculator" 
    binding="tns:WSHttpBinding_ICalculator"> 
  6. < soap12:address location="http://localhost:8887/Calculator/myservice2" /> 
  7. < wsa10:EndpointReference> 
  8. < wsa10:Address>http://localhost:8887/Calculator/myservice2< /wsa10:Address> 
  9. < Identity xmlns="http://schemas.xmlsoap.org/ws/2006/02/addressingidentity"> 
  10. < Upn>TerryLee-PC\TerryLee< /Upn> 
  11. < /Identity> 
  12. < /wsa10:EndpointReference> 
  13. < /wsdl:port> 
  14. < /wsdl:service> 

如果在指定了基地址的情况下,有以下几种情况:指定相对地址为空,WCF终结点地址与基地址相同;指定相对地址不为空,追加相对地址到基地址上;指定一个绝对地址,基地址不起作用,终结点地址仍然为指定的绝对地址;指定一个绝对地址和一个与基地址不同的绑定,基地址不起作用。现在有这样一段配置信息:

 
 
 
  1. < service name="TerryLee.WCFAddressing.Service.CalculatorService" 
  2. behaviorConfiguration="calculatorBehavior"> 
  3. < host> 
  4. < baseAddresses> 
  5. < add baseAddress="http://localhost:8887/Calculator"/> 
  6. < /baseAddresses> 
  7. < /host> 
  8. < endpoint address="" 
  9. binding ="wsHttpBinding" 
  10. contract="TerryLee.WCFAddressing.Contract.ICalculator"> 
  11. < /endpoint> 
  12. < endpoint address="myservice2" 
  13. binding ="wsHttpBinding" 
  14. contract="TerryLee.WCFAddressing.Contract.ICalculator"> 
  15. < /endpoint> 
  16. < endpoint address="http://localhost:8886/CalculatorService" 
  17. binding ="wsHttpBinding" 
  18. contract="TerryLee.WCFAddressing.Contract.ICalculator"> 
  19. < /endpoint> 
  20. < endpoint address="net.tcp://localhost:8885/Calculator" 
  21. binding ="netTcpBinding" 
  22. contract="TerryLee.WCFAddressing.Contract.ICalculator"> 
  23. < /endpoint> 
  24. < /service> 

可以在ServiceHost启动后,输出所有的WCF终结点地址和绑定信息,如下代码:

 
 
 
  1. ServiceDescription desc = calculatorServiceHost.Description;  
  2. foreach (ServiceEndpoint endpoint in desc.Endpoints)  
  3. {  
  4. Console.WriteLine("Endpoint - address: {0}", endpoint.Address);  
  5. Console.WriteLine(" binding: {0}", endpoint.Binding.Name);  
  6. Console.WriteLine(" contract: {0}", endpoint.Contract.Name);  

当前文章:WCF终结点地址基本内容概述
文章路径:http://www.36103.cn/qtweb/news45/595.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联