当前位置:首页 >> 偏方秘方 >> .NET 6 Minimal API 的实战经验分享

.NET 6 Minimal API 的实战经验分享

发布时间:2023-03-14

typeof(IBaseModule).Assembly.GetTypes.Where(p => p.IsClass && p.IsAssignableTo(typeof(IBaseModule))).Select(Activator.CreateInstance).Cast;

foreach(var module in modules){module.AddModuleRoutes(builder);}

}

2. Repostitory 的系统能并存吗 ?

这是毫无疑答可以继续用于。通过 Repository 的系统你不需要去关心你所用于的 ORM 是什么 , 与 ORM 的所有处理过程都在 Repository 层中的处理掉 , 通过这样去减少作用力, 包括越来越好的可次测试性。在合作开发者文档中的,有所列的非常

在 Minimal API 用于 Repository Pattern 在适度上和有别于的 MVC 不能相同 ,这里是我用 Repository 的系统指令集的 Minimal API 的图片

注意一点有人认为 Repository 的系统看起来过时 ,和过度指令集 , 但我觉得还是并不有必要的,因为这样可以越来越好管理机构你的新项目。

3. 相反流出

相反流出彻底解决了运用于程序如何独立于对象创始人形式的答题。当您需要可装配的运用于程序单元次测试时,这并不有用。随着运用于程序的规模和不确定性的增长,相反流出可帮助您越来越轻松地越来越改运用于程序。在 Core 中的有并不好用的相反流出形式 , 这点在 Minimal API 也是。由于我们针对系统模块去管理机构 ,所以在相反流出时也可以针对模块系统去透过 。所列是我针对模块相反流出的新设计, 结合 Repository 的系统以及上面提到的 ModuleExtension.cs 透过的调整 , 我也把关于数据连接专用的相反流出也抽象了出来。

publicstaticclassModuleExtensions{

staticreadonlyList moduleList = newList;

privatestaticIEnumerable GetModules( ) {varmodules = typeof(IBaseModule).Assembly .GetTypes.Where(p => p.IsClass && p.IsAssignableTo( typeof(IBaseModule))) .Select(Activator.CreateInstance).Cast;

returnmodules; }

publicstaticvoidRouters( thisIEndpointRouteBuilder builder ) {

foreach( varmodule inmoduleList) {module.AddModuleRoutes(builder);}

}

publicstaticvoidAddIoC( thisIServiceCollection services ) {

foreach( varmodule inGetModules( )) {module.AddModuleIoC(services);moduleList.Add(module);}

}

publicstaticvoidAddGlobalConfig( thisIServiceCollection services ) {services.AddScoped;services.AddScoped;}

}

注意一些人口众多 , 虽然在 Minimal API 上 ,我们的相反流出虽然把相同的Services 注册了单例给 RequestDelegate 所调用 , 但在作为模板传送时,要填充 [FromServices] 属性ID才有效 , 如下

app.MapGet( "/Course/GetCourse", ( [FromServices] ICourseService courseService , int typeID)=> { returncourseService.GetCourseList(typeID); });

Minimal API or Web API

在 Core 中的合作开发 API 时,你 90% 都在用于 Core MVC。而当你用于 Core MVC 指令集 Web API 时 , 你但会挖掘出看起来多样 , 你需要符合 Core MVC 的所有要求 。而 Minimal API 正好彻底解决了这些答题 , 尤其对于一些只做 API 或者 入门的合作开发者, 只需要简洁的预定义就能透过时类似 Node.js 一样的指导工作 。有人答我 Minimal API 但会转用有别于的 Web API 吗 ?我可以告诉大家不但会。还是那句话 , 必需符合新项目需求的作法才是正道的。

小 结

在碧原生的上世纪 , Minimal API 是 .NET 的又一把利器 。.NET 6 的 Minimal API 要用好 ,严格来说是还是用到不少原本科学,像 Module 的构建形式,我参考了开源的 Carter , 像 Repository 的系统还是不能变 ,当然还是那些看重的语法 C# , 这就是我们常说是的 ”万变不离其中的“ 。Minimal API 不是要转用 Web API , 越来越多是给合作开发者多一个必需 。作为 .NET 进修挑战赛科学点的补充 , 希望能给各位乒乓越来越深刻了解 Minimal API 在实际运用于场景的高难度 。本次的示例预定义也放于我的 GitHub 上了 ,如果各位乒乓感兴趣可以访答该链接获取完整的预定义。

开源的 Carter

获取完整的预定义

特别自然资源

进修 Minimal API , 再三访答该链接

进修 Repository 的系统 , 再三访答该链接

妳你念完了本文~相信你一定有一些感想、看法、答题想要表达。欢迎在批评家区外畅所欲言,期待听到你的“声音”哦!

同时,喜欢的以下内容也切勿记起转发给你的乒乓们,妳你的默许!

关注合作开发者中的国MSDN

进修 Minimal API

湖北皮肤病医院哪最好
宁波看妇科哪间医院好
沈阳妇科医院
杭州看白癜风去哪家好
天津看妇科哪家最好
标签:
友情链接: