從閱讀周圍一點點,這是我的理解,只有這樣,才能檢測到客戶端已連接到我的服務是通過編寫自己的代碼。 我正在使用Singleton服務。我想每次客戶端連接到我的服務時顯示一條消息,即客戶端x已連接ip xxx。沒有生成內置事件?我對麼?檢測當客戶端連接到WCF服務
回答
不,我不認爲有對你的要求在WCF提供任何支持。
不知道你想要什麼來實現這一點,無論是。你的服務類(在你的情況下,只是一個實例)實際上沒有任何業務投放消息(我假設在屏幕上) - 這真的不是工作。服務類用於處理請求並提供響應 - 僅此而已。
ServiceHost
類可能更適合此功能 - 但同樣,它的工作實際上是承載服務,啓動WCF運行時等 - 並且它實際上不是UI組件。
什麼你可能做的是
- 有一個管理用戶界面(一個WinForms,控制檯或WPF應用程序)的服務器旁邊的服務上運行,提供管理服務調用
- 定義這兩個服務(例如,使用
netNamedPipe
的結合是完美的內部應用程序的消息) - 當你的「真實」服務獲取呼叫時,它做的第一件事是發送消息到管理界面,然後這可使之間的快速連接拿起那條信息並處理它
這樣的話,你可以清晰地分開你的真正的服務,它的工作(以提供服務),你想要做的,建立一個清楚分開的系統管理員UI的東西。
我實際上已經實施了我自己的connect
,disconnect
和ping
服務方法,我一旦創建了通道,我手動從我的客戶端調用服務方法。通過在我的所有ServiceContract
接口定義(及其實現當然)中將它們用作一種標題部分,它們形成臨時的「基本服務定義」,只需要一點點的剪切 - 粘貼。
connect
和disconnect
的基於字符串的參數將用於發送客戶端信息到服務器,並返回服務器信息和(可能是唯一的連接ID)到客戶端。另外,一組定時參考點也可能會進入其中。
注意如何SessionMode
需要和個人OperationContract
性能IsInitiating
和IsTerminating
明確每種方法規定,最終的結果是什麼,我會在所謂的「單日」的服務,它connect
和disconnect
定義爲唯一的會話書擋。
還要注意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
一個警告:雖然我目前在我的服務類中使用此代碼及其實現,但我還沒有驗證代碼。
- 1. 檢查所有客戶端連接到wcf服務
- 2. 如何檢測tcp客戶端連接到c + +服務器
- 3. 當客戶端連接到服務器時,Java Socket - 服務器到客戶端的連接重置
- 4. WCF:如果服務器斷開連接,我如何檢測客戶端
- 5. 如何檢測WCF服務關閉或從客戶端斷開連接?
- 6. 檢查wcf客戶端連接
- 7. Wcf Duplex:檢索客戶端連接?
- 8. 連接到服務器http客戶端
- 9. 連接PuTTY客戶端到EC2服務?
- 10. C服務器連接到客戶端
- 11. WCF客戶端探測服務
- 12. WCF客戶端使用WS-Security連接到Java SOAP Web服務
- 13. 查找連接到WCF服務的客戶端的IP /名稱?
- 14. WCF服務檢查客戶端超時
- 15. node.js http服務器,檢測何時客戶端斷開連接
- 16. c#檢測客戶端從服務器斷開連接
- 17. 檢測服務器和客戶端之間的連接丟失
- 18. 檢測Web服務中的客戶端斷開連接
- 19. 如何檢測客戶端從node.js服務器斷開連接
- 20. 在分析服務器上檢測LiveQuery連接的客戶端
- 21. Thrift服務器:檢測客戶端斷開連接(C++庫)
- 22. WCF客戶端連接
- 23. 與WCF客戶端連接
- 24. WCF服務 - 客戶端接收CommunicationException
- 25. 當客戶端連接到java服務器時收到通知
- 26. 當一個wcf客戶端連接到該服務時,爲什麼這麼慢?
- 27. 客戶端連接或服務器端?
- 28. WCF與Android客戶端連接,無法連接Android客戶端與WCF服務。這裏是我的代碼
- 29. WCF服務客戶端
- 30. 簡單的Java客戶端 - 服務器:客戶端doent連接到服務器
我的管理用戶界面在我的服務器上運行,但不在我的服務旁邊,它負責啓動和停止我的服務(打開和關閉)。 它也有我的服務實例,這是我在其他地方發佈的問題。所以這是我目前的設置。 正如我的預期,並從您的答案中扣除,如果我想檢測客戶端連接,保留它們的列表,我必須自己做,(跟蹤我自己的代碼中的東西)。 感謝您的及時答覆。 – Tamer 2010-06-28 17:35:23
類似的問題,但是當客戶端連接到服務時,主機程序是否會彈出一個消息框? – ZoomVirus 2014-10-09 10:44:53