这篇文章主要介绍ASP。网络核心中动态WebApi的实现方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
<强>一。前言强>
接触到动态WebApi(动态Web API)这个词的已有几年,是从ABP框架里面接触到的,当时便对ABP的这个技术很好奇,后面分析了一波,也尝试过从ABP剥离一个出来作为独立组件来使用,可是后来因与ABP依赖太多而放弃。十几天前朋友熊猫将这部分代码(我和他在搞事情)成功的从ABP中剥离出来并做了一个简单演示扔给我,经过这么久(实在是太懒_)终于经过一些修改,添加功能,封装,现在已经能作为一个独立组件使用,项目开源在Github (https://github.com/dotnetauth/Panda.DynamicWebApi),希望觉得有用的朋友能给一个明星支持一下。
本文只讲使用,不讲原理,原理放到后面的文章中详细介绍。
<强>二。介绍强>
不管是传统的三层架构,DDD经典四层架构(DDD Lite),亦或是其他具有应用逻辑层(业务逻辑层)的架构,在网络应用程序开发当中,我们的业务逻辑最终都需要经过Web Api来进行调用,这里我们可能会有一个重复的操作:编写业务逻辑→编写Api调用业务逻辑,这种重复性的操作有没有解决办法呢,我们编写完业务逻辑以后便给我们自动生成之前,答案当然是有的。
这里介绍一下本文的主角:<代码> Panda.DynamicWebApi> 代码(https://github.com/dotnetauth/Panda.DynamicWebApi)。源自于ABP的一个可独立使用的,可自动为你的业务逻辑层生成ASP。网络核心WebApi层的开源组件。它生成的API符合Restful风格,可以根据符合条件的类来生成之前,由MVC框架直接调用逻辑,无性能问题,完美兼容大摇大摆来构建API说明文档。
<强>三。使用强>
这里以DDD经典四层架构中的应用逻辑层来讲解。
<强> 1。准备强>
(1)建立两个项目一个是应用逻辑层类库项目,一个是作为生成WebApi主机,ASP。网络核心WebApi项目
<强>(2)编写应用逻辑强>
定义一个应用逻辑接口,所有应用逻辑都应实现它:
public interface IApplicationService { }
定义一个学生管理逻辑接口,继承应用逻辑接口
public interface IStudentAppService : IApplicationService { ,///& lt; summary> ,///根据ID获取学生 ,///& lt;/summary> ,///& lt; param name=癷d"祝辞& lt;/param> ,///& lt; returns> & lt;/returns> ,StudentOutput (int id); ,///& lt; summary> ,///获取所有学生 ,///& lt;/summary> ,///& lt; returns> & lt;/returns> ,List(); ,///& lt; summary> ,///更新学生信息 ,///& lt;/summary> ,///& lt; param name=癷nput"祝辞& lt;/param> ,void 更新(UpdateStudentInput 输入); ,///& lt; summary> ,///更新学生年龄 ,///& lt;/summary> ,///& lt; param name=癮ge"祝辞& lt;/param> ,void UpdateAge (int 年龄); ,///& lt; summary> ,///根据ID删除学生 ,///& lt;/summary> ,///& lt; param name=癷d"祝辞& lt;/param> ,void 删除(int id); ,///& lt; summary> ,///添加学生 ,///& lt;/summary> ,///& lt; param name=癷nput"祝辞& lt;/param> ,void 创建(CreateStudentInput 输入); }
实现学生逻辑管理接口:
public class StudentAppService: IStudentAppService { ,///& lt; summary> ,///根据ID获取学生 ,///& lt;/summary> ,///& lt; param name=癷d"祝辞& lt;/param> ,///& lt; returns> & lt;/returns> ,[HttpGet (“{id: int}“)) ,public StudentOutput Get (int id) ,{ ,return new  StudentOutput (), {Id =, 1,, Age =, 18日,Name =,“张三“}; ,} ,///& lt; summary> ,///获取所有学生 ,///& lt;/summary> ,///& lt; returns> & lt;/returns> ,public List< StudentOutput>, () ,{ ,return new  List() ,{ new 才能;StudentOutput () {Id =, 1, Age =, 18日Name =,“张三“}, new 才能;StudentOutput () {Age  Id =, 2,=, 19日Name =,“李四“} ,}; ,} ,///& lt; summary> ,///更新学生信息 ,///& lt;/summary> ,///& lt; param name=癷nput"祝辞& lt;/param> ,public void 更新(UpdateStudentInput 输入) ,{ ,throw new  System.NotImplementedException (); ,} ,///& lt; summary> ,///更新学生年龄 ,///& lt;/summary> ,///& lt; param name=癮ge"祝辞& lt;/param> ,[HttpPatch (“{id: int}/age")) ,public void  UpdateAge (int 年龄) ,{ ,throw new  System.NotImplementedException (); ,} ,///& lt; summary> ,///根据ID删除学生 ,///& lt;/summary> ,///& lt; param name=癷d"祝辞& lt;/param> ,[HttpDelete (“{id: int}“)) ,public void 删除(int id) ,{ ,throw new  System.NotImplementedException (); ,} ,///& lt; summary> ,///添加学生 ,///& lt;/summary> ,///& lt; param name=癷nput"祝辞& lt;/param> ,public void 创建(CreateStudentInput 输入) ,{ ,throw new  System.NotImplementedException (); ,} null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null ASP。网络核心中动态WebApi的实现方法