我们有一个 WCF 服务,它使用 BasicHttpBinding 公开几个操作,服务实现是这样的
Public Class MyService
{
private IHandler1 _handler1 = GetHandler1();
private IHandler2 _handler1 = GetHandler12();
private IHandler3 _handler1 = GetHandler3();
Public Void HandleMessage(string msg)
{
_handler1.SomeMethod();
}
Public Void HandleMessage(string msg)
{
_handler1.SomeMethod();
}
Public Void HandleMessage2(string msg)
{
_handler2.SomeMethod();
}
Public Void HandleMessage2(string msg)
{
_handler3.SomeMethod();
}
}
但是我在这段代码中看到的问题是,即使我们收到处理其中一条消息的请求,所有处理程序都已初始化,即 handler1/2/3 我的意思是当客户端调用 HandleMmessage2() 方法时,只有处理程序 _handler2 应该是初始化。实现这一目标的最佳方法是什么?
由于该服务使用不支持会话的 BasicHttpbinding 公开端点,因此 InstanceContextMode 将是 PerCall ,即使来自客户端的 evert 请求不需要它,它也会创建所有处理程序。