自從轉移戰場之后,比以前忙多了,博客也沒能及時跟上,原本准備繼續mvc系列,但是在那邊技術比較陳舊還沒能用得上,話說有3年沒接觸這玩意了,東西也
都忘了差不多了,既然再次接觸,我也就繼續溫習溫習,記錄下在用wcf的過程中走過的一些奇葩路,好了,這篇看看第一個問題。
首先wcf中有一個概念叫做“服務是端點的集合”,也就是說你可以在app.config下的 serviceModel中定義幾個endpont,就比如下面的代碼。
那定義幾個endpoint有什么好處呢?如果這樣的話wcf的servicehost類就可以監聽這兩個端口,一個給“異構系統”用的,比如java,php。。。還有一個那就是msmq,
這個就可以在.net系統中互通了,好了,有個這個概念之后,我遇到了一個場景就是。
玩wcf必須支持集群,這樣就方便我們后續擴展,就比如我右邊部分的話,有3個wcf,中間就是一個router服務,里面就存放這三個endpoint,我的客戶端只需要連
接router服務就好了,然后我的router服務將三個endpoint撈出來,隨機或者取模的方式拿出一個endpoint,這樣就起到一個地址轉向的作用,如下圖:
然后問題就卡在這個地方了。如何取出這幾個endpoint節點。。。因為我需要里面的address地址,由於自己才疏學淺,用了最笨的方法,將app.config 作為xml,
然后我再用xmlDocument來讀取。。。丑代碼就不發了,但是下午的時候我就在想,wcf的代理類,它是怎么讀到endpoint的呢???我敢肯定它絕對不是用
xmlDocument的。然后一個想法就來了,用ILSpy調試一下proxy代碼,說干就干。
當我找到了(ClientSection)ConfigurationHelpers.UnsafeGetSection(ConfigurationStrings.ClientSectionPath); 方法的時候,我頓時興奮了,因為我知道這
個離我的答案不遠了。。。然后就一股勁的看這個UnsafeGetSection方法,終於的終於。。。。原形畢露。。。。
當我試出來之后,我就快速的coding了一下,,果然。。。
結果可能很簡單,不過這可能更像我的探索之旅,不過其中的喜悅只有當事者明白,這種探索估計在職業生涯中都不會忘記~~~