WCF 第七章 寄宿 定义服务和终结点地址
2011-06-30 10:29
363 查看
一个WCF服务是一系列终结点集合,每个终结点有一个独一无二的地址。终结点地址和绑定确定了终结点在哪里以及如何监听进入请求。除了终结点地址,服务本身也有地址,称为基地址。
一个服务的基地址用来作为可能在终结点中定义的相对地址的基地址。使用相对地址,而不是绝对地址,终结点地址让在一个服务中管理终结点变得更加容易。通过相对地址,你可以在一个服务中仅通过改变服务基地址就改变所有终结点地址。
当在一个终结点中使用一个相对地址时,相对地址附加到基地址来形成服务基地址。例如,如果一个服务基地址是http://localhost/foo 而终结点地址是bar,终结点将会在http://localhost/foo/bar 监听进入请求消息。
当在一个终结点中使用相对地址时,终结点地址与服务基地址无关。例如,一个服务基地址可以是http://localhost/foo, 而在它内部的一个终结点地址是net.tcp://bar/MyOtherService/.
一个服务可以有多个基地址, 但是每个URI 只有一个。当在一个终结点中使用一个相对地址时, WCF使用满足终结点绑定定义的传输协议来找到服务基地址。例如,如果一个服务定义两个基地址, http://localhost/ 和net.tcp://bigserver/, 一个终结点使用一个basicHttpBinding绑定的相对地址foo, 终结点地址是http://localhost/foo. 如果服务中的另外一个终结点也使用同样的相对地址, 终结点地址是net.tcp/bigserver/foo.
当在IIS中寄宿一个服务时, 服务的基地址是SVC文件所在的IIS虚拟目录的地址。如果MyService.SVC文件位于http://localhost/foo/, 服务的基地址是http://localhost/foo. 当在IIS中寄宿时由web.config确定的终结点地址必须是相对地址。
列表7.2显示了一个服务的配置文件。注意以下几点:
基地址. 服务定义了两个基地址, 每个使用一个不同的协议。如果两个基地址使用同样协议定义, 如何从终结点相对地址创建完全地址是不可能的, 所以WCF将会在服务激活时抛出一个异常。
空的相对地址. 第一个终结点的地址是空的。使用同样的协议与服务基地址组合, 终结点地址与服务地址一样。
非空的相对地址. 第二个终结点的地址是ws.使用同样的协议与基地址组合, 终结点的地址是http://localhost:8000/EssentialWCF/ws.
列表7.12 配置文件中的服务和终结点地址
使用System.ServiceModel.Description命名空间,你可以从ServiceHost访问所有的地址和绑定信息。列表7.13显示了一段指出这个信息的代码片段。
列表7.13 打印地址和终结点信息的代码片段
图片7.6 显示了当运行使用列表7.12中的配置文件的代码输出
=======
转载自
作者:DanielWise
出处:http://www.cnblogs.com/danielWise/
一个服务的基地址用来作为可能在终结点中定义的相对地址的基地址。使用相对地址,而不是绝对地址,终结点地址让在一个服务中管理终结点变得更加容易。通过相对地址,你可以在一个服务中仅通过改变服务基地址就改变所有终结点地址。
当在一个终结点中使用一个相对地址时,相对地址附加到基地址来形成服务基地址。例如,如果一个服务基地址是http://localhost/foo 而终结点地址是bar,终结点将会在http://localhost/foo/bar 监听进入请求消息。
当在一个终结点中使用相对地址时,终结点地址与服务基地址无关。例如,一个服务基地址可以是http://localhost/foo, 而在它内部的一个终结点地址是net.tcp://bar/MyOtherService/.
一个服务可以有多个基地址, 但是每个URI 只有一个。当在一个终结点中使用一个相对地址时, WCF使用满足终结点绑定定义的传输协议来找到服务基地址。例如,如果一个服务定义两个基地址, http://localhost/ 和net.tcp://bigserver/, 一个终结点使用一个basicHttpBinding绑定的相对地址foo, 终结点地址是http://localhost/foo. 如果服务中的另外一个终结点也使用同样的相对地址, 终结点地址是net.tcp/bigserver/foo.
当在IIS中寄宿一个服务时, 服务的基地址是SVC文件所在的IIS虚拟目录的地址。如果MyService.SVC文件位于http://localhost/foo/, 服务的基地址是http://localhost/foo. 当在IIS中寄宿时由web.config确定的终结点地址必须是相对地址。
列表7.2显示了一个服务的配置文件。注意以下几点:
基地址. 服务定义了两个基地址, 每个使用一个不同的协议。如果两个基地址使用同样协议定义, 如何从终结点相对地址创建完全地址是不可能的, 所以WCF将会在服务激活时抛出一个异常。
空的相对地址. 第一个终结点的地址是空的。使用同样的协议与服务基地址组合, 终结点地址与服务地址一样。
非空的相对地址. 第二个终结点的地址是ws.使用同样的协议与基地址组合, 终结点的地址是http://localhost:8000/EssentialWCF/ws.
列表7.12 配置文件中的服务和终结点地址
01 | <?xml version= "1.0" encoding= "utf-8" ?> |
02 | <configuration> |
03 | <system.serviceModel> |
04 | <behaviors /> |
05 | <services> |
06 | <service name= "EssentialWCF.GoodStockService" > |
07 | <endpoint address= "" binding= "basicHttpBinding" bindingConfiguration= "" |
08 | contract= "EssentialWCF.GoodStockService" /> |
09 | <endpoint address= "secure" binding= "wsHttpBinding" bindingConfiguration= "" |
10 | contract= "EssentialWCF.GoodStockService" /> |
11 | <endpoint address= "fast" binding= "netTcpBinding" bindingConfiguration= "" |
12 | contract= "EssentialWCF.GoodStockService" /> |
13 | <host> |
14 | <baseAddresses> |
15 | <add baseAddress= "http://localhost:8000/EssentialWCF" /> |
16 | <add baseAddress= "net.tcp://localhost:8001/EssentialWCF" /> |
17 | </baseAddresses> |
18 | </host> |
19 | </service> |
20 | </services> |
21 | </system.serviceModel> |
22 | </configuration> |
列表7.13 打印地址和终结点信息的代码片段
01 | foreach (Uri uri in serviceHost.BaseAddresses) |
02 | { |
03 | Console.WriteLine( "Base Addr Uri : {0}" , uri.AbsoluteUri); |
04 | } |
05 |
06 | foreach (ServiceEndpoint endpoint in serviceHost.Description.Endpoints) |
07 | { |
08 | Console.WriteLine( "\nEndpoint - address: {0}" , endpoint.Address); |
09 | Console.WriteLine( "binding: {0}" , endpoint.Binding.Name); |
10 | Console.WriteLine( "contract: {0}" , endpoint.Contract.Name); |
11 | } |
=======
转载自
作者:DanielWise
出处:http://www.cnblogs.com/danielWise/
相关文章推荐
- WCF 第七章 寄宿 定义服务和终结点地址
- WCF 第七章 寄宿 在Windows 进程激活服务中寄宿服务
- WCF 第七章 寄宿 在一个IIS寄宿服务中开启ASMX特性
- wcf服务寄宿时,如何指定终结点三要素才不会出错
- WCF 第七章 寄宿 在一个进程中寄宿多个服务
- WCF 第七章 寄宿 在Windows 进程激活服务中寄宿服务
- WCF 第七章 寄宿 在IIS7中寄宿服务
- WCF把书读薄(1)——终结点与服务寄宿
- WCF 第七章 寄宿 在一个进程中寄宿多个服务
- WCF服务寄宿后输出其所有终结点的信息
- WCF 第七章 寄宿 在一个IIS寄宿服务中开启ASMX特性
- 第二章 寄宿WCF服务
- WCF服务寄宿应用程序
- 微软白皮书发布:在IIS7.5中用Service Bus端点寄宿WCF服务
- WCF 第七章 寄宿
- WCF终结点地址和监听地址没这么简单
- [转]将使用netTcp绑定的WCF服务寄宿到IIS7上全记录
- 将WCF寄宿到windows 服务中
- [原创]WCF技术剖析之三:如何进行基于非HTTP的IIS服务寄宿
- 关于IIS寄宿WCF服务,客户端不能生成代理类