为了推广.Net Core,微软为我们提供了一个开源Demo-eShopOnContainers,这是一个使用Net Core框架开发的,跨平台(几乎涵盖了所有平台,windows、mac、linux、android、ios)的,基于微服务架构的,运行在容器中的小型应用,其不仅展示了.Net Core的跨平台性,更展示了VS2017的强大,所有代码都在VS2017下开发。从名字上可以看出,这是一个运行在容器上的电子店铺应用,利用Docker的跨平台性,使我们可以“build once, run anywhere”。
一、介绍
eShopOnContainers是基于微服务架构和Docker容器的一个简单的.Net Core的应用。目前微服务架构如火如荼,docker技术也发展迅速,微软在这时推出这个Demo,其用意可想而知,虽说这个Demo还不能完全应用到生产环境,但对于我们开发者来说,可是非常好的学习资料,无论你是稍作修改还是利用架构重新开发,学习这样一个Demo都是非常有必要的,这让我想起以前学习BlogEngine.Net。
二、架构
我们看下微软提供给我们的架构图
从左到右我们看到有2个虚线框,左边是各个客户端应用,右边是假设在Docker上的web应用、微服务应用和数据库。
在Demo中,微软根据不同功能分别搭建了多个service,而且在设计这几个service的时候,微软又使用了不同的方式来实现,如下图所示:
以上是微软在Demo中展示的四种services,你还可以使用不同的框架,不同的数据库完成你的微服务搭建,这就是微服务为何如此流行的原因了。我可以利用任何语言,任何数据库都能搭建我的服务,无论我的调用端使用的何种语言,何种系统。
三、源代码
这套架构在Github上开源,地址:https://github.com/dotnet-architecture/eShopOnContainers
我们可以通过git把源代码clone下来:
我们看到里面有3个sln,建议用vs2017打开,如果你安装了完整版,你可以打开eShopOnContainers.sln,不过一般对于初学者来说,我们还是打开eShopOnContainers-ServicesAndWebApps.sln解决方案。
可以看到在解决方案中已经涵盖了webapp和service app,我们的教程也是以这个solution为准。
四、必要环境:
之前说过我们的应用是跨平台的,可以运行在任何支持Docker的操作系统之上,但在我们开发调试的时候,我们需要相应的环境才能进行调试(当然你也可以使用iisexpress进行调试)
1、64bit Windows 10 Pro
2、开启Hyper-V(微软的虚拟机)
如果我们是win10之前的版本,我们虽然可以安装Docker Toolbox,但是没办法利用VS2017进行Docker调试,运行时会报错,为了这教程,我决定把我电脑升级到Win10,这样才能更好的展示。
如果你想在之前的系统下进行调试运行,除了安装Docker Toolbox外,您还需要安装:
1、NodeJS
2、Bower
Docker for Windows 在win10或者server 2016上有2种类型的容器,Linux container 和Windows Container,这里我们只需要使用Linux Container即可(默认)。我们的教程只针对Services和WebApp,微软建议设置Docker的使用内存是4096M(4G)和CPU 3,如果你要运行完整版(包含手机客户端),那你需要为Dockere配置16G内存。
我个人建议的话,你最好有台专门放数据库的机器,否则一个mssql-linux-sql docker都需要4G内存,不用说还需要搭建一个redis。
我们在学习的时候,我们不一定要使用Docker进行调试,利用iis express也可以,用哪种方式不重要,重要的是学习。
五、学习步骤:
本系列讲解的都是以ServicesAndWebApps.sln代码为准,我们将先从微服务学习,再看web部分的代码结构。大致的顺序如下:
1、Identity service
2、Catalog Service
3、Ordering Sevice
4、Basket Service
5、WebApp Mvc
6、WebSPA

写在最后:
前段时间比较忙,但一直非常关注.Net Core的发展,在之前的builder大会上,2.0的惊艳亮相,彻底让我相信微软会不惜余力的发展.Net,也使我等.Net Developer感觉到春天到了,至此为天下所有.Net Developer致敬,我们等了10年啊。
为什么挑这个架构来说呢,因为这是微软写的,很有教学意义,而且现在微服务和Docker概念越来越火,目前的公司是基于服务做的(还没有到达微服务概念),在部署、开发、维护、扩展上都有很多不便,所以这个学习对我来说非常重要。
第一篇比较偏废话些,后面会围绕代码和架构和设计模式进行讲解,欢迎大家订阅。最后来一张效果图

