我一直在研究VB.net中的网络技术,特别是应用程序A向应用程序B发送数据的最佳方式。
从我的研究中我发现了几个选项,我决定使用基本的HTTP协议来使用WCF - 我昨晚花了几个小时调整我的内部服务器IIS配置并创建一个测试WCF应用程序通过函数然后在我的应用程序中使用它,一切似乎没有错误。 (虽然我和DNS在一段时间内有一些内部斗争......)
我现在要尝试收集系统信息,简单的事情,如计算机名称,操作系统,运行服务等 - 但是我想每隔x个时间这样做。
现在我的问题对你们来说是:WCF是一个足够的选择,支持定期收集数据,然后通过IIS将其推出,以便应用程序B接收。
示例工作流程:
WCF服务是否支持我提到的内容?这是每15分钟运行一次的功能吗?
如果我理解WCF服务的主要思想,那就是你可以在WCF服务中创建可用作远程应用程序参考的函数,尽管我看过的示例代码会生成静态数据。
我想的越多,我认为答案就越容易,在我看来,我说“当然我可以添加一个计时器或其他东西来重新加载功能(甚至是服务),当然当我的应用程序使用引用来提取数据时,它将被更新。
主要提示:
感谢您的意见和建议。
答案 0 :(得分:3)
除了Mikes很好的回答,我可以为您指出两个资源。 1:关于使用WCF将数据发送到其他应用程序Push Data from a WCF Service to Website的上一个问题 2:XSockets和SignalR http://xsockets.net/xsockets-vs-signalr之间的比较表。底线有2件事......首先。您需要.net 4.5与IIS8和win8 / 2012server来获取websockets。第二。 XSockets有状态控制器SignalR没有。 第一个条件显然对SignalR不利,另一个条件取决于你构建的内容。
答案 1 :(得分:2)
我想说WCF不是一个好的选择。根据您的描述,听起来像在WCF术语中,您希望将信息从服务器推送到客户端。这与大多数WCF服务的工作方式相反。通常,通信从客户端发起到服务器。
这个可以使用双工服务与WCF完成,但它相对复杂。
更简单的解决方案是使用像Web套接字这样的服务器推送解决方案。在.Net中有一个名为SignalR
的Microsoft实现和(至少一个)名为XSockets的其他实现
这两种实现都非常简单易用。
实施如下:
在我看来,这比WCF解决方案更容易实现。
它适用于
显示应用程序不需要是WCF客户端 - 它可以是使用JavaScript访问集线器的浏览器。或者它可以是WCF,如果你想。或者您可以同时支持浏览器和Windows客户端。
此外,它还会优化您的网络负载和服务器工作负载,因为它可以避免任何轮询。接收数据的应用程序会在有新内容可用时通知,而无需询问。
一个潜在的缺点是您必须拥有.Net 4或4.5。对于XSockets,显然有一个非公开的.Net 2版本,但NuGet包是.Net 4。
P.S。
数据流的安全性总是一个问题:o)
答案 2 :(得分:1)
我会切换服务和客户的角色。因为您似乎想要在各种客户端上进行数据收集,所以您不希望在每个客户端上设置和托管WCF服务。
而是编写一个WCF服务,该服务在您的IIS服务器上侦听客户端发送的定期系统信息消息。
然后,您可以创建一个向此WCF服务发送状态消息的客户端。例如,这可以是预定的控制台应用程序或Windows服务。您在要监视的每台服务器上安装此客户端,您唯一需要配置的是中央WCF服务的URL。
此WCF服务又将消息写入SQL Server等数据存储。现在,当您想要从监视应用程序访问记录的消息时,请公开另一个返回消息列表的服务方法。
您可以通过调用该服务从任何客户端(例如网站或WPF / WinForms应用程序)使用此报告状态消息列表。