WCF服务是否适合我的要求?

时间:2013-10-31 15:55:03

标签: vb.net wcf wcf-data-services

我一直在研究VB.net中的网络技术,特别是应用程序A向应用程序B发送数据的最佳方式。

从我的研究中我发现了几个选项,我决定使用基本的HTTP协议来使用WCF - 我昨晚花了几个小时调整我的内部服务器IIS配置并创建一个测试WCF应用程序通过函数然后在我的应用程序中使用它,一切似乎没有错误。 (虽然我和DNS在一段时间内有一些内部斗争......)

我现在要尝试收集系统信息,简单的事情,如计算机名称,操作系统,运行服务等 - 但是我想每隔x个时间这样做。

现在我的问题对你们来说是:WCF是一个足够的选择,支持定期收集数据,然后通过IIS将其推出,以便应用程序B接收。

示例工作流程:

  1. 应用程序A (WCF服务) - 运行函数以在15分钟计时器上收集系统信息。
  2. 这是通过中央IIS服务器
  3. 推出的
  4. 应用程序B (对应用程序A中的WCF服务的引用) - 在标签上显示应用程序A的输出(例如)
  5. WCF服务是否支持我提到的内容?这是每15分钟运行一次的功能吗?

    如果我理解WCF服务的主要思想,那就是你可以在WCF服务中创建可用作远程应用程序参考的函数,尽管我看过的示例代码会生成静态数据。

    我想的越多,我认为答案就越容易,在我看来,我说“当然我可以添加一个计时器或其他东西来重新加载功能(甚至是服务),当然当我的应用程序使用引用来提取数据时,它将被更新。

    主要提示:

    • 数据流的安全性不是问题。
    • 资源使用是一个因素。

    感谢您的意见和建议。

3 个答案:

答案 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实现

http://www.asp.net/signalr

和(至少一个)名为XSockets的其他实现

http://xsockets.net/

这两种实现都非常简单易用。

实施如下:

  1. 通知“hub”将托管在IIS
  2. 定期收集数据将在Windows服务中完成,或者只使用Windows计划任务完成。这将收集数据并将其推送到集线器
  3. 客户端将向集线器注册更新,并在服务推送时接收它们
  4. 在我看来,这比WCF解决方案更容易实现。

    它适用于

    1. 收集数据并发送到集线器的多个应用程序
    2. 从集线器获取数据的多个应用程序
    3. 发送数据的所有应用程序都已关闭(只要集线器仍处于运行状态)
    4. 关闭所有接收数据的应用程序的情况
    5. 显示应用程序不需要是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应用程序)使用此报告状态消息列表。