WCF 服务如何成为通信渠道?

Posted

技术标签:

【中文标题】WCF 服务如何成为通信渠道?【英文标题】:How is WCF service a communication channel? 【发布时间】:2016-11-24 14:04:06 【问题描述】:

我的项目要求我执行一个 Windows 服务,该服务执行一些后端操作,同时 WPF GUI 向用户显示信息并允许用户进行一些配置。更准确地说,我的后端服务无限期地执行反恶意软件操作,而 GUI 需要与服务通信以获取数据和启用/禁用操作。

现在,对于 GUI 和我的服务之间的这种通信,我在这个论坛上进行了研究,大多数人建议使用托管在我的原始服务中的 WCF 服务。我已经做到了,在我的后端服务 Onstart() 函数中托管了一个 WCF 服务。我的 GUI 还可以引用 WCF 服务,并且按钮可以调用 WCF 托管函数。

现在我不明白 WCF 将如何与托管它的服务进行通信。这是因为使用 WCF 的目的是在 GUI 和我原来的 windows 服务之间建立一个通信通道。我想将 Windows 服务功能公开给 GUI,而不是我在 WCF 服务中编写的那些。我研究了很多,找不到相关的文章。当在 GUI 上按下按钮时,请有人帮我调用我的 Windows 服务功能。如果有文章已经存在,请向我介绍它们。我的时间不多,我们将不胜感激。

【问题讨论】:

您应该能够从您的 WCF 服务调用您的 Windows 服务的方法。有很多方法可以做到这一点,都是标准的C#,没有什么特别的秘密。你能更详细地解释一下你卡在哪里了吗? 我不能简单地在我的 WCF 服务中引用我的 windows 服务,然后调用它的方法。这将导致循环依赖,因为 WCF 服务在我的 Windows 服务中被引用,因为它托管它。那么如何使我的 Windows 服务方法在 wcf 服务中可用。现在 wcf 服务与我的 Windows 服务是隔离的。你能给我一个方法吗? 我不知道你的项目是如何构成的,也不知道你有什么代码,我需要猜测一下。也许两者都有一个共同的接口dll?这将是解决它的正常方法。还是让一个回调?还是活动? 我实际上是一名 c++ 开发人员,这是我第一次接触 c# 和 .net,所以如果我的问题听起来太明显,我深表歉意。 我在数据库的某处存储了一组恶意软件规则。当用户单击 UI 上的“禁用”按钮时,需要禁用这些规则。如果我使用您的建议并将禁用功能移动到一个通用 dll 中,那么 wcf 服务和 windows 服务都可以访问它,但是特定于数据库中那个时刻存在多少规则的信息仅适用于 windows 服务.所以功能可以共享,但我如何共享 Windows 服务的特定信息。您能否详细说明一下回调和事件? 【参考方案1】:

如果您的 WCF 服务应该调用 Windows 服务的方法并且它们位于不同的程序集中,那么最简单的方法可能是从接口中的 Windows 服务中提取您要调用的方法。将该接口放入 WCF 服务的程序集中,并以一个这样的对象作为构造函数参数。然后反对它。在你的windows服务中引用WCF服务程序集,让windows服务实现所需的接口后,将服务传递给WCF服务。

【讨论】:

以上是关于WCF 服务如何成为通信渠道?的主要内容,如果未能解决你的问题,请参考以下文章

大数据获客的精准,已经成为企业获客渠道主要-运营商大数据获客_联通大数据获客营销平台

微软开源 WCF 分布式服务框架,并入 .NET 基金会项目

必示AIOps精准预警银行应用故障

如何让智能客服成为企业的生产力工具?

如何使用 WCF 在 Windows 服务和 Windows 窗体之间进行通信?

和渠道商成为真朋友,CDEC大会做对了什么?