源代碼見 http://wcfextension.codeplex.com/
注意:
1) 本來沒打算這麼早開源,這隻是一個比較原始的實作,請勿直接在商業環境使用
2) 請注意本架構的授權條款Apache License 2.0
3) 本架構依賴的外部程式集或架構版權歸原作者所有
4) 架構之後可能會增加很多功能,請關注項目首頁即使獲得最新資訊
解壓縮代碼打開sln檔案後可以看到這樣的結構

Client檔案夾放的是用戶端用到的一些代碼,Server自然是服務端用到的一些代碼
Log是日志相關的一些代碼(四種日志),Config是配置相關的代碼
Setting是架構本身設定的一些代碼(比如配置是否要記錄日志)
其它代碼放在父檔案夾内,當然這裡還放了一些用于釋出nuget包的檔案
至于nuget不想多介紹了(release方式編譯項目後會在ReleasePackages生成nupkg包)
2) WcfExtension.ConfigCenter就是配置服務和配置的背景,配置檔案中需要配置
A)redis的位址以及通知通道名
B)sql server配置資料庫的連接配接字元串
C)配置服務的wcf服務端配置
這裡需要注意幾點:
A)如果你的配置不希望儲存在sql server中,可以重寫WcfConfigService.cs
B)現在的背景非常簡易,就是一個WFWcfConfig.aspx,完全可以重寫
3) WcfExtension.LogCenter就是日志服務和日志的檢視背景,需要配置的東西和2)差不多,隻不過注意要使用不同的端口
WcfLogService.cs同樣是一個簡單的實作,僅供參考,現在實作過程如下:
A)儲存到記憶體隊列
B)幾個線程定時批量把資料儲存到mongodb中
有關ConfigCenter和LogCenter還需要注意,在生産環境中為了高可用性可以使用IIS來承載tcp的wcf服務,做負載均衡。
但是為了測試簡單,在解決方案中有兩個臨時的Console應用程式,用于替代ConfigCenter和LogCenter。
4) WcfExtension.Clients.Console是測試的控制台用戶端,應該隻依賴WcfExtension架構和服務契約也就是WcfExtension.Services.Interface
5) WcfExtension.Hosts.Console是測試的控制台服務端,需要依賴服務接口和服務實作,以及WcfExtension架構
6) WcfExtension.Services.Interface是服務契約,定義了一些簡單的測試方法
7) WcfExtension.Services.Implementation是服務實作,其下的LogService是用來測試服務依賴注入的
8) Libs目錄下是一些依賴的程式集,主要是redis的用戶端、mongodb的用戶端以及unity、log4get、nuget。
因為,可以這麼啟動項目進行測試:
先啟動配置服務和日志服務,然後啟動服務端,最後啟動用戶端。
在運作起來之前,還需要建立表結構和模拟資料(如果怕麻煩可以直接回複包裡面的WcfConfig.bak資料庫檔案),運作WcfExtension.ConfigCenter中的db.sql來建立資料表。
可以直接打開表配置資料也可以使用配置背景,首先建立一個綁定Binding:
然後建立一個服務端點ServiceEndpoint,對應這個綁定:
然後建立一個服務Service:
然後建立服務的叢集ServerFarm:
最後是用戶端的端點ClientEndpoint:
和用戶端通路叢集的權限ClientAccess:
啟動四個項目後可以看到:
1) 日志服務控制台上出現了各種日志
2) 用戶端和服務端都顯示出了發送和接受的消息
3) 如果在背景修改配置,并且點選通知按鈕,用戶端和服務端應該會收到修改通知,然後删除相應的緩存或重新開機服務使得配置立即生效
(其實在生産環境中,不太可能通知服務端重新開機服務)
該說的前面幾次都說了,代碼并不複雜,看代碼就都可以了解了。
作者:
lovecindywang本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。