基于REST风格的前后端分离的Web服务架构的.NET Framework实现第1讲《系统架构及环境篇》

       研究REST风格的Web服务架构已经有很长时间了,在现实当中也在几个大型IT系统上运用过这个架构。这是我第一次在博客上发表文章,一直以来,我都很喜欢研究最新的架构和技术,总感觉要写点什么,把自己的业余时间的研究经历,以及工作当中的项目经验通过文章的形式发表出来,这样可以让更多的人学习到我的经验,也算是自己对中国的IT界尽的一点绵薄之力吧。

       在各种各样的软件架构中,微服务架构应该是现在比较流行的,特别是基于REST风格的微服务架构,更是在软件行业中运用得比较广泛。这里要声明一下,我写这个讲座的目的,完全是实战型的,也就是说,我不打算去介绍这些基础概念。这些基础概念的东西,可以通过百度去了解。在这里,我是打算通过一个实际可以运行的系统把REST风格的Web服务架构给大家展现出来。所以,我下面写的东西,基本上是以现实项目的形式来展开的。

       微服务的好处,就在于前后端之间的耦合性较低,通过把前后端分离开来,可以实现一个后端支撑多种前端的架构模式。也就是说,不管前端是什么类型,比如说PC端、移动端、Pad端等等,后端都可以通过服务的方式,通过传输JSON或者XML数据格式来支撑这些五花八门的前端。这样,有利于项目的管理,也有利于项目的测试,可以很好的保证项目的质量。

       好了,题外话就说这么多吧,让我们立即进入项目的实战。

       做IT项目的第一步,一定是技术选型,也就是选择与项目团队本身技术风格贴近的技术路线。这里,我就不过多的涉及项目管理的内容了,一切以实现项目的技术为准。首先要介绍一下用到的各种技术框架。

       前端部分用到的技术模块是:HTML、JavaScript和jQuery v1.12.3。

       后端部分用到的技术模块是:Microsoft Visual Studio 2015、.NET Framework 4.5.2、Entity Framework 6、LINQ和WebAPI。

       数据库用的是:Microsoft SQL Server 2016。

       开发语言选择的是C#,后端和前端之间传输数据的格式为JSON,由于采用的是微软的解决方案,所以网站部署环境我选择的是Internet Information Services (IIS)。

       能够实现REST风格的微服务的解决方案有很多,比如说Java和Python都可以实现,这里我只是选择了微软的解决方案,这个实现起来相对于方便一些,实现的原理其实都大同小异,也就是说,学会微软的解决方案实现,那么其余的解决方案的实现也就没有什么难度了。

       我要实现的这个项目,项目名称为RestDemo,分别包含前端和后端两个子项目,子项目名称前端为FrontEnd,后端为BackEnd,整个项目的架构如下图所示。

基于REST风格的前后端分离的Web服务架构的.NET Framework实现第1讲《系统架构及环境篇》

       RestDemo项目架构图

       这里前端Web服务器的访问源可以是任何的终端,我这里只列出了个人电脑、平板和手机三种,前端服务器也不仅限于Web一种,可以是任何形式的前端访问服务器。终端访问前端服务器,这里是通过HTML来进行访问的,前端服务器和后端服务器中间通过WebAPI服务层进行连接。后端服务器通过暴露出服务接口的方式,通过JSON数据格式来提供前端服务器访问。

       在后端服务器的架构当中,我采用了传统的三层架构模式,业务逻辑层通过使用LINQ语言来实现对数据库的各种操作。数据访问层通过实体框架模型实现ORM映射,来对数据库进行访问。

       通过查看以上项目架构图,大家可以清楚的知道后面的实现里面每一步所对应的项目架构的具体位置,IT界有句名言:一图抵千言,说的就是这个意思,用再多的语言来形容,也不如画一张图来得清楚。

       第一讲的内容差不多就是这些,下一讲,我会通过对照项目架构图来具体搭建出项目的开发环境。