.NET Core 作为全新的 .NET 技术,它不仅完全开源、跨平台,更面向云原生开发进行了大量细致的优化。它完全模块化,不依赖特定操作系统,其文件系统、网络和配置等基础功能模块对跨平台,命令行等现代化轻量级开发所要求的特性提供了卓越的支持。

首先介绍 .NET Core 开发环境的安装,接着详细介绍持续交付、API 优先和测试驱动等重要开发方法和思想。

完整地介绍使用 ASP.NET Core 进行微服务开发时的思路、步骤和工具,用大量篇幅讲述关于开发功能强大且具有高可伸缩性和韧性的微服务思想,关注使用 ASP .NET Core 实现云原生模式。

本书 GitHub 库(https://github.com/microservices-aspnetcore)

第 1 章 ASP .NET Core 基础

核心概念

CoreCLR: 一个轻量级、跨平台运行时,提供与 CLR 相同功能,包括垃圾回收、JIT 编译、异常处理等等。

CoreFX: 一系列模块化程序集,以 NuGet 包方式提供,并且完全开源,可通过 GitHub 获取。

.NET Platform Standard: 以一种可控的架构支持 .NET Core 二进制可移植性的跨平台目标。

ASP .NET Core: 一系列小的模块化组件,可添加到现有应用中,用于开发 Web 应用和微服务;提供了路由、JSON 序列化、MVC 控制器与视图 API 。

开发控制台应用

$ dotnet new console$ dotnet restore$ dotnet run

项目创建完成后,运行 dotnet restore 可分析项目的依赖,并下载所有需要的包。每次修改项目文件 .csproj 后,都要执行这一步骤。

开发第一个 ASP.NET Core 应用

往控制台应用添加 ASP.NET Core 功能步骤:

  • 添加 ASP.NET 包
  • 添加 Kestrel 服务器
  • 添加启动类和中间件

第 2 章 持续交付

相对于传统的单体应用,开发人员之所以要选择开发微服务系统,其驱动力之一就是需要一种能把新功能和修复补丁快速部署到小型、可独立缩放的子系统的功能。

只有在部署前就能确信这些服务在生产环境中不会出问题,才有可能做到这一点。

Docker 运用 Linux 内核提供的 cgroup 和 namespace 等功能对网络、文件和内存等资源进行隔离,避免了完整的重量级虚拟机的负担。

Docker 提供的能力让我们可以创建一种无视目标环境差异,随处运行的发布物,意味着在测试环境中测试 Docker 镜像之后,我们相信它在生产环境中也会以完全一致的方式工作。这是拥抱持续交付的前提。

运行 Docker 镜像

$ docker run -p 8080:8080 dotnetcoreservices/hello-world$ docker ps$ curl http://localhost:8080/will/it/blend?$ docker kill 61a68ffc3851

使用 Wercker 持续集成

用 Wercker 构建服务

  • 安装 Wercker 命令行工具
  • 添加 wercker.yml 配置文件
  • 运行 Wercker 构建

使用 CircleCI 持续集成

CircleCI 与 Wercker 构建过程的关键区别在于,构建过程不是在已安装好 .NET Core 的专用 Docker 镜像中运行,我们需要使用诸如 apt-get 的工具来安装 .NET 工具链。

部署到 docker hub

.netcore 如何获取系统中所有session_ASP.NET Core微服务实战 一、二相关推荐

  1. .netcore 如何获取系统中所有session_集群化部署,Spring Security 要如何处理 session 共享?

    前面和大家聊了 Spring Security 如何像 QQ 一样,自动踢掉已登录用户(Spring Boot + Vue 前后端分离项目,如何踢掉已登录用户?),但是前面我们是基于单体应用的,如果我 ...

  2. java 字体名字_JAVA:获取系统中可用的字体的名字

    import java.awt.*; public class GetLocalFontFamily { public static void main(String[] agrs) { //获取系统 ...

  3. windows编程点滴(一)之Windows获取系统中所有进程

    Tool help function     PSAPI functions (PROCECC STATUS) 1.结构体PROCESSENTRY32 typedef struct tagPROCES ...

  4. 获取系统中已经安装的文字输入法

    //获取系统中已经安装的文字输入法InputLanguageCollection MyInputs = InputLanguage.InstalledInputLanguages;//获取当前输入法信 ...

  5. WebRTC Native M96 SDK接口封装--enumerateVideoDevices获取系统中所有的视频设备列表

    不管怎样,活着便是盛宴!!! 设备管理是重要的一环,在用户的实际使用过程中,会遇到各种各种的设备问题. 这里,讲一下如何枚举系统中的所有的视频设备列表. 接口定义(Agora) 接口名:enumera ...

  6. Android 获取系统中歌曲信息,如歌曲名,歌手名等

    通过查询数据库方法获取系统中是否有歌曲以及歌曲信息,如歌曲名,专辑名,歌手名称,歌曲文件大小. 上代码,对应字段对应信息. public class AudioSongUtil {public sta ...

  7. 微服务接入oauth2_SpringCloud微服务实战系列(十九)Ouath2在真实场景中的应用之客户端接入(第一种写法)...

    SpringCloud微服务实战系列(十九)Ouath2在真实场景中的应用之客户端接入(第一种写法) 一.概述 在<SpringCloud微服务实战系列(十七)Ouath2在真实场景中的应用之资 ...

  8. 微服务实战(五):落地微服务架构到直销系统(构建高性能大并发系统)

    在现代系统中,特别是互联网软件,通常会涉及到大量用户的并发访问,我们的系统一定要在架构上支持高性能.大并发的访问.一个高性能的系统通常由很多的方面组成,包括数据库高性能.Web服务器高性能.负载均衡. ...

  9. 微服务实战(六):落地微服务架构到直销系统(事件存储)

    在CQRS架构中,一个比较重要的内容就是当命令处理器从命令队列中接收到相关的命令数据后,通过调用领域对象逻辑,然后将当前事件的对象数据持久化到事件存储中.主要的用途是能够快速持久化对象此次的状态,另外 ...

最新文章

  1. 月英爱耀承(帮别人名字作诗)
  2. [java]OutOfMemoryError 原因及解决办法
  3. python实习做什么工作-大一/大二学生Python实习的困惑?
  4. c++ 浮点数转换成字符串_Python如何处理数据?如何把数据转换成我们想要的?三种处理方法...
  5. java中filereader读取文件_java – 如何使用FileReader逐行读取
  6. 中怎么构建ebug模式_自动挡中的“手自一体”,该怎么用?多少人把手动模式当成摆设?...
  7. Mac中IDEA在配置tomcat时一直出现404的错误
  8. jmeter获取mysql数据并作为请求参数使用
  9. 用原生NodeJS实现简易的静态web
  10. Expert C Programming学习笔记(1)
  11. C++与C调用so文件
  12. C#中利用网口与安捷伦电源进行通信
  13. java 图片压缩100k_Java 图片压缩至指定大小
  14. scratch 大家来找茬
  15. linux操作系统中ssh的默认端口号,sshd服务的默认端口号
  16. 请为自己计算机进行磁盘优化,如何对Win10系统的磁盘进行清理并优化
  17. 怎么判断一个数是奇数还是偶数?
  18. 树莓派提升计划 Android应用用MiniChatAppApp之AppServer构建
  19. 我的物联网项目(十八) 城市合伙人战略
  20. 嵌入式linux--电子相册

热门文章

  1. 【Java】数组元素的赋值与输出
  2. 【大学物理】毕奥萨伐尔定律
  3. Python nltk包
  4. json写入数据库或生成excel
  5. node和npm是什么_什么是npm? 面向初学者的Node Package Manager教程
  6. R语言tidyverse数据处理建模案例
  7. ipv6 ospf配置方法_网络工程师(22):应用最广泛的路由协议OSPF
  8. 网页不显示样式的解决方向之一
  9. Python实现 QQ 半自动发送情话,我追到了女神
  10. AI朋克致敬MNIST:只用Python和开发板,制作永不重样的时钟