开篇有益-解析微软微服务架构eShopOnContainers(一)

为了推广.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(微软的虚拟机)

3、安装Docker for Windows

如果我们是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概念越来越火,目前的公司是基于服务做的(还没有到达微服务概念),在部署、开发、维护、扩展上都有很多不便,所以这个学习对我来说非常重要。

第一篇比较偏废话些,后面会围绕代码和架构和设计模式进行讲解,欢迎大家订阅。最后来一张效果图

相关文章:

  • Microsoft发布.NET架构指南草案

原文地址:http://www.cnblogs.com/inday/p/6908515.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/325409.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

十面阿里,菜鸟,天猫,蚂蚁金服题目总汇

转载自 十面阿里,菜鸟,天猫,蚂蚁金服题目总汇 虽然天猫,蚂蚁金,菜鸟都归属阿里旗下,但每个面试官问的问题都不一样,相同点主要在流程方面。 面试开始会让自我介绍,主要业务架构…

React打包运行

项目打包运行 npm run build //生成打包文件 npm install -g serve //全局下载服务器包 serve build //通过服务器命令运行打包项目 访问: http://localhost:5000 //浏览器访问

端午将至……想和程序猿Coding个粽子行不行?

端午将至……都说程序猿无所不能……不造 Coding个粽子行不行? Build Tour 2017 世界巡回展已经开始倒计时……大家都报完名了么? 反正,M姐现在已经安排了我软的程序猿们不远万里的来到中国,他们将会在上海和北京两地,…

Android音频处理 PCM格式

Android音频处理——通过AudioRecord去保存PCM文件进行录制,播放,停止,删除功能 Android音频开发(2):使用AudioRecord录制pcm格式音频 AudioTrack读取PCM

《白鹿原》金句摘抄(二)

白赵氏已经脱了裤子,用被子偎着下半身,一只手轻轻地拍着依偎在怀里的小孙子牛犊,嘴里哼着猫儿狗儿的催眠曲儿,轻轻摇着身子,看着儿子嘉轩临睡前过着烟瘾。她时不时地把儿子就当成已经故去的丈夫,那挺直腰板…

两年摸爬滚打 Spring Boot,总结了这 16 条最佳实践

转载自 两年摸爬滚打 Spring Boot,总结了这 16 条最佳实践 Spring Boot是最流行的用于开发微服务的Java框架。在本文中,我将与你分享自2016年以来我在专业开发中使用Spring Boot所采用的最佳实践。这些内容是基于我的个人经验和一些熟知的Spring Boot…

把本地文件上传到gitee

第一步 先克隆远程文件到本地 第二步 上传本地文件到远程

《白鹿原》金句摘抄(三)

人说前悔容易后悔难。三十几名士兵按三个班分头进入不同的村庄,射杀一批吊起来的公鸡母鸡白鸡黑鸡芦花鸡杏黄鸡肉红鸡帽儿鸡,腾起一片血雨肉雹,扬起一片五彩缤纷的鸡毛,留下一摊血红的土地,然后宣布:一亩一…

【活动】HoloLens 黑科技等你来探秘

微软全息眼镜(HoloLens)是微软最新推出的混合现实头显设备。酷炫的全息图像和包括语音控制和手势控制的全自然交互手段给用户带来前所未有的体验,目前已经在制造、医疗、建筑、娱乐等多个行业展现了非常好的应用前景和市场潜力。HoloLens既是…

Java int 转大端序、小端序

采用小端法, 字节的排序是从最无意义的字节到最有意义的字节。 而大端法中, 字节的排序是从最有意义的字节到最无意义的字节。 public static byte[] intToByteBig(int n) {byte[] b new byte[4];b[0] (byte) (n >> 24 & 0xff);b[1] (byt…

面试必备:30 个 Java 集合面试问题及答案

转载自 面试必备:30 个 Java 集合面试问题及答案 Java集合框架为Java编程语言的基础,也是Java面试中很重要的一个知识点。这里,我列出了一些关于Java集合的重要问题和答案。 1.Java集合框架是什么?说出一些集合框架的优点&…

《白鹿原》金句摘抄(四)

狗蛋吓得浑身筛糠连连求饶。当即作出毫不含糊而又坚决的反应小娥的境况好多了。她拖着浑身流血的身体挪回窑洞,鹿子霖当天晚上就来看护她。太阳冒红时,白鹿原的官道小路上,庄稼汉男女穿着浆捶得平展硬峥的家织布白衫青裤,臂弯里挎…

ASP.NET Core MVC 模型绑定用法及原理

前言 查询了一下关于 MVC 中的模型绑定,大部分都是关于如何使用的,以及模型绑定过程中的一些用法和概念,很少有关于模型绑定的内部机制实现的文章,本文就来讲解一下在 ASP.NET Core MVC 中模型绑定是如何实现的,以及它…

IDEA无法加载log文件

如图所示,无论怎么生成log文件,idea文件列表始终不显式 解决方法 打开setting 打开File Types 选择文本文档Text,添加后缀*.log

《白鹿原》金句摘抄(五)

枝叶却依然郁郁葱葱,粗大的树股伸出几十步远,巨大的树冠浓密的树荫笼罩着整个庙宇的屋脊,形成一派凝聚不散的仙气神韵。锣鼓家伙的喧嚣充耳不闻,只见那些鼓手锣手家伙手使劲地挥动着胳膊,却敲不出一丝声响来&#xff0…

使用sqlserver搭建高可用双机热备的Quartz集群部署【附源码】

一般拿Timer和Quartz相比较的,简直就是对Quartz的侮辱,两者的功能根本就不在一个层级上,如本篇介绍的Quartz强大的集群机制,可以采用基于 sqlserver,mysql的集群方案,当然还可以在第三方插件的基础上实现q…

一个正则表达式酿成的惨案

转载自 一个正则表达式酿成的惨案 导读:正则表达式是程序员经常使用的工具之一。本文作者通过一个正则表达式的陷阱,先深入剖析了出现问题的原因,后给出怎么处理这类问题的方法。最后还给出了一些检测常见正则表达式问题的工具&#xff0c…

JAVA保留两位小数

一、使用BigDecimal,保留小数点后两位 public static String format1(double value) {BigDecimal bd new BigDecimal(value);bd bd.setScale(2, RoundingMode.HALF_UP);return bd.toString(); }二、使用DecimalFormat,保留小数点后两位 public static String for…

在dialog中使用EditText键盘弹不起来的解决方法

mySelectDialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);