【发布时间】:2018-11-21 21:48:47
【问题描述】:
目前,我在 Visual Studio 2017 中有 2 个解决方案:
- Windows 窗体应用程序
- 托管 WCF 服务类库 (.dll) 的 Windows 服务应用程序
而且我需要在它们之间以循环方式进行通信,如下图所示。数字代表顺序。
问题是,我实际上能够通过使用请求-重放操作合同(由数字 1 和 4 表示)在 WF 和 WCF 应用程序之间进行通信。但我不确定如何完成第 2 步和第 3 步。
WCF 接口代码:
namespace SmithWcfService {
[ServiceContract]
public interface ISmithWcfService {
[OperationContract]
void SendRequest( ); //Operation called by Windows Forms
}
}
WCF 接口实现代码
namespace SmithWcfService {
public class SmithWcfService : ISmithWcfService {
public void SendRequest( ) {
//Ok, now I need to call Windows service application
}
}
}
Windows 服务代码
namespace SmithWindowsService {
static class Program {
static void Main( ) {
ServiceBase[ ] ServicesToRun;
ServicesToRun = new ServiceBase[ ] {
new SmithWindowsService( )
};
ServiceBase.Run( ServicesToRun );
}
}
}
namespace SmithWindowsService {
public partial class SmithWindowsService : ServiceBase {
private ServiceHost host;
public SmithWindowsService( ) {
InitializeComponent( );
}
protected override void OnStart( string[ ] args ) {
host = new ServiceHost( typeof( SmithWcfService.SmithWcfService ) );
host.Open( );
}
}
}
【问题讨论】:
-
在什么意义上你试图在 WCF 服务和 Windows 服务之间进行通信
-
嗯,WCF 基本上是围绕传输机制的一个抽象层。您定义需要交换哪些数据,它负责如何交换这些数据。因此,使用 WCF 在前端应用程序和 Windows 服务之间进行通信完全没有问题。 @BugFinder
-
那你自己的问题就哑了!我在问你对 2 和 3 的期望,而你刚刚说你可以做到...
-
交换自定义数据。从 1 到 2 的同一类型。
标签: c# winforms wcf windows-services