最近打算做這樣一個事情,一個桌面系統項目既可以一體化部署,作爲一個軟件一個進程部署,也可以把業務服務化部署。
那一般意味着我們要完全寫2套東西,一套是直接UI調用業務,一套是Ui調用RPC。這樣比較多操作。
現在打算將業務接口化,UI直接調用工廠返回接口,底層用autofac控制。
另外一套直接模板化生成,將調用的接口模板化生成。
根據配置,分別調用業務了類或者模板生成的類。
這裏簡單說說模板生成類。
將所有接口調用打包,封裝成一個結構,裏面包含調用的方法名稱,接口名稱,以及KV形式的參數。
這樣打包的結構再次傳入客戶端請求類中,請求類根據實際需求處理這個結構體,這樣就不需要準備2套。而且開放迅速。
你要做的就是修改這個客戶端請求類。
模板生成採用emit生成。當然也可以動態編譯。開始採用codedom,後面才知道微軟放棄了。
這裏就不貼代碼了,把代碼放在Git上面了。每個接口方法內部調用項目RequestProxy中SrvImplFactory類的方法。
這只是個演示,模板支持方法,屬性,事件。SrvImplFactory只是例子,需要自己修改完善。