浅谈微服务架构与.Net Core
微服务(microservice)这个概念是2012年出现的,2014年3月Martin Fowler在他的个人网站(https://martinfowler.com/articles/microservices.html)中是这样说到的:
The term "Microservice Architecture" has sprung up over the last few years to describe a particular way of designing software applications as suites of independently deployable services. While there is no precise definition of this architectural style, there are certain common characteristics around organization around business capability, automated deployment, intelligence in the endpoints, and decentralized control of languages and data.
“微服务架构”一词在过去几年中兴起,描述的是将软件应用程序设计为可独立部署服务套件的特定方式。虽然没有对这种架构风格的精确定义,但其具有一些共同的特性,如围绕业务能力自动化部署、智能端点、对语言及数据的“去集中化”控制等等。
通俗的讲,我们可以这样认为:传统系统的开发,我们将整个系统分为表示层、服务层、业务逻辑层、数据访问层进行开发,但最终我们将这所有的代码编译在一起发布,这样做也有它的优点,比如开发简单、不存在分布式管理,但这样也有缺点,比如:一个小的bug可能导致整个应用程序的崩溃、系统业务之间代码耦合度高不易于维护、开发不灵活,若有新的业务需求只能往原有代码上加逻辑,这样对开发团队成员要求高,若团队成员更替频繁,新成员必须先熟悉团队的开发框架,很难适应这种开发模式、还有随着系统业务增多,功能增加,数据量越来越大,更是无法满足高并发下的业务需求;若我们采用微服务架构,那就将我们整个系统拆分为多个业务,将每个业务做成一个服务,服务之间采用HTTP(也可以使用消息队列RoocketMQ,Kafaka)通信,而且每个服务可以采用不同的开发语言、使用不同的存储方式,根据不同业务的并发需求,我们可以单独对某个服务做集群部署,增强系统的负载能力,由于每个服务都是独立部署的,每个服务的修改和部署对其他服务没有影响,当然,微服务也有一些缺点,比如:代码的重复,某些底层功能需要被多个服务所用,为了避免将“同步耦合引入到系统中”,有时需要向不同服务添加一些代码,这就会导致代码重复;开发人员需要考虑分布式系统的问题,如网络延迟、异步机制、系统容错性、分布式事务等;另外运维开销及成本也会增加,微服务架构可能需要运行数十个独立的服务,并可能需要支持多种语言和环境,对运维人员的要求也比较高。
小结:微服务架构有很多吸引人的地方,在拥抱微服务之前,我们要根据团队的实际情况以及项目实际情况选择是否适合采用该架构。
.NET Core是适用于 windows、linux 和 macos 操作系统的免费、开源托管的计算机软件框架,是微软开发的第一个官方版本,具有跨平台 (Windows、Mac OSX、Linux) 能力的应用程序开发框架 (Application Framework),未来也将会支持 FreeBSD 与 Alpine 平台,也是微软在一开始发展时就开源的软件平台 。
由于 .NET Core 的开发目标是跨平台的 .NET 平台,因此 .NET Core 会包含 .NET Framework 的类库,但与 .NET Framework 不同的是 .NET Core 采用包化 (Packages) 的管理方式,应用程序只需要获取需要的组件即可,与 .NET Framework 打包式安装的做法截然不同,同时各包亦有独立的版本线 (Version line),不再硬性要求应用程序跟随主线版本。
.NET Core的优势:
.NET Core 3.0现在支持了WPF和Windows Forms的开发,同时还支持UWP,WPF和Windows Forms三者间的混合开发,这为开发人员提供了灵活性,可以将UWP的现有接口引入Windows窗体和WPF中。
.NET Core 更适合跨平台的开发。 .NET Core 应用支持Windows,Linux和Mac OS。微软很受欢迎的代码编辑器 Visual Studio Code 支持Windows,Linux和Mac OS。VS Code还支持智能提示和调试,许多第三方代码编辑器(如Sublime、Emacs和VI)也都是使用.Net Core开发的。
.NET Core支持微服务架构,它允许跨平台服务与.NET Core一起使用,包括使用.NET Framework、Java、Ruby或其他语言开发的服务。
.NET Core的模块化,轻量级和灵活性,使在容器中部署.NET Core应用程序变得更加容易。而容器可以部署在任何平台包括云,Linux和Windows上,. Net Core在Docker和Azure Kubernetes Service上都运行良好。
.NET Core每个版本之间的兼容性很好。你可以在同一台电脑上面同时运行不同版本的应用。
浅谈微服务架构与.Net Core的更多相关文章
- 浅谈微服务架构与服务治理的Eureka和Dubbo
前言 本来计划周五+周末三天自驾游,谁知人算不如天算,周六恰逢台风来袭,湖州附近的景点全部关停,不得已只能周五玩完之后,于周六踩着台风的边缘逃回上海.周末过得如此艰难,这次就聊点务虚的话题,一是浅谈微 ...
- 浅谈微服务架构、容器技术与K8S
关注嘉为科技,获取运维新知 企业应用系统:从单体应用走向微服务架构:从裸金属走向容器. 如果在诸多热门云计算技术诸如容器.微服务.DevOps.OpenStack等之中,找出一个最火的方向,那么可能非 ...
- Health Check in eShop -- 解析微软微服务架构Demo(五)
引言 What is the Health Check Health Check(健康状态检查)不仅是对自己应用程序内部检测各个项目之间的健康状态(各项目的运行情况.项目之间的连接情况等),还包括了应 ...
- 手把手教你使用spring cloud+dotnet core搭建微服务架构:服务治理(-)
背景 公司去年开始使用dotnet core开发项目.公司的总体架构采用的是微服务,那时候由于对微服务的理解并不是太深,加上各种组件的不成熟,只是把项目的各个功能通过业务层面拆分,然后通过nginx代 ...
- spring cloud+dotnet core搭建微服务架构:Api授权认证(六)
前言 这篇文章拖太久了,因为最近实在太忙了,加上这篇文章也非常长,所以花了不少时间,给大家说句抱歉.好,进入正题.目前的项目基本都是前后端分离了,前端分Web,Ios,Android...,后端也基本 ...
- spring cloud+.net core搭建微服务架构:服务注册(一)
背景 公司去年开始使用dotnet core开发项目.公司的总体架构采用的是微服务,那时候由于对微服务的理解并不是太深,加上各种组件的不成熟,只是把项目的各个功能通过业务层面拆分,然后通过nginx代 ...
- spring cloud+.net core搭建微服务架构:Api授权认证(六)
前言 这篇文章拖太久了,因为最近实在太忙了,加上这篇文章也非常长,所以花了不少时间,给大家说句抱歉.好,进入正题.目前的项目基本都是前后端分离了,前端分Web,Ios,Android...,后端也基本 ...
- spring cloud+dotnet core搭建微服务架构:服务发现(二)
前言 上篇文章实际上只讲了服务治理中的服务注册,服务与服务之间如何调用呢?传统的方式,服务A调用服务B,那么服务A访问的是服务B的负载均衡地址,通过负载均衡来指向到服务B的真实地址,上篇文章已经说了这 ...
- spring cloud+dotnet core搭建微服务架构:Api网关(三)
前言 国庆假期,一直没有时间更新. 根据群里面的同学的提问,强烈推荐大家先熟悉下spring cloud.文章下面有纯洁大神的spring cloud系列. 上一章最后说了,因为服务是不对外暴露的,所 ...
随机推荐
- python中os模块再回顾
先看下我的文件目录结构 F:\PYTHON项目\ATM购物车\7月28 在此目录下的文件如下: 封装.py 模块os.sys复习.py 运行当前的文件是模块os.sys复习.py 1.获取当前文件所在 ...
- 01 (H5*) Vue第一天
目录 1:什么是Vue.js 2:MVC和MVVM. 3:为什么要学习前段框架 4:框架和库的区别 5:怎么使用Vue. 6:常见的Vue指令 7: 五大事件修饰符 8:在vue中使用class样式 ...
- oracle 11g 下载安装 使用记录
Oracle 11g 使用记录 1.下载oracle快捷安装版: (1)下载连接:https://pan.baidu.com/s/1ClC0hQepmTw2lSJ2ODtL7g 无提取码 (2)去 ...
- Qt for Android开发入门
1. Qt for Android环境搭建 1.1 打包需要的工具 1.2 JDK安装 如果之前配置过,就可以跳过这一步. 下载java jdk 64:java jdk 1.8 x64 ...
- CentOS6.x环境通过yum命令在线安装或重装zookeeper-server
一.环境描述: 在CentOS6.x系统环境下,使用yum命令的形式安装zookeeper-server,由于我这里是重新安装zookeeper-server,所以在正式开始之前我需要将原本的zook ...
- opencv目标检测之canny算法
canny canny的目标有3个 低错误率 检测出的边缘都是真正的边缘 定位良好 边缘上的像素点与真正的边缘上的像素点距离应该最小 最小响应 边缘只能标识一次,噪声不应该标注为边缘 canny分几步 ...
- Linux下查看版本信息
Linux下如何查看版本信息, 包括位数.版本信息以及CPU内核信息.CPU具体型号等. 1.# uname -a (Linux查看版本当前操作系统内核信息) 2.# cat /proc/ ...
- Pots POJ 3414
/* *POJ 3414 *简单模板bfs *编程应该为了方便理解,尽量提供接口 */ #include<cstdio> #include<algorithm> #includ ...
- 如何编写高质量的 JS 函数(3) --函数式编程[理论篇]
本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/EWSqZuujHIRyx8Eb2SSidQ作者:杨昆 [编写高质量函数系列]中, <如何 ...
- 数据库系统概论——SQL
[toc] 一.SQL查询语言概览 视图 从一个或几个基本表导出的表 数据库中只存放视图的定义而不存放视图对应的数据 视图是一个虚表 用户可以在视图上再定义视图 基本表 本身独立存在的表 SQL中一个 ...