開篇吹牛,吹大牛了各位。
接連幾篇博文,已經將了我們系統常用的東西,主要針對服務端,非桌面系統。
聊了這么久了,最后將這所有內容打包,完成一個系統。可能稱為組件才合適,因為我沒有提供啟動程序。
每一個模塊都是盡量做到公共化,統一化
總結一下:
通信組件,序列化組件,特性反射,擴展方法,結構返回模板,緩存,負載均衡,etcd的注冊中心(這個是在java部分講的,我只是提供了c#版本的客戶端代碼)。反射方法有了。
這樣組合起來,再加上你們的業務模塊,就是一個完整的系統了,任意使用組合。
我自己組合了一個,不知道叫什么名字。暫時就叫特性服務吧。
天下大勢,分久必合,合久必分。
最開始寫代碼,一個系統,一個項目到底。后面分項目,再后面分系統,再后面分布式。
然后運維麻煩了,代碼要少要通用,再次合成通用的,最好一個組件很多功能。高大尚。。。。
現在呢?微服務來了,把你寫的多功能強大系統再分出來。哎。。。。
回到我這里。
根據現在經常用到的三個方面。RPC,MQ另外加上RestFull模型。
統一一下,定義一個特性SrvAttribute,放在類上就是服務名稱,放在方法上就是要暴露的方法。
這樣提供TPC就可以接收HTTP請求了,就是RestFull了。
定義一個公共的接口,服務端實現接口,或者不實現也可以。只要把特性加上就是了。
客戶端實現接口,在實現的接口方法里面,打包自己的參數,方法名稱,以及服務名稱;序列化以后傳遞到服務端
服務端反序列化,然后解析服務名稱,方法名稱,然后反射調用。
這樣就把2者合並了。
MQ怎么辦?涼拌,自己寫個方法傳輸byte[]數組就是了,在服務端寫一個接收注冊的方法就是了。
就一個注冊分發,一個數據接收方法,保持注冊地址對象,就是一個MQ服務了,MQ需要開發服務端功能。
如果再加上etcd的分布式部署,就是一個分布式集群了。
所有代碼項目都上傳了GIT,就是前幾篇博文的地址。
關於反射多說一下。
現在分了幾個平台。
發現Emit確實快,但是它只支持.net framework,沒有支持,.net standar不支持,沒有辦法,就寫了2個相同的。
另外就是動態編譯,也是只有.net framework,所以寫了個客戶端項目,動態編譯實現接口,這樣你只要一個接口庫就可以了,什么都不需要寫,配置寫好就可以了。動態編譯里面自動繼承接口,然后打包方法參數,名稱。定時編譯緩存dll,下次啟動就直接動態加載dll就可以了。RPC你什么都不做,就是用結果,設置通信就可以。安逸吧?
如果是其它平台就得直接實現接口打包參數了。
大吹牛就這樣結束了。剛剛買了一本.net性能的書,等我看完看有沒有和大家吹的。沒有的話就基本這樣了。
很久沒有來csdn了。來了就系統的和大家吹牛皮。