开篇有益-解析微软微服务架构eShopOnContainers(一)的更多相关文章

  1. Identity Service - 解析微软微服务架构eShopOnContainers(二)

    接上一篇,众所周知一个网站的用户登录是非常重要,一站式的登录(SSO)也成了大家讨论的热点.微软在这个Demo中,把登录单独拉了出来,形成了一个Service,用户的注册.登录.找回密码等都在其中进行 ...

  2. Catalog Service - 解析微软微服务架构eShopOnContainers(三)

    上一篇我们说了Identity Service,因为其基于IdentityServer4开发的,所以知识点不是很多,今天我们来看下Catalog Service,今后的讲解都会把不同的.重点的拿出来讲 ...

  3. 微软微服务架构eShopOnContainers

    为了推广.Net Core,微软为我们提供了一个开源Demo-eShopOnContainers,这是一个使用Net Core框架开发的,跨平台(几乎涵盖了所有平台,windows.mac.linux ...

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

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

  5. EventBus In eShop -- 解析微软微服务架构Demo(四)

    引言 大家好像对分析源码厌倦了,说实在我也会厌倦,不过不看是无法分析其后面的东西,从易到难是一个必要的过程. 今天说下EventBus,前几天园里的大神已经把其解刨,我今天就借着大神的肩膀,分析下在e ...

  6. 基于微服务架构、运行于容器中的.NET Core示例应用eShopOnContainers

    eShopOnContainers 是 <.NET Microservices – Architecture for Containerized .NET Applications>这本微 ...

  7. 微软微服务eShopOnContainers示例之EventBusRabbitMq解析与实践

    eShopOnContainers eShopOnContainers是微软官方的微服务架构示例,GitHub地址https://github.com/dotnet-architecture/eSho ...

  8. Java生鲜电商平台-SpringCloud微服务架构中网络请求性能优化与源码解析

    Java生鲜电商平台-SpringCloud微服务架构中网络请求性能优化与源码解析 说明:Java生鲜电商平台中,由于服务进行了拆分,很多的业务服务导致了请求的网络延迟与性能消耗,对应的这些问题,我们 ...

  9. Java生鲜电商平台-秒杀系统微服务架构设计与源码解析实战

    Java生鲜电商平台-秒杀系统微服务架构设计与源码解析实战 Java生鲜电商平台-  什么是秒杀 通俗一点讲就是网络商家为促销等目的组织的网上限时抢购活动 比如说京东秒杀,就是一种定时定量秒杀,在规定 ...

随机推荐

  1. mysql中 decimal、numeric数据类型

    例 如:salary DECIMAL(5,2) 在这个例子中,5 (精度(precision)) 代表重要的十进制数字的数目,2 (数据范围(scale)) 代表在小数点后的数字位数.在这种情况下,因 ...

  2. 【学而思】利用shouldComponentUpdate钩子函数优化react性能以及引入immutable库的必要性

    凡是参阅过react官方英文文档的童鞋大体上都能知道对于一个组件来说,其state的改变(调用this.setState()方法)以及从父组件接受的props发生变化时,会导致组件重渲染,正所谓&qu ...

  3. android-studio-bundle-141.2178183首次执行Hello World的时候出现ADB not responding. If you'd like to retry, then please manually kill "adb.e的错误

    这是由于有其他程序在占用adb.exe要使用的端口5037,打开命令提示符cmd,输入指令netstat -aon|findstr 5037查看在使用此端口的程序,如 8036即为占用该端口号的PID ...

  4. (转)使用string.Format需要注意的一个性能问题

    今天,我在写C#代码时,突然发现一个最熟悉的陌生人 —— string.Format.在写C#代码的日子里,与它朝夕相伴,却没有真正去了解它.只知道在字符串比较多时,用它比用加号进行字符串连接效率更高 ...

  5. Entity Framework查询注意

    首先我们看下where的方法,直接查看定义(定义如下),其实一种是对IEnumerable的扩展,一种是对IQueryable的扩展,直接看最常用的,其实区别就在IEnumerable的扩展的参数是系 ...

  6. CF #335 div1 A. Sorting Railway Cars

    题目链接:http://codeforces.com/contest/605/problem/A 大意是对一个排列进行排序,每一次操作可以将一个数字从原来位置抽出放到开头或结尾,问最少需要操作多少次可 ...

  7. C语言学习第五章

    今天要进行一个重要元素数组的学习了.这一章要掌握什么是数组,数组怎么样命名,数组怎么样使用,以及一些常见的错误和需要注意的事项. 一.      数组的基本概念 数组是可以在内存中连续存储多个元素的结 ...

  8. stl_config.h基本宏

    四.宏: (其实呢, 我们所有的宏都包含在了 "stl_config.h"头文件中.) //这些宏是怎么判断是否需要定义:是否有指定的宏,还有一些特定的编译器也可能支持. 4.1. ...

  9. bzoj4514 [Sdoi2016]数字配对

    Description 有 n 种数字,第 i 种数字是 ai.有 bi 个,权值是 ci. 若两个数字 ai.aj 满足,ai 是 aj 的倍数,且 ai/aj 是一个质数, 那么这两个数字可以配对 ...

  10. 博弈论(Game Theory) - 04 - 纳什均衡

    博弈论(Game Theory) - 04 - 纳什均衡 开始 纳什均衡和最大最小定理是博弈论的两大基石. 博弈不仅仅是对抗,也包括合作和迁就,纳什均衡能够解决这些问题,提供了在数学上一个完美的理论. ...