最近打算做这样一个事情,一个桌面系统项目既可以一体化部署,作为一个软件一个进程部署,也可以把业务服务化部署。
那一般意味着我们要完全写2套东西,一套是直接UI调用业务,一套是Ui调用RPC。这样比较多操作。
现在打算将业务接口化,UI直接调用工厂返回接口,底层用autofac控制。
另外一套直接模板化生成,将调用的接口模板化生成。
根据配置,分别调用业务了类或者模板生成的类。
这里简单说说模板生成类。
将所有接口调用打包,封装成一个结构,里面包含调用的方法名称,接口名称,以及KV形式的参数。
这样打包的结构再次传入客户端请求类中,请求类根据实际需求处理这个结构体,这样就不需要准备2套。而且开放迅速。
你要做的就是修改这个客户端请求类。
模板生成采用emit生成。当然也可以动态编译。开始采用codedom,后面才知道微软放弃了。
这里就不贴代码了,把代码放在Git上面了。每个接口方法内部调用项目RequestProxy中SrvImplFactory类的方法。
这只是个演示,模板支持方法,属性,事件。SrvImplFactory只是例子,需要自己修改完善。