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

本文关键字:WCF web 服务 事件 构建 | 更新日期: 2023-09-27 18:08:07

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

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

创建一个实现我们的"通知"WSDL的服务我们的"通知"服务的WSDL可以在API中找到"通知"服务部分下的文档。的从Workday发送到您的服务的soap消息沿着一个回调中使用的事件(Event_ID)的唯一标识符向Workday检索事件的附加信息

我已经构建了一个WCF web服务外壳,并创建了一个对外部供应商站点中发布的Notification WSDL的服务引用。在那之后,我不确定我需要做什么。web服务需要完成下面解释的这两个步骤。

  1. 当事件发生在外部供应商端时,根据供应商端配置的端点发送通知消息。因此,我的web服务应该主动侦听这些消息。一旦收到消息,我将捕获事件ID并回调以获取有关该数据的更多数据。
  2. 一旦我有了事件数据,我将按照我们的业务逻辑处理它(我在这里OK)

需要第1步的帮助,对于构建一个监听外部事件的消费web服务有点陌生。我不知道从哪里开始。

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

你需要给供应商一个URL到你的应用程序-这可能意味着

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

2)从供应商站点到你的站点有某种VPN,这样他们就可以直接与你的服务器对话

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

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

我知道这是老生常谈,但有一个答案。Svcutil可以为您做这件事。

svcutil.exe/language: c#/out:MyService.cs通知。wsdl/电话会议

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

这听起来像是你在为工作日通知写一个web服务。该wsdl使用一些枚举,svcutil不会将这些枚举传输到生成的.cs文件。如果您关心这一点,则需要手动将这些字符串属性更改为具有wsdl中指定的值范围的枚举。