浅谈微服务架构与.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系列. 上一章最后说了,因为服务是不对外暴露的,所 ...
随机推荐
- charles 结构体
本文参考:charles 结构体 Charles 主要提供两种查看封包的视图,分别名为 Structure/结构视图 Sequence/序列视图 Structure/结构视图 将网络请求按访问的域名分 ...
- (七十二)c#Winform自定义控件-雷达图
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...
- Nginx反向代理之动静分离
我们已经知道了什么是正向代理与反向代理,这次我们就讲一下Nginx的动静分离的案例,其实质运用的就是反向代理,专门用一台服务器代理服务器上的图片资源. 想使用代理必然要配置代理,配置反向代理,必须要用 ...
- let与var的区别
1.let作用域局限于当前代码块 文章中//后面的均为打印结果 代码1: { var str1 = "小花"; let str2 = "小明"; console ...
- idea设置方法或常量字段上浮显示对应的注释内容
1.进入idea中,如下图进入设置 如图勾选并设置显示延迟时间 打开文件进行鼠标移动测试 可以看到鼠标移动到字段常量或方法上时显示了对应的注释类容
- Mysql的表级锁和行级锁
表级锁 MySQL表级锁分为读锁和写锁. 读锁 用法:LOCK TABLE table_name [ AS alias_name ] READ 释放锁使用UNLOCK tables.可以为表使用别名, ...
- 基于 B/S 端构建的 3D 楼宇自控可视化监控
前言 智慧楼宇和人们的生活息息相关,楼宇智能化程度的提高,会极大程度的改善人们的生活品质,在当前工业互联网大背景下受到很大关注.目前智慧楼宇可视化监控的主要优点包括: 智慧化 -- 智慧楼宇是一个生态 ...
- AVR单片机教程——EasyElectronics Library v1.1手册
索引: bit.h delay.h pin.h wave.h pwm.h led.h rgbw.h button.h switch.h 主要更新: 用枚举类型替换了大部分宏定义: 添加了wave.h. ...
- .Net Core 商城微服务项目系列(七):使用消息队列(RabbitMQ)实现服务异步通信
RabbitMQ是什么,怎么使用我就不介绍了,大家可以到园子里搜一下教程.本篇的重点在于实现服务与服务之间的异步通信. 首先说一下为什么要使用消息队列来实现服务通信:1.提高接口并发能力. 2.保证 ...
- Mysql高手系列 - 第21篇:什么是索引?
Mysql系列的目标是:通过这个系列从入门到全面掌握一个高级开发所需要的全部技能. 这是Mysql系列第21篇. 本文开始连续3篇详解mysql索引: 第1篇来说说什么是索引? 第2篇详解Mysql中 ...