服务类所需的WCF解决方案
我有一个类引发一些事件并执行操作。乙二醇服务类所需的WCF解决方案,wcf,wcfserviceclient,Wcf,Wcfserviceclient,我有一个类引发一些事件并执行操作。乙二醇 class MyService { EventHandler MessageSent; EventHandler StatusReceived; public void StartService(Serviceconfig configObject) { //Intialize serial port with OnSerialPortReceived event handler. }
class MyService
{
EventHandler MessageSent;
EventHandler StatusReceived;
public void StartService(Serviceconfig configObject)
{
//Intialize serial port with OnSerialPortReceived event handler.
}
public void GetStatusForMessage(string messageID)
{
}
public void OnSerialPortReceived(string data)
{
if(data=="123")
MessageSent(this,null);
if(data=="456")
StatusSent(this,null);
}
}
这是一个控制台应用程序,它将在系统启动时启动。现在,当事件服务上触发某个事件时,我们需要一个监控应用程序(基本上是一个具有回调功能的客户端),为此,我们应该使用WCF。并且监视器应用程序调用服务类。在上面的示例中,监视器应用程序将调用GetStatusFormMessage方法。那么现在我们如何使用WCF实现呢。如果使用服务契约将上述类设为服务,则在客户端启动调用之前,不会初始化和启动该类。当系统重新启动时,该类对象将被初始化并启动其功能
我找到了这篇文章。使用这种方法,我的服务将成为发布者客户端,监视器应用程序将成为订阅者客户端应用程序。但是客户端必须调用服务类。因此,我的客户机应用程序应该支持回调,并且应该能够调用服务方法。如何使用WCF实现这一点?注意,监视事件的服务类是单个实例,在应用程序启动时初始化
希望我能找到解决办法。请让我知道更多的澄清。不要试图将您的服务归类为WCF服务。让它成为一个单件,让WCF和它对话 如果您希望事件向监控应用程序触发“事件”,则需要使用双工绑定(我建议在同一台机器上使用NetCpBinding(如果跨机器),或NetNamedPipeBinding)。当监控应用程序连接时,保存其回调通道,并在连接到事件的方法中回调通道 注意:您必须保持会话双方都处于活动状态,因此监控应用程序和服务必须比配置的receiveTimeout(默认情况下为10分钟)更定期地相互触发某些内容,但这可以只是一种“ping”方法,用作保持活动状态 一段时间以前,如果有帮助的话
嗨,我看过你的博客,它是一个很好的博客。如果我将其设置为singleton,则在请求客户端时将创建该项目,对吗?但是在我的例子中,对象已经被创建了。所以我需要创建一个WCF服务,它将与之对话。那么单例WCF对象应该如何与我已经创建的服务对象进行通信呢?对不起,不是WCF单例,而是设计模式意义上的单例,您可以通过多种方式创建它,记住我说过不要将您的服务设为WCF服务。事实上,当ServiceHost不是在第一次请求时打开时,会在中创建一个WCF单例,但我不会将您的服务类绑定到WCFOh!好啊甚至我也不想把我的WCF服务类和我的服务类捆绑在一起。现在我的问题是如何与我的WCF服务类对象和我的服务类交互。需要我的服务类有一个全局对象,以便我可以在WCF singleton中访问它吗?(我不认为这是个好主意)。具有的WCF服务类必须了解服务类,即使是通过抽象(这将使单元测试更容易)。例如,.NET中的单例模式有很好的文档记录。在那篇文章中,您希望使用静态初始化模型,并确保在启动代码中有服务类类型。这将导致静态初始值设定项运行,从而在startupOK创建您的对象。谢谢。这个链接正确吗?它带我去看电影。实际上,在program.cs中,我将启动我的应用程序服务,也将启动singlton WCF服务。那么,现在我如何访问单吨WCF服务中program.cs中的对象进行交互(这就是我真正遇到的问题)。