一. 概述
1. 为什么要选择微服务?
要理解什么是微服务,先从不是微服务的场景说起。<br /> M3 平台是我们已经使用了若干年的平台。 经过几年的发展, M3系统已经成长为一个庞然大物, 拥有从底层数据库引擎、登录认证、配置中心、缓存、权限、流程、消息通知、组织架构、文档附件、以及各种业务模块等所组织堆砌的综合性应用平台。<br /> ![155248j8g7llsalsadn63q.jpg](https://cdn.nlark.com/yuque/0/2020/jpeg/2320676/1596792368199-34a2c978-0606-4176-bb4c-0796783b4c0c.jpeg#align=left&display=inline&height=533&margin=%5Bobject%20Object%5D&name=155248j8g7llsalsadn63q.jpg&originHeight=533&originWidth=800&size=149477&status=done&style=none&width=800)<br /> <br /> 在这个过程中,让人比较诟病的就是M3平台升级的痛苦。 动辄想更新某一个小模块(比如流程、附件、微信)等,但因为各业务模块都是一体的,不得已得做全面升级。<br /> <br /> 而全面升级在开发调试阶段比较好说, 但对于已经稳定运行若干年月的系统,风险就比较大了。<br /> <br /> ** 这现象并非我们特有的, 而是全世界稍微有点规模、持续性的项目普遍面对的难题。并且随着时间推移、功能越做越多、体系越做越大,矛盾只会越积越深。**<br /> <br />** 而微服务以及前后端分离理念,就是为解决上述矛盾而生的。**<br /> <br /> 那么,什么是微服务呢?<br /> 微服务就是提供一系列独立的服务(可以理解成独立网站)给客户使用,并且尽量做到让客户的体验效果和集成式(类M3)没什么区别。<br /> 甚至在一定程度上更能提升体验效果。<br /> <br /> 因此,可以简单的理解成: 微服务就是将原先的集成式平台,依据业务维度拆分成一个个独立的网站,增加项目部署的灵活度,减轻项目更新的风险和难度。<br /> 也便于开发团队之间相互独立。<br /> <br /> 为了让项目模块便于独立部署,我们引入了【微服务】的概念。<br /> <br /> 最典型的模式,就是 登录、权限认证、流程、文档附件、业务模块等几十个功能模块,都散列成一个个的微型小网站,这就是微服务最极端的体现。<br /> <br /> <br /> 同时, 为了便于前端Web页面端开发团队和后端业务端(dll文件)开发团队分工协作,我们引入了【前后端分离】概念。<br />
2.什么是前后端分离?
前端又称网页端。 一般都是 由 js/html/css/vue 等文件构成。负责渲染业务信息到浏览器中。<br /> <br /> 后端又称服务端。预先提供各种各样的API方法,供前端调用。<br /> 和数据库的沟通都是由后端负责。<br /> <br /> 网页端一般都是通过ajax请求,向服务端发出请求, 调取不同的后端API方法,做相应的业务操作,并返回对应的结果。<br /> <br />
3. 总结
微服务和前后端分离 这两个理念, 是时代发展到一定阶段的产物。<br /> <br /> 也是目前比较主流的开发设计方式。<br /> <br /> 根本理念都是: 随着业务需求的日益庞大、繁杂。需要在设计之初,就要从界面、后台层间, 以及业务层面这两个维度,对业务体系做拆分。<br /> <br /> 将传统的集成体系,拆分成三维体系。<br /> 以便于系统日后的开发、维护、升级、扩展。<br /> <br /> 当然,相比之下, M3集成环境在首次部署上是有极大的优势的,很适合初学者。<br /> M3的部署一般三部曲就能搞定: 解压 -> 配置 IIS -> 配置数据库。<br /> <br /> <br /> <br />
4. 名称解释
API: 又称为API接口。 指的是网页端通过 ajax -> url 的访问某个后端服务器开放的方法。<br /> 返回信息一般是 json 格式。
二. 微服务体系
1. 微服务体系的特点
.Net Core框架是FrameWork框架的替代产品。
拥有
- 跨平台: 可以在 Windows、macOS 和 Linux 操作系统上运行。
- 跨体系结构保持一致: 在多种硬件体系结构(包括 x64、x86 和 ARM以及龙芯)上以相同的行为运行代码。
- 兼容性: .NET Core 通过 .NET Standard与 .NET Framework、Xamarin 和 Mono 兼容。
- 开放源代码: .NET Core 平台是开放源代码,使用 MIT 和 Apache 2 许可证。 .NET Core 是一个 .NET Foundation 项目。
- MIT协议是所有开源协议里限制最少的。
- .Net Core具有开源、跨平台、高性能这三个最直接的指标。是企业级应用最理想的环境。可以说除了生态因为历史原因不如Java,其他指标都是碾压性的存在。尤其难能可贵的是,.net 系列从20年前出生开始,就一直秉承容易上手、入门简洁的风格,在企业级应用中一直拥有举足轻重的地位。
再加上从2014年开始,.Net Core摒弃了.net 封闭的陋习,全面拥抱开源界、全面支持多操作系统、多硬件,未来是完全可期的。