互動我對託管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