我有一個基於NetTCP綁定的WCF應用程序。在客戶端應用程序中,我將它的代理類對象創建爲靜態。此客戶端應用程序可能會在部署後運行4-8小時。基本上在登錄窗口,我正在創建和初始化DataServiceClient代理類(主要是數據庫插入&更新)並在整個我的應用程序中使用相同的對象,直到用戶關閉主窗口。 創建代理類的靜態對象是否有任何不利影響(性能明智)?如果是的話,我該如何避免這種情況。在使用靜態對象之前,我在每個窗口(需要的地方)都創建了單獨的對象,但是這增加了窗口加載時間。靜態WCF代理類對象
我如何提高WCF性能。我對它的表現感到滿意,但這可能是我的幻想。
4
A
回答
3
沒有錯,使用相同的實例,但要確保你的錯誤處理是好的。否則,當發生錯誤時,代理對象將進入故障狀態,並且必須重新啓動整個應用程序。當狀態改變時,您可以附加一些事件。 代理對象進入故障狀態後,您必須創建一個新的代理對象,無法恢復出錯的代理對象。
我發現使用消息頭可以減少實際需要公開的方法數量,但這取決於您的服務的功能。 否則,我會建議儘可能使用流媒體。儘可能保持數據儘可能小。使用二進制格式化程序。
1
看起來你的客戶端是一個Windows窗體應用程序 - 靜態服務代理應該確定你,只要你沒有做任何多線程或者回調的代理等從本質上講,在這樣的情況下, ,您需要將訪問權限同步到靜態變量。
籠統地談,WCF性能得以提升
- 精心設計的服務合同 - 它應該是矮胖的接口,而不是健談這樣的服務調用數量被減少
- 選擇合適的結合 - TCP綁定會比HTTP綁定更快,但它會是.NET合法性,並且可能無法通過互聯網工作,因爲其他端口將被阻止。如果您的同一臺機器上通信,那麼命名管道綁定將是最快的模式
相關問題
- 1. 靜態類對象
- 2. 靜態對象
- 3. '靜態' 對象
- 4. 將靜態類型的對象展開爲動態對象
- 5. Android處理靜態數據庫對象
- 6. 在WCF中傳遞代理對象asyncState
- 7. 對靜態IP使用代理服務
- 8. WCF處理對象
- 9. ASP.Net靜態對象
- 10. 從類對象訪問靜態變量
- 11. 實例化類的靜態對象
- 12. 模板中的靜態類對象C++
- 13. MVC對象實例或靜態類?
- 14. 爲類創建對象爲靜態
- 15. 全局靜態類與對象
- 16. 使用靜態類作爲對象
- 17. Moq靜態類中的對象
- 18. c#靜態類/結構對象列表
- 19. 派生接口對WCF代理類
- 20. C++靜態對象中的類的靜態數據成員和靜態方法?
- 21. Wcf對象類型
- 22. C++ - 非本地靜態對象vs本地靜態對象
- 23. WCF類中的靜態方法
- 24. 如何在WCF中使用靜態對象?
- 25. 雙工WCF + COM對象的靜態集合
- 26. 如何在WCF中的進程間共享靜態對象?
- 27. 如何抽象靜態類
- 28. 靜態屬性抽象類
- 29. 靜態函數/類..推理?
- 30. 如何將靜態類包裝到非靜態實例對象中(動態)
我選擇了WCF b'coz我的客戶端應用程序需要在服務器上訪問數據。我的應用就像分佈式POS應用程序。所以WCF只包含使用存儲過程的數據庫訪問。 – 2010-08-14 13:00:58
聽起來很直截了當,我不希望有任何問題。使用靜態代理對象可以提高性能,因爲您不必爲每次調用創建一個新頻道,但我不確定是否會真正注意到它。 – flayn 2010-08-16 16:53:17
對不起,如果我是這種類型的實現的故障處理鏈接,你會很痛苦嗎?或者你在try catch中說出靜態方法的所有方法,如果失敗,則更新靜態實例? – Seabizkit 2016-10-13 12:25:50