常见的Web应用程序架构

资料:Common web application architectures | Microsoft Learn

微软的这篇文章,讨论了常见的web应用程序架构。大概可以分为三类:

1,新建的asp.net Core web项目,单体架构,在单个项目场景中,通过使用文件夹来实现关注点分离。如图:

 

单体架构随着业务发展,可能需要新加很多文件夹,各个文件夹之前无法清晰的呈现依赖关系,项目会逐渐变的混乱,为了解决这些缺点,会进行演进。

应用程序通常会演变成多项目解决方案,其中每个项目都被认为位于应用程序的特定层中。

 

随着应用程序变得越来越复杂,管理这种复杂性的一种方法是根据应用程序的职责或关注点来分解应用程序。

这种方法遵循关注点分离原则,可以帮助组织不断增长的代码库,以便开发人员可以轻松找到实现某些功能的位置。不过,分层架构除了提供代码组织之外,还提供了许多优点。

通过分层架构,应用程序可以对哪些层可以与其他层进行通信实施限制。

常见架构示意图:

 

 

 

解决方案示例图片:

 实际上,最常见的名字直接就是xx.Web、xx.BLL、xx.DAL、xx.Model、xx.BusinessCommon、xx.Tools;

xx是项目页面名称,xx.BusinessCommon可以和xx.Model放在一起,或者和xx.BLL放在一起,因为它经常需要依赖xx.Model;

 

Clean architecture

这是一个更复杂的架构。

遵循依赖倒置原则以及领域驱动设计 (DDD) 原则的应用程序往往会达到类似的架构。多年来,这种架构有过很多名字。第一个名字是六角形架构,其次是端口和适配器。最近,它被称为洋葱架构或清洁架构。后一个名称“清洁架构”在本电子书中用作此架构的名称。

 

 

请注意,实线箭头表示编译时依赖项,而虚线箭头表示仅运行时依赖项。

通过干净的架构,UI 层在编译时与应用程序核心中定义的接口一起工作,并且理想情况下不应该知道基础设施层中定义的实现类型。

然而,在运行时,应用程序需要执行这些实现类型,因此它们需要存在并通过依赖项注入连接到应用程序核心接口。

 

下面这张图片,显示了按照这些建议构建的 ASP.NET Core 应用程序架构的更详细视图。

 

对于整体应用程序,应用程序核心、基础设施和 UI 项目都作为单个应用程序运行。运行时应用程序架构可能类似于图 :

 

Clean architecture,是对多层架构的进一步总结和设计规划,比较复杂。可能部分项目是不需要的,但是经验不足时又难以把控。

如果不好把握,可以借鉴下该架构,然后自己在自己的多层架构上进行演化;

 

posted on 2023-06-29 10:36  荆棘人  阅读(210)  评论(0编辑  收藏  举报

导航