微服务(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的更多相关文章

  1. 浅谈微服务架构与服务治理的Eureka和Dubbo

    前言 本来计划周五+周末三天自驾游,谁知人算不如天算,周六恰逢台风来袭,湖州附近的景点全部关停,不得已只能周五玩完之后,于周六踩着台风的边缘逃回上海.周末过得如此艰难,这次就聊点务虚的话题,一是浅谈微 ...

  2. 浅谈微服务架构、容器技术与K8S

    关注嘉为科技,获取运维新知 企业应用系统:从单体应用走向微服务架构:从裸金属走向容器. 如果在诸多热门云计算技术诸如容器.微服务.DevOps.OpenStack等之中,找出一个最火的方向,那么可能非 ...

  3. Health Check in eShop -- 解析微软微服务架构Demo(五)

    引言 What is the Health Check Health Check(健康状态检查)不仅是对自己应用程序内部检测各个项目之间的健康状态(各项目的运行情况.项目之间的连接情况等),还包括了应 ...

  4. 手把手教你使用spring cloud+dotnet core搭建微服务架构:服务治理(-)

    背景 公司去年开始使用dotnet core开发项目.公司的总体架构采用的是微服务,那时候由于对微服务的理解并不是太深,加上各种组件的不成熟,只是把项目的各个功能通过业务层面拆分,然后通过nginx代 ...

  5. spring cloud+dotnet core搭建微服务架构:Api授权认证(六)

    前言 这篇文章拖太久了,因为最近实在太忙了,加上这篇文章也非常长,所以花了不少时间,给大家说句抱歉.好,进入正题.目前的项目基本都是前后端分离了,前端分Web,Ios,Android...,后端也基本 ...

  6. spring cloud+.net core搭建微服务架构:服务注册(一)

    背景 公司去年开始使用dotnet core开发项目.公司的总体架构采用的是微服务,那时候由于对微服务的理解并不是太深,加上各种组件的不成熟,只是把项目的各个功能通过业务层面拆分,然后通过nginx代 ...

  7. spring cloud+.net core搭建微服务架构:Api授权认证(六)

    前言 这篇文章拖太久了,因为最近实在太忙了,加上这篇文章也非常长,所以花了不少时间,给大家说句抱歉.好,进入正题.目前的项目基本都是前后端分离了,前端分Web,Ios,Android...,后端也基本 ...

  8. spring cloud+dotnet core搭建微服务架构:服务发现(二)

    前言 上篇文章实际上只讲了服务治理中的服务注册,服务与服务之间如何调用呢?传统的方式,服务A调用服务B,那么服务A访问的是服务B的负载均衡地址,通过负载均衡来指向到服务B的真实地址,上篇文章已经说了这 ...

  9. spring cloud+dotnet core搭建微服务架构:Api网关(三)

    前言 国庆假期,一直没有时间更新. 根据群里面的同学的提问,强烈推荐大家先熟悉下spring cloud.文章下面有纯洁大神的spring cloud系列. 上一章最后说了,因为服务是不对外暴露的,所 ...

随机推荐

  1. [Linux] CentOS 显示 -bash: vim: command not found

    转载自:https://www.cnblogs.com/wenqiangwu/p/3288349.html i. 那么如何安裝 vim 呢?输入rpm -qa|grep vim 命令, 如果 vim ...

  2. Mysql学习笔记整理之引擎

    mysql的引擎: myisam引擎 Mysql 5.5之前默认的存储引擎 数据.索引分别存储 (数据物理磁盘---索引物理磁盘) .MYD 存储数据                      表级索 ...

  3. 第十一周java课堂测试

    Main.java package class_third_copy; import java.util.Scanner; import classthird.Test; import classth ...

  4. 对Servlet执行流程的初步认识

    这里我们以Post方式请求Serclet为例 1.找到 中的URL地址 Form表单的Post请求HelloServlet(Action="HelloServlet")发起时, A ...

  5. ubuntu linux重置密码

    (和网上的有点不一样,记录一下) 1)重启系统,同时长时间按住shift键进入grub菜单:GNU GRUB version 1.99-12ubuntu5(如图一) 2)选择Ubuntu, with ...

  6. Airtest之web自动化(一)

    Airtest之web自动化(一) [此文档有许多涉及到gif动图的地方,请全屏观看]   了解Airtest: 简介: Airtest是由网易团队开发的一款自动化框架,前期运用与游戏测试(通过截图识 ...

  7. 使用 .gitignore 忽略 Git 仓库中的文件

    .gitignore 在Git中,很多时候你只想将代码提交到仓库,而不是将当前文件目录下的文件全部提交到Git仓库中,例如在MacOS系统下面的.DS_Store文件,或者是Xocde的操作记录,又或 ...

  8. springboot 集成Redis单机

    1.redis服务搭建 centos7 搭建redis服务 2.接入相关 pom文件依赖引入 <dependencies> <dependency> <groupId&g ...

  9. MongoDB的可视化工具(Studio 3T)

    ​​ 前面我们已经介绍了MongoDB怎么安装,接下来要安装他的可视化工具——Studio 3T. 先到这下载一个压缩包,百度网盘,https://pan.baidu.com/s/1M8mlWo334 ...

  10. linux系统下使用xampp 丢失mysql root密码 只能远程访问,本地无法连接数据库

    如果在ubuntu 下面 使用xampp这个集成开发环境,却忘记mysql密码. 当出现只能远程访问的,本地无法访问,通常是host改成% 远程访问,本地访问到一个是空壳.这是权限的问题 需要修hos ...