同一解决方案中的ASP.NET Core 5 MVC / RazorPages和WebAPI项目

隆尼克斯

许多站点分为两个部分:

  • www.example.com供访客使用的公共MVC / RazorPages服务器渲染的应用
  • app.example.com面向客户和管理员的私有WebAPI应用程序(可通过SPA访问)

这两个应用程序共享很多东西,例如代码,数据库,样式,因此最好将它们放在一个解决方案中,并可能分成多个项目。我希望可以通过调整标准配置(例如Startup.cs来做到这一点

该文档不涉及这种情况。有多种解决方案可以解决此问题,但是它们适用于框架的较旧版本

对于ASP.NET Core 5,该如何完成?

皮涅罗

我要说的是,您可以按照与您的需求以及如何设计解决方案的体系结构,测试,部署过程等相关的方式以不同的方式进行操作。


一个唯一的应用程序

您可以通过简单的方式在同一个Web项目中公开Web API和带有前端的应用程序。然后,例如,通过映射控制器,可以指定哪个是哪个。

  • API控制器脚手架示例:
[ApiController]
[Area("api")]
[Route("[area]/[controller]")]
public class ResourceController : ControllerBase
{
    ...
}
  • WebApp控制器支架示例:
public class FeatureController : Controller
{
    ...
}

(请注意,MVC控制器需要Controller基类。对于API控制器,ControllerBase足够了。)

关于Startup应用程序的,在控制器和路由之间执行默认映射可能就足够了:

app.UseEndpoints(endpoint =>
{
    endpoint.MapDefaultControllerRoute();
});

使用这种方法,您甚至可以根据路由映射不同的中间件类:

app.UseWhen(context => context.Request.Path.StartsWithSegments("/api"), appBuilder =>
   {
       appBuilder.UseMiddleware<ApiRelatedMiddleware>();
   })
   .UseWhen(context => !context.Request.Path.StartsWithSegments("/api"), appBuilder =>
   {
       appBuilder.UseMiddleware<FrontEndRelatedMiddleware>();
   });

至于应用程序的其他需求,您可以注册所需的服务。


分离的应用程序:

但是,这种“简单”的方法可能会给您的应用程序带来过多的复杂性,因为它只是一个应用程序,但是例如身份验证,授权,日志记录或部署之类的东西可能有不同的要求。测试也可以不同。

此外,还必须确保在上游管理每个路由的访问和可见性。

由于这些原因和更易于理解的体系结构,在大多数情况下,我宁愿拆分项目。

遵循多层或什至是干净架构的方案(Microsoft doc here)将解决大多数问题。

应用程序之间的公共部分自然会位于公共层中,因为例如,它们将链接到业务逻辑或基础架构。然后,两个Web应用程序都可以引用所需的项目。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

同一解决方案中的MVC和Web Api项目

来自分类Dev

在同一解决方案中,前端ASP.NET MVC4作为一个项目,而ASP.NET Web API作为另一个项目-如何从前端调用WebAPI?

来自分类Dev

我的asp.net MVC解决方案需要一个缓存解决方案

来自分类Dev

ASP.NET-单一解决方案,MVC和WebApi项目,每个都有单独的模型吗?

来自分类Dev

从MVC 4知道ASP .NET MVC 5解决方案中的Filters文件夹在哪里

来自分类Dev

ASP.NET MVC 5,身份,Unity容器解决方案体系结构

来自分类Dev

同一解决方案中属于不同项目的页面之间的ASP.NET重定向

来自分类Dev

从同一解决方案MVC中的不同项目访问EF ConnectionString

来自分类Dev

同一解决方案中的MVC和Web API项目

来自分类Dev

在一个ASP.NET MVC 5解决方案中具有单独的项目

来自分类Dev

在ASP.NET 5 / MVC 6中区分MVC和WebAPI

来自分类Dev

是否可以在同一解决方案中使用单元测试项目中的Selenium测试ASP.NET MVC Web项目?

来自分类Dev

如何在同一Visual Studio解决方案中设置ASP Classic和ASP.NET WebForm-在ASP.NET WebForm中重写ASP Classic页面

来自分类Dev

无法找到ASP.NET 5类库项目并将其添加到解决方案中

来自分类Dev

ASP.NET MVC 6(ASP.NET Core或ASP.NET5)中的友好URL

来自分类Dev

ASP.NET 5多个项目的一种解决方案

来自分类Dev

如何在同一解决方案中从4.6.1项目引用多目标.NET Core类库?

来自分类Dev

在同一解决方案中,如何从.NET Framework类库项目访问属于.NET Core Web API项目的appSettings.json?

来自分类Dev

ASP.Net Web和WCF项目在同一解决方案中

来自分类Dev

将ASP.NET项目和MVC3组合在一个解决方案中

来自分类Dev

在同一解决方案中,前端ASP.NET MVC4作为一个项目,而ASP.NET Web API作为另一个项目,如何从前端调用WebAPI?

来自分类Dev

如何从同一ASP.NET MVC 4项目中的另一个解决方案访问模型

来自分类Dev

需要在ASP.NET MVC 5解决方案中创建代码以接收和发送JSON字符串服务器到服务器

来自分类Dev

同一解决方案中属于不同项目的页面之间的ASP.NET重定向

来自分类Dev

VS2015解决方案中的ASP.NET CORE项目如何解决其他库引用?

来自分类Dev

设计用于水平缩放的 Asp.Net MVC 5 分层解决方案

来自分类Dev

Asp.Net Core v1.1 从同一解决方案中的另一个项目获取继承的类名

来自分类Dev

为什么将 .Net Standard 和 .Net Core 项目混合在一个解决方案中?

来自分类Dev

现有 .NET Core MVC 解决方案中的 Angular 不起作用

Related 相关文章

  1. 1

    同一解决方案中的MVC和Web Api项目

  2. 2

    在同一解决方案中,前端ASP.NET MVC4作为一个项目,而ASP.NET Web API作为另一个项目-如何从前端调用WebAPI?

  3. 3

    我的asp.net MVC解决方案需要一个缓存解决方案

  4. 4

    ASP.NET-单一解决方案,MVC和WebApi项目,每个都有单独的模型吗?

  5. 5

    从MVC 4知道ASP .NET MVC 5解决方案中的Filters文件夹在哪里

  6. 6

    ASP.NET MVC 5,身份,Unity容器解决方案体系结构

  7. 7

    同一解决方案中属于不同项目的页面之间的ASP.NET重定向

  8. 8

    从同一解决方案MVC中的不同项目访问EF ConnectionString

  9. 9

    同一解决方案中的MVC和Web API项目

  10. 10

    在一个ASP.NET MVC 5解决方案中具有单独的项目

  11. 11

    在ASP.NET 5 / MVC 6中区分MVC和WebAPI

  12. 12

    是否可以在同一解决方案中使用单元测试项目中的Selenium测试ASP.NET MVC Web项目?

  13. 13

    如何在同一Visual Studio解决方案中设置ASP Classic和ASP.NET WebForm-在ASP.NET WebForm中重写ASP Classic页面

  14. 14

    无法找到ASP.NET 5类库项目并将其添加到解决方案中

  15. 15

    ASP.NET MVC 6(ASP.NET Core或ASP.NET5)中的友好URL

  16. 16

    ASP.NET 5多个项目的一种解决方案

  17. 17

    如何在同一解决方案中从4.6.1项目引用多目标.NET Core类库?

  18. 18

    在同一解决方案中,如何从.NET Framework类库项目访问属于.NET Core Web API项目的appSettings.json?

  19. 19

    ASP.Net Web和WCF项目在同一解决方案中

  20. 20

    将ASP.NET项目和MVC3组合在一个解决方案中

  21. 21

    在同一解决方案中,前端ASP.NET MVC4作为一个项目,而ASP.NET Web API作为另一个项目,如何从前端调用WebAPI?

  22. 22

    如何从同一ASP.NET MVC 4项目中的另一个解决方案访问模型

  23. 23

    需要在ASP.NET MVC 5解决方案中创建代码以接收和发送JSON字符串服务器到服务器

  24. 24

    同一解决方案中属于不同项目的页面之间的ASP.NET重定向

  25. 25

    VS2015解决方案中的ASP.NET CORE项目如何解决其他库引用?

  26. 26

    设计用于水平缩放的 Asp.Net MVC 5 分层解决方案

  27. 27

    Asp.Net Core v1.1 从同一解决方案中的另一个项目获取继承的类名

  28. 28

    为什么将 .Net Standard 和 .Net Core 项目混合在一个解决方案中?

  29. 29

    现有 .NET Core MVC 解决方案中的 Angular 不起作用

热门标签

归档