构建侦听入站事件的WCF Web服务

时间:2011-09-11 05:01:50

标签: c# wcf wcf-binding

我有一个外部供应商,为其下游客户端提供事件通知功能。他们要求我们执行以下步骤,在公司内部实施事件通知,以接收外部供应商的通知。我已经提供了供应商网站中列出的大胆事件通知的实际措辞。

为了在我们的实时集成场景中使用我们的事件通知,您需要......

创建一个实现我们的“通知”WSDL的服务最新的 我们的“通知”服务的WSDL可以在我们的API中找到 “通知”服务部分下的文档。该 从Workday发送到您的服务的SOAP消息传递 回调中使用的事件(Event_ID)的唯一标识符 到工作日以检索事件的其他信息

我已经构建了一个WCF Web服务shell,并创建了一个对外部供应商站点中发布的Notification WSDL的服务引用。在那之后,我不确定我需要做什么。 Web服务需要执行以下两个步骤。

  1. 当事件发生在外部供应商端时,将根据供应商端配置的终点发送通知消息。所以我的网络服务应该主动收听这些消息。收到消息后,我将捕获事件ID并进行回调以获取有关数据的更多数据。
  2. 一旦我有了事件数据,我将根据我们的业务逻辑处理它(我在这里很好)
  3. 需要步骤1的帮助,有点新建一个消费网络服务来监听外部事件..我不知道从哪里开始。

2 个答案:

答案 0 :(得分:2)

您需要向供应商提供应用程序的URL - 这可能意味着

1)在面向公众的服务器上托管并开发

2)从供应商网站获得某种vpn,以便他们可以直接与您的服务器通信

3)让您的基础设施人员在防火墙上设置一些规则,以允许来自供应商站点的请求(IP地址限制)直接路由到您的开发机器

选项3)是我开发的首选(简单),然后是1)用于长期托管。

答案 1 :(得分:0)

我知道这是旧的,但有一个答案。 svcutil可以为你做到这一点。

svcutil.exe / language:C#/out:MyService.cs Notification.wsdl / syncOnly

这将生成您需要的大部分内容,但它也为您提供了不需要的客户端代码。您可以从它生成的MyService.cs文件中删除该部分。如果您使用的是.NET 4.5,则可以添加/ serviceContract选项,它只会生成特定于服务器的代码。

这听起来像是在为Workday Notifications撰写网络服务。此wsdl使用一些枚举,其中svcutil不会传输到生成的.cs文件。如果您关心这一点,则需要将这些字符串属性更改为枚举,并使用wsdl中手动指定的值范围。