WCF 服务开发:合同、端点与消息协议详解
1. 外部客户端应用编译与测试
在进行外部客户端应用的开发时,需要按照特定步骤进行编译和测试。首先,要运行主机(Host),之后再运行外部客户端(ExternalClient)。通过点击各个按钮,能够调用由 ServiceA 和 ServiceB 暴露的服务操作。以下是调用服务操作的代码示例:
private void button2_Click(object sender, EventArgs e) { string s = m_proxyA.Operation2( ); MessageBox.Show(s); } private void button3_Click(object sender, EventArgs e) { string s = m_proxyB.Operation3( ); MessageBox.Show(s); }2. 实现多个合同
设计服务合同时,不能简单地将现有的业务组件直接作为服务暴露出来。通常情况下,服务会聚合对多个逻辑相关业务组件的调用,这就需要提前考虑每个服务的用例。即使经过了聚合和设计,单一服务暴露的功能也不应全部集中在一个大的服务合同中。以下是一个服务存在多个合同的情况:
- 为不同功能分离逻辑相关的操作。
- 区分排队操作和非排队操作。
- 为服务的外部和内部消费者提供不同的入口点。
如果服务合同在 CLR 接口上实现,那么在服务上实现多个合同就如同实现多个接口一样简单。在示例中,每个服务都实现了一个主服务合