十一. 管理端点配置
请考虑下列服务定义:
namespace MyNamespace
{
[ServiceContract]
interface IMyContract
{...}
Class MyService : IMyContract
{...}
}
列表2(见本文相应下载源码)展示了在宿主进程配置文件中要求的入口 。管理配置是在大多数情况下的配置,因为它提供灵活性来实现改变服务地址、绑定甚至暴露合同而不必重新构建和重新发布服务 。
源码中的列表3展示了一个配置文件-它定义暴露多个端点的单个服务 。注意,这些端点必须提供一个与绑定相一致的基地址(例如,对于HTTP使用WSHttpBinding绑定) 。每一个不匹配都会导致在服务加载时刻抛出一个异常 。只要URI是不同的,那么你可以使用相同的基地址来配置多个端点:
<service name="MyNamespace.MyService">
<endpoint Address =
"net.tcp://localhost:8001/Service1/"
...
/>
<endpoint
address="net.tcp://localhost:8001/Service2/"
...
/>
</service>
还可以省略地址-在这种情况下,该服务使用与宿主一起注册的基地址(宿主必须提供一个匹配的基地址):
<endpoint
binding="wsHttpBinding"
contract="MyNamespace.IMyContract"
/>
可以仅提供一个URI-在这种情况下,地址是在基地址下的相对地址(并且宿主必须提供一个匹配的基地址):
<endpoint
address="SubAddress"
...
/>
当提供一个基地址时,该端点覆盖宿主所提供的任何基地址:
<endpoint
address="http://localhost:8000/MyService/"
...
/>
注意,当使用IIS进行宿主时,服务必须使用IIS基地址(在HTTP中使用计算机名 虚拟目录) 。
十二. 端点配置编程
以编程方式实现端点配置完全等价于管理配置;然而,它不必依赖于一个配置文件而是可以通过编程调用来把端点添加到ServiceHost实例 。再次强调的是,这些调用总是位于服务代码的范围之外 。ServiceHost提供AddServiceEndpoint()方法的重载版本:
public class ServiceHost : ServiceHostBase
{
public ServiceEndpoint AddServiceEndpoint(Type implementedContract,Binding binding,String address);
//另外的成员
}
列表4展示了与在列表3中的端点一样的可编程的配置 。为了依赖宿主基地址,只需要提供如地址一样的URI即可:
Uri tcpBaseAddress = new Uri("http://localhost:8000/");
ServiceHost serviceHost = new ServiceHost(typeof(MyService),tcpBaseAddress);
Binding tcpBinding = new NetTcpBinding();
//使用基地址作为地址
serviceHost.AddServiceEndpoint(typeof(IMyContract),tcpBinding,"");
//添加相对地址
serviceHost.AddServiceEndpoint(typeof(IMyContract),tcpBinding,"MyService");
//忽略基地址
serviceHost.AddServiceEndpoint(typeof(IMyContract),tcpBinding,
"net.tcp://localhost:8001/MyService");
serviceHost.Open();
十三. 小结
在本篇中,我们全面介绍了构建一个WCF服务所需要的基本概念,有关完整的WCF服务的例子请参考本文相应源码 。在下篇中,我们将给出一个使用WCF进行Windows开发的客户端案例分析 。
推荐阅读
- 爱恨交缠 深入剖析WinVista的五个利弊
- 恨铁不成钢 细数WinVista体验之五宗罪
- 简单免费 WinVista中自带截图工具试用
- 画饼也充饥 WinVista操作系统完美模拟实战
- 探析WinVista的五个最好和五个最差表现
- WinVista软件兼容系列评测之图形图像篇
- 微软坚称:800MHz就能运行WinVista
- 多图激赏 WinVista简体中文版安装过程
- WinXP五个不能启动问题不再困扰WinVista
- 让二手PC提速30% WinVista系统优化攻略