.NET Core实战项目之CMS 第十章 设计篇-系统开发框架设计

这两天比较忙,周末也在加班,所以更新的就慢了一点,不过没关系,今天我们就进行千呼万唤的系统开发框架的设计。不知道上篇关于架构设计的文章大家有没有阅读,如果阅读后相信一定对架构设计有了更近一部的理解,如果你没有阅读也希望大家能好好阅读一下!其实说白了,架构是为了应对软件系统复杂度而提出的一个解决方案,架构设计的最终目的也就是为了让复杂的问题简单化!今天我们就结合架构设计的思想来进行我们的CMS实战项目的架构设计,接着再设计下开发框架吧。如果你有其他看法或者见解欢迎加入我们的实战项目交流群637326624 跟大伙共同交流!

本文已收录至《.NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划》

作者:依乐祝

原文地址:

写在前面

仔细想想我们的这个极简CMS系统,可以说很简单,简单到都无须进行特殊的架构设计,只需按照你所熟悉的编码方式直接进行快速的编码实现即可,如果做得好的话,访问量上来了你再加一个缓存处理完全能够支撑一定的并发!如下图所示:我们前期先进行单体架构的实现,等后期分布式系列实战课程的时候再讲解如何进行分布式微服务架构的实现。

1544359198075

看到没有,标准的单体架构,只是在数据库层之前加了一个缓存的设计来应对一些并发的情况!既然架构设计确定了,那么我们就进行开发框架的搭建吧!如果架构的复杂点的话,可能涉及到数据库集群,站点集群及负载均衡,可是我们完全没必要那样玩!一个阶段设计一个阶段的架构,要知道天猫也不是刚开始就架构的这么完善支持这么高的并发的!而是经过这么多次双十一的考验之后慢慢完成到今天这个能够支持每秒这么次并发的!说白了,架构是一个演变的过程,而并非设计的越复杂,越完善就表示架构设计的就越好的(有点拗口,自己理解下),而要结合实际,让需求来驱动架构。在分析设计阶段,需要考虑一定的人力与时间去"跳出代码,总揽全局",为业务和IT技术之间搭建一座"桥梁"。

CMS系统开发框架

话不多数,先看下我的项目结构截图吧!

1544368326507

本来想进行很复杂的框架的实现的,仿照DDD的思想进行开发框架的搭建,后来想想何必呢,这么简单的系统搞得那么复杂,严重影响开发效率,反而得不尝试。后来经过深思熟虑后精简精简再精简,斟酌斟酌再斟酌后就有了上面这样的项目结构。乍一看10个项目,是不是吓得马上就要关闭网页了呢?下面我会给你详细讲解每一个项目的作用以及所要实现的功能。

其实明眼人一看这个结构就已经知道了每个模块所要实现的功能了,这样的分层设计可谓简单的都不需要我过多介绍,你都能明白每一个项目是用来干什么的(明白人也可以进行项目的再度融合,甚至简单粗暴的合并到一个项目里面,不过本人更喜欢这种分层的设计感觉结构更清晰)。可是我这里还是要啰嗦两句给你介绍下:

既然微软已经在前两天将正式版的.NET Core SDK升级到了2.2的版本,那么我们的CMS系统就用.NET Core2.2进行搭建吧!当然,你在练习的时候也可以使用2.1进行,没有强制要求。

注意:ASP.NET Core2.2对VisualStudio有一定的要求必须是2017的高版本才能用。其目前的版本是15.8.4 总之尽量不要低于我这个版本,我正准备升级呢!

UI

用户UI层:这个就是我们CMS系统所要呈现的用户界面,而我们得CMS系统又包含后台管理模块以及前台网站模块,因此这个解决方案文件夹下面有两个ASP.NET Core网站项目,留个思考题给你吧,猜猜看哪个项目是后台管理模块,哪个项目是前台网站模块呢?把你的答案写在留言区或者加群跟大伙讨论下吧!

Application

应用层:这个层提供对用户界面的接口访问,用户界面层的两个模块如果想跟数据库交互都需要通过这个层来进行。这个应用层起到用户界面跟数据库操作进行解耦的作用。

Repositonry

仓储层:这个层主要就是跟数据库的交互了,任何跟数据库有关的操作都在这层来进行实现,看了上面的图相信你已经猜到了,前期我只是实现SqlServer的仓储实现,至于其他数据库的实现你只需要再建一个Czar.Cms.Repository.数据库名 的仓储实现就可以了!这里我们也是采用依赖抽象而不依赖具体实现所以方便后期的扩展。

Entity

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsssgd.html