使用WCF进行Windows服务设计

时间:2014-01-05 12:07:04

标签: c# wcf soap

目前,我正在开发Windows服务应用程序的设计,以从Oracle数据库中获取报告,将它们聚合到一条消息并将其发送到外部WCF SOAP服务。 关于Windows服务的一些设计建议,我将不胜感激。

Windows服务是否应使用例如专用的WAS /自托管WCF服务(net.pipe / net.tcp),它提供数据以实现更好的分离/可重用性?

所以我会添加一个提供数据的WCF服务(net.pipe)(例如GetReport方法)。 Windows服务应用程序将调用GetReport并调用远程SOAP服务以转发聚合消息。远程服务及其客户端代码可能会发生变化。它可能适用于不同的客户项目。

2 个答案:

答案 0 :(得分:2)

如果我理解正确,您的Windows服务将定期从数据库中获取一些数据并将该数据上传到远程Web服务。

这意味着您的Windows服务在WCF通信方面是客户端,您不需要在其中实现任何WCF服务器代码。

您所要做的就是连接到移除网络服务并上传数据,例如使用为此删除服务生成的客户端代理。

答案 1 :(得分:0)

我认为只要您不要求另一个应用程序使用相同的WCF服务,就不需要添加另一个提供数据的WCF服务,而不是直接查询数据库。在此之前,我不会因为以下原因添加服务:

  • 另一个WCF服务会增加部署的复杂性,并使其更难安装和配置。
  • 与新WCF服务的连接是 另一个可以破解的点
  • 如果处理大量数据,直接从数据库中获取数据效率更高,而不是通过服务协议传输它们。据我了解你的问题,你聚合Windows服务中的数据而不是数据库中的数据。因此,您还必须将聚合代码移动到新服务。

如前所述,一旦您有另一个潜在客户到新服务,此建议将会改变。为了做好准备,您当然应该在Windows服务中选择一个能够很好地区分关注点的设计,这是稍后移动某些组件的良好起点。