多平台统一管理软件接口,如何实现多平台统一管理软件接口
323
2022-06-07
远程工作已经一个月了,最近也算是比较闲,每天早上起床打个卡,快速弄完当天要做的工作之后就快乐摸鱼去了。之前在用 ABP 框架(旧版)的时候就觉得应用服务层写起来真的爽,为什么实现了个 IApplicationService 的空接口就可以变成 Web API,可惜的是之前一直没空去研究这一块的原理及其实现,园子里也找不到相关实现原理的文章(旧版 ABP 的倒是有,但是 asp.net core 无法参考)。最近闲起来,就看了一下 abp vnext 的源码,并且也参考了一下晓晨Master 介绍的 Panda.DynamicWebApi。我自己也简单实现了一遍动态 Web API,不禁感叹 asp.net core 设计之精妙。
abp vnext:https://abp.io
Panda.DynamicWebApi:https://github.com/pdafx/Panda.DynamicWebApi
这里先感谢这两个库的相关人员,没有他们的工作,本文也出现不了。另外在此声明,本文意在探究其实现原理并实现一个简易版本,若无把握请勿用于生产环境。
首先先创建我们的解决方案如下:
因为动态 Web API 这一功能是与业务无关的,而且为了复用,我们应该把这一功能的实现写到一个单独的类库当中。上图中 Demo 项目是 asp.net core 3.1 版本的 Web API 项目,用于演示我们的简易动态 Web API,而 SimpleDynamicWebAPI 的 .net standard 2.0 项目则是我们的简易动态 Web API 项目。
要实现动态 Web API,首先要做的第一件事情就是要有一个规则,来判定一个类是不是动态 Web API。在 abp vnext 当中,主要提供两种方式,一个是实现 IRemoteService 接口(实际开发过程中一般都是实现 IApplicationService 接口),另一种方式标记 RemoteServiceAttribute。而在 Panda.DynamicWebApi 中,则是实现 IDynamicWebApi 接口并且标记 DynamicWebApi。因为本文是要实现简易版本,因此只选空接口方式。在 SimpleDynamicWebAPI 项目中创建如下空接口:
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~