目前,我正在开发Windows服务应用程序的设计,以从Oracle数据库中获取报告,将它们聚合到一条消息并将其发送到外部WCF SOAP服务。 关于Windows服务的一些设计建议,我将不胜感激。
Windows服务是否应使用例如专用的WAS /自托管WCF服务(net.pipe / net.tcp),它提供数据以实现更好的分离/可重用性?
所以我会添加一个提供数据的WCF服务(net.pipe)(例如GetReport方法)。 Windows服务应用程序将调用GetReport并调用远程SOAP服务以转发聚合消息。远程服务及其客户端代码可能会发生变化。它可能适用于不同的客户项目。
答案 0 :(得分:2)
如果我理解正确,您的Windows服务将定期从数据库中获取一些数据并将该数据上传到远程Web服务。
这意味着您的Windows服务在WCF通信方面是客户端,您不需要在其中实现任何WCF服务器代码。
您所要做的就是连接到移除网络服务并上传数据,例如使用为此删除服务生成的客户端代理。
答案 1 :(得分:0)
我认为只要您不要求另一个应用程序使用相同的WCF服务,就不需要添加另一个提供数据的WCF服务,而不是直接查询数据库。在此之前,我不会因为以下原因添加服务:
如前所述,一旦您有另一个潜在客户到新服务,此建议将会改变。为了做好准备,您当然应该在Windows服务中选择一个能够很好地区分关注点的设计,这是稍后移动某些组件的良好起点。