我有一個課程引發了一些事件並執行操作。例如服務類別所需的WCF解決方案
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。並且監視器應用程序調用服務類。在上面例如GetStatusForMessage方法將由監視器應用程序調用。那麼現在我們怎樣才能實現使用WCF。如果將上述類作爲服務合同的服務,它將不會被初始化並啓動,直到客戶端發起呼叫。這個類對象將被初始化並在系統重新啓動時啓動它的功能。
我發現這篇文章http://msdn.microsoft.com/en-us/magazine/cc163537.aspx。通過這種方法,我的服務將成爲發佈者客戶端和監視器應用程序將成爲訂戶客戶端應用程序但客戶端必須打電話給服務類。所以我的客戶端應用程序應該支持這兩個回調,並且它應該能夠調用服務方法。我怎樣才能實現這個使用WCF?請注意,監視事件的服務類是單個實例,並在應用程序啓動時進行初始化。
希望我會得到解決方案。請讓我知道更多的澄清。
嗨,我已經看到你的博客,它是一個很好的博客。如果我把它作爲單身人士,當客戶被要求時,會創建對象嗎?但在我的情況下,該對象已經創建。所以我需要創建一個WCF服務,它將與之交談。那麼單身WCF對象應該如何與我已經創建的服務對象進行通信。 –
抱歉 - 不是WCF單身人士,而是設計模式意義上的單身人士 - 您可以通過多種方式開始創建它 - 記住我說過不要讓您的服務成爲WCF服務。實際上,當ServiceHost打開時不是在第一個請求時創建的一個WCF單例 - 但我不會將您的服務類綁定到WCF –
哦!好。即使我也不想將我的WCF服務類綁定到我的服務類。現在我的問題是如何與我的WCF服務類對象和我的服務類進行交互。需要我的服務類的全局對象,以便我可以在WCF單例中訪問它? (我不認爲這是個好主意)。 –