通过WCF公开Windows服务

时间:2010-04-19 19:45:02

标签: wcf windows-services

我已经创建了一个Windows服务,可以监控网络中的某些特定流量。我现在需要为服务建立一个用户界面,以便实时监控流量,以及改变服务设置的能力。

不幸的是,我不知道如何使用我的工作服务,并通过/将其转换为WCF来进行公开。

我甚至不知道从哪里开始。

由于

编辑:嗯,我已经通过WCF公开了一些方法,看起来它们都可以在必要时运行。

一旦我意识到ServiceHost构造函数可以接受一个实例而不仅仅是一个类型,因为完成这项工作的类没有无参数构造函数,所以一点都不难。

1 个答案:

答案 0 :(得分:2)

嗯,老实说,我不会通过WCF“揭露”你的服务。

我的建议是:

  • 保留当前收集和监控流量的服务
  • 将您可能希望向其他人公开的数据存储到合适的持久存储(例如数据库)
  • 创建一个单独的WCF服务(托管在第二个Windows NT服务或IIS中),允许外部消费者获取您收集的数据

根据您当前的数据,您必须分析您可用的数据类型,然后您需要决定向可能对该数据感兴趣的其他人公开该数据的内容和方式。

  • 如果您选择基于SOAP的WCF服务,则必须提出一组服务方法(类似于GetDataForToday,{{ 1}}或者你想要提供的任何东西)。在这种情况下,这是您的第一个任务 - 定义服务方法(您的服务合同,在WCF中说话),并定义涉及哪种数据 - 作为服务方法的参数,以及作为返回这些方法的值(您的数据合同

  • 如果您更喜欢REST,那么您通常不会谈论方法,而是将您的数据视为资源 - 例如您可以将每小时数据集公开为资源并使用类似GetDataForHour之类的URL导航到它 - 您如何定义这些URL(统一资源标识符 - URI)完全取决于您。每个这样的资源都需要有一个表示 - 一组字段和属性 - 你通常会将它们公开为XML和/或JSON

凭借WCF的灵活性,您甚至可以实现两者兼顾 - 如果您愿意的话。

SOAP是更传统的做事方式 - 专业人员是一个记录良好的界面(您可以获得WSDL - Web服务描述,以及一些XSD - 用于描述数据的XML模式),可以“发现”和由人类和计算机解释。在缺点方面,SOAP往往有点“沉重”,你需要一个特殊的SOAP客户端/你自己的应用程序来实际获取数据。

REST是一种更时尚,更现代的做事方式 - 您导航到一个URL并向后吐出一大堆尖括号(或JSON文档)。它很快,很简单,很棒 - 但它不那么正式,你没有得到任何机器可读的服务描述,真的 - 你需要知道/找出/阅读文档以了解你是什么真的回来了,如何解释它。

p,这已成为一个长篇大论!基本上 - 我会保留您当前的数据收集服务并让它按原样运行,并考虑如何使用单独的WCF服务公开/提供它收集的数据。

好的介绍网站是基于SOAP的WCF方面的MSDN WCF Developer Center,以及基于REST的WCF方面的MSDN WCF REST Developer Center