使用WCF进行Windows服务设计

3

目前我正在设计一个Windows服务应用程序,从Oracle数据库中获取报告,将其聚合成一条消息并发送到外部WCF SOAP服务。我希望您能提供关于Windows服务的设计建议。

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

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

2个回答

2
如果我理解正确,您的Windows服务将定期从数据库中获取一些数据,并将这些数据上传到远程Web服务。
这意味着您的Windows服务在WCF通信方面是客户端,您不需要在其中实现任何WCF服务器代码。
您所需要做的就是连接到远程Web服务并上传数据,例如使用为此远程服务生成的客户端代理。

0

我认为只要没有另一个应用程序使用相同的WCF服务,就不需要添加另一个提供数据的WCF服务来代替直接查询数据库。在那之前,出于以下原因,我不会添加服务:

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

如前所述,一旦有另一个潜在的客户端使用新服务,这个建议将改变。为了做好准备,当然应该选择设计良好的Windows服务,以分离关注点,并成为将来移动某些组件的良好起点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接