代码之家  ›  专栏  ›  技术社区  ›  CaffGeek

通过wcf公开windows服务

  •  2
  • CaffGeek  · 技术社区  · 16 年前

    我已经创建了一个windows服务来监视网络中的某些特定流量。我现在需要为该服务创建一个用户界面,以便能够实时监视流量,以及更改服务设置的能力。

    不幸的是,我一直纠结于如何获取我的工作服务,并通过wcf将其公开/转换为wcf。

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

    谢谢

    编辑:嗯,我已经通过wcf公开了一些方法,这一切看起来都是必要的。

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

    1 回复  |  直到 16 年前
        1
  •  2
  •   marc_s MisterSmith    16 年前

    好吧,老实说,我不会通过wcf“公开”你的服务。

    我的建议是:

    • 保留当前收集和监视流量的服务
    • 将您可能希望向其他人公开的数据存储到适当的持久存储区(例如数据库)
    • 创建一个单独的wcf服务(托管在第二个windows nt服务或iis中),允许外部使用者获取您收集的数据

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

    • 如果您选择一个基于soap的wcf服务,您将不得不提出一组 服务方式 (大致是 GetDataForToday , GetDataForHour 或者你想提供的任何东西)。在这种情况下,这是您的第一个任务-定义服务方法 服务合同 ,并定义所涉及的数据类型-作为服务方法的参数,以及作为这些方法的返回值(您的 数据合同 )

    • 如果您更喜欢rest,那么您通常不讨论方法,而是将数据视为资源—例如,您可以将每小时的数据集公开为资源,并使用类似于 http://yourserver/YourService/YYYYMMDD/Hour 或者类似的东西-如何定义这些url(统一资源标识符-uri)完全取决于您。每个这样的资源都需要有一个表示(一组字段和属性),并且通常将它们公开为xml和/或json

    有了wcf的灵活性,你甚至可以两者兼得——如果你愿意的话。

    soap是一种更传统的方式——pros是一个文档丰富的接口(您可以得到wsdl-web服务描述,以及一些xsd-xml模式来描述您的数据),它可以被人类和计算机“发现”和解释。在缺点上,soap往往有点“重”,您需要一个特殊的soap客户机/您自己的应用程序来实际获取数据。

    rest是一种更时髦、更现代的方式——你导航到一个url,它会吐回一卡车尖括号(或json文档)。它很快,很容易,很好-但是它不太正式,你没有任何机器可读的服务描述,真的-它更取决于你知道/发现/阅读文档,知道你真正得到的是什么,以及如何解释它。

    嘿,这已经成了一个很长的职位了!!基本上-我会保留您当前的数据收集服务并让它按原样运行,并考虑如何使用单独的wcf服务公开/提供它收集的数据。

    好的介绍网站是 MSDN WCF Developer Center 对于基于soap的wcf方面,以及 MSDN WCF REST Developer Center 对于wcf的其他方面。

    推荐文章