2010-06-28 119 views
0

從閱讀周圍一點點,這是我的理解,只有這樣,才能檢測到客戶端已連接到我的服務是通過編寫自己的代碼。 我正在使用Singleton服務。我想每次客戶端連接到我的服務時顯示一條消息,即客戶端x已連接ip xxx。沒有生成內置事件?我對麼?檢測當客戶端連接到WCF服務

回答

0

不,我不認爲有對你的要求在WCF提供任何支持。

不知道你想要什麼來實現這一點,無論是。你的服務類(在你的情況下,只是一個實例)實際上沒有任何業務投放消息(我假設在屏幕上) - 這真的不是工作。服務類用於處理請求並提供響應 - 僅此而已。

ServiceHost類可能更適合此功能 - 但同樣,它的工作實際上是承載服務,啓動WCF運行時等 - 並且它實際上不是UI組件。

什麼你可能做的是

  • 有一個管理用戶界面(一個WinForms,控制檯或WPF應用程序)的服務器旁邊的服務上運行,提供管理服務調用
  • 定義這兩個服務(例如,使用netNamedPipe的結合是完美的內部應用程序的消息)
  • 當你的「真實」服務獲取呼叫時,它做的第一件事是發送消息到管理界面,然後這可使之間的快速連接拿起那條信息並處理它

這樣的話,你可以清晰地分開你的真正的服務,它的工作(以提供服務),你想要做的,建立一個清楚分開的系統管理員UI的東西。

+0

我的管理用戶界面在我的服務器上運行,但不在我的服務旁邊,它負責啓動和停止我的服務(打開和關閉)。 它也有我的服務實例,這是我在其他地方發佈的問題。所以這是我目前的設置。 正如我的預期,並從您的答案中扣除,如果我想檢測客戶端連接,保留它們的列表,我必須自己做,(跟蹤我自己的代碼中的東西)。 感謝您的及時答覆。 – Tamer 2010-06-28 17:35:23

+0

類似的問題,但是當客戶端連接到服務時,主機程序是否會彈出一個消息框? – ZoomVirus 2014-10-09 10:44:53

0

我實際上已經實施了我自己的connect,disconnectping服務方法,我一旦創建了通道,我手動從我的客戶端調用服務方法。通過在我的所有ServiceContract接口定義(及其實現當然)中將它們用作一種標題部分,它們形成臨時的「基本服務定義」,只需要一點點的剪切 - 粘貼。

connectdisconnect的基於字符串的參數將用於發送客戶端信息到服務器,並返回服務器信息和(可能是唯一的連接ID)到客戶端。另外,一組定時參考點也可能會進入其中。

注意如何SessionMode需要和個人OperationContract性能IsInitiatingIsTerminating明確每種方法規定,最終的結果是什麼,我會在所謂的「單日」的服務,它connectdisconnect定義爲唯一的會話書擋。

還要注意ping命令將被用作基於定時器的「心跳」呼叫測試服務連接狀態和失敗ALL連接超時,沒有一個單一的配置文件:-)

的目標還要注意,我還沒有確定我的錯誤處理結構,它可能會添加一個或多個方法和/或需要其他類型的更改。

[ServiceContract(SessionMode = SessionMode.Required)] 
    public interface IRePropDalSvr { 
     [OperationContract(IsInitiating=true, IsTerminating=false)] 
     string connect (string pClientInfo); 

     [OperationContract(IsInitiating=false, IsTerminating=true, IsOneWay=true)] 
     void disconnect (string pClientInfo); 

     // ------------------------------------------------------------------------------------------ 
     [OperationContract(IsInitiating=false, IsTerminating=false)] 
     string ping (string pInp); 

     // ------------------------------------------------------------------------------------------ 
     // REST OF ServiceContract DEFINITION GOES HERE 

一個警告:雖然我目前在我的服務類中使用此代碼及其實現,但我還沒有驗證代碼。

相關問題