互动我对托管WCF服务和其他业务课程自之间的互动相当简单的设计问题。服务器端WCF服务:如何引用/与其他服务器组件
这里是WCF服务合同:
/// <summary>
/// Represent requests on hardware components made by a client to the controler service
/// </summary>
[ServiceContract(CallbackContract = typeof(IHardwareServiceCallback))]
public interface IHardwareService
{
[OperationContract(IsOneWay = true)]
void OpenLeftDrawer();
[OperationContract(IsOneWay = true)]
void OpenRightDrawer();
}
服务实现在服务器上调用
public class HardwareService : IHardwareService
{
public void OpenLeftDrawer()
{
}
public void OpenRightDrawer()
{
}
}
一类的目的是处理有关客户的业务逻辑
class DrawerRequestManager
{
// Server side Business logic to handle OpenDrawer requests from client
}
托管场景
Uri adrbase = new Uri(srvConfig.Address);
var host = new ServiceHost(typeof(HardwareService), adrbase);
host.AddServiceEndpoint(typeof(IHardwareService), srvConfig.Binding, srvConfig.Address);
host.Open();
由于这是管理服务实例生命周期的主机,什么是有道处理服务实例和业务逻辑类(DrawerRequestManager
的为例)之间的联系。
我使用IoC容器,但不使用IOC容器的时候我也有兴趣在响应中。
在此先感谢!
答案取决于'DrawerRequestManager'类实例的生存期限制。有时它必须是单身,有时你可以创建任意数量的实例 - 取决于你如何与硬件通信。如果你给出更多的细节限制,那么可以提供一些东西。 –
'DrawerRequestManager'是一个注册的IOC单身人士,在这里访问硬件是无关紧要的,因为它将由'DrawerRequestManager'引用的其他子层来处理。 – Bruno