前面两篇(《服务如何能被”发现”》和《客户端如何能够“探测”到可用的服务?》)我们分别介绍了可被发现服务如何被发布,以及客户端如果探测可用的服务。接下来我们通过一个简单的例子来演示如果创建和发布一个可被发现的服务,客户端如何在不知道服务终结点地址的情况下动态探测可用的服务并调用之。该实例的解决方案采用如右图所示的结构,即包含项目Service.Interface(类库)、Client(控制台应用)和Service(控制台应用)分别定义服务契约、服务(包括服务寄宿)和客户端程序。[源代码从这里下载,DynamicEndpoint方式进行服务调用源代码从这里下载]。
目录
步骤一、创建服务契约和服务
步骤二、寄宿服务
步骤三、服务的“动态”调用
DynamicEndpoint
第一个步骤自然是在Service.Interface项目中定义代表服务契约的接口。我们还是采用属性的计算服务的例子,为此我们定义了如下一个ICalculator接口。
using System.ServiceModel;
namespace Artech.ServiceDiscovery.Service.Interface
3: {
)]
interface ICalculator
6: {
7: [OperationContract]
double y);
9: }
10: }