关于微服务,MSDN给出了定义和架构图:https://docs.microsoft.com/zh-cn/azure/architecture/guide/architecture-styles/microservices

Management. 管理组件负责将服务放置在节点上、标识故障、跨节点重新平衡服务等等。

Identity Provider. 分布式验证服务提供者。

Service Discovery. 维护一个包含服务及其所在节点的列表。 支持使用服务查找功能查找服务的终结点。

API Gateway. API 网关是客户端的入口点。 客户端不直接调用服务, 而是调用 API 网关,网关再将调用转发到后端上的相应服务。 API 网关可以聚合来自多个服务的响应,并返回聚合的响应。

CDN. 内容分发服务网络。

Static Content 静态内容

传统架构对比微服务架构:

可见:微服务架构更适合DDD建模开发。比传统架构更独立,功能划分更明显。每个服务块都运行在自己的独立空间内,相互不干扰。各模块之间的通信利用消息队列完成。甚至数据库都可以是各自独立。

项目实例:

新建.NET Core项目

1.新建项目

2.选择API项目

添加数据模型:

1.添加Model文件夹,同时添加Product和Category类

添加EF Core

从引用中管理Nuget包。添加EFCore的引用。Microsoft.EntityFrameworkCore

引用以后新增DBContext文件夹并添加ProductContext上下文类

重写OnModelCreating方法初始化数据:

在appsettings.json 文件添加连接字符串

在Startup.cs文件中注册上下文:

新建持久化层类:

IProductRepository.cs接口文件

ProductRepository 实现类:

在Startup.cs注册仓储类:

新建API控制器:

ProductController:

在控制器中添加GET/POST 方法

EF迁移:

在程序包管理器控制台 输入Add-Migration InitialCreate 成功后再输入命令Update-Database将变动写入数据库

命令执行完毕后可进入数据库检查我们在初始化加入的数据。若数据存在则证明迁移完成。此时把程序部署在IIS上即可执行。利用Postman则可调用接口进行验证。

更详细信息科参考原文地址:https://www.c-sharpcorner.com/article/microservice-using-asp-net-core/

.NET Core 微服务实例的更多相关文章

  1. .NET Core微服务之基于Consul实现服务治理

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.Consul基础介绍 Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发 ...

  2. .NET Core微服务之基于Consul实现服务治理(续)

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 上一篇发布之后,很多人点赞和评论,不胜惶恐,这一篇把上一篇没有弄到的东西补一下,也算是给各位前来询问的朋友的一些回复吧. 一.Consul ...

  3. .NET Core微服务之服务间的调用方式(REST and RPC)

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.REST or RPC ? 1.1 REST & RPC 微服务之间的接口调用通常包含两个部分,序列化和通信协议.常见的序列化 ...

  4. .NET Core微服务之基于Polly+AspectCore实现熔断与降级机制

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.熔断.降级与AOP 1.1 啥是熔断? 在广义的解释中,熔断主要是指为控制股票.期货或其他金融衍生产品的交易风险,为其单日价格波动幅度 ...

  5. .NET Core微服务之基于Ocelot+Butterfly实现分布式追踪

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.什么是Tracing? 微服务的特点决定了功能模块的部署是分布式的,以往在单应用环境下,所有的业务都在同一个服务器上,如果服务器出现错 ...

  6. .NET Core微服务之基于EasyNetQ使用RabbitMQ消息队列

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.消息队列与RabbitMQ 1.1 消息队列 “消息”是在两台计算机间传送的数据单位.消息可以非常简单,例如只包含文本字符串:也可以更 ...

  7. .NET Core微服务之基于MassTransit实现数据最终一致性(Part 1)

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.预备知识:数据一致性 关于数据一致性的文章,园子里已经有很多了,如果你还不了解,那么可以通过以下的几篇文章去快速地了解了解,有个感性认 ...

  8. .NET Core微服务之基于MassTransit实现数据最终一致性(Part 2)

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.案例结构与说明 在上一篇中,我们了解了MassTransit这个开源组件的基本用法,这一篇我们结合一个小案例来了解在ASP.NET C ...

  9. .NET Core微服务之开源项目CAP的初步使用

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.CAP简介 下面的文字来自CAP的Wiki文档:https://github.com/dotnetcore/CAP/wiki CAP ...

随机推荐

  1. xshell使用密钥登陆linux

    一.环境CentOS 7.4xshell 6 二.介绍远程ssh连接服务器 默认是用的密码验证的方式,而且还是root账号,这样的验证方式会有安全隐患,容易被人暴力破解root密码.如果改成用密钥登陆 ...

  2. Java 高级框架——Mybatis(一)

    一, SQl复习 a,数据库SQL命令 创建数据库并指定编码 Create database 数据库名 default character set utf8 create database ssm d ...

  3. linux服务器后台运行服务

    linux 后台运行一个服务 难免会遇到在Linux,后台执行任务.下面,总结了一下关闭窗口任然在后台执行的方法,例如 #执行一个打包命令 tar czf /data/backup.tgz /data ...

  4. WPF DEV gridcontrol当前项的数据导出为mdb文件

    /// <summary> /// 导出为mdb /// </summary> /// <param name="sender"></pa ...

  5. 从零开始学习python:demo2.5

    for 循环语句 1.单个for循环: s1 = 'Python'for s2 in s1:    print(s2) ------------------------- Python ------- ...

  6. redis 安装和配置

    准备条件:1>确保所安装的环境能够访问网络,2>环境中拥有gcc\g++.make.tar等工具3>以root身份登录安装过程:1>输入命令:wget http://downl ...

  7. vue+axios完美实现前端路由拦截

    一.路由拦截 1.首先在router的index.js里配置一个自定义字段requireAuth,用该字段来判断进入该路由是否需要登录.如果已经登陆则进入该路由,反之则进入登录页面. 如图是路由配置: ...

  8. leetcode每日刷题计划-简单篇day8

    今天是纠结要不要新买手机的一天QAQ想了想还是算了吧,等自己赚钱买,加油 Num 70 爬楼梯 Climbing Stairs class Solution { public: int climbSt ...

  9. 关于 /bin/bash: warning: setlocale: LC_ALL: cannot change locale (en.US_UTF-8) 问题

    亲测可行 中文 # vim /etc/profile.d/locale.sh export LC_CTYPE=zh_CN.UTF-8 export LC_ALL=zh_CN.UTF-8 # vim / ...

  10. python大法好——mysql防注入

    MySQL 及 SQL 注入 如果您通过网页获取用户输入的数据并将其插入一个MySQL数据库,那么就有可能发生SQL注入安全的问题. 本章节将为大家介绍如何防止SQL注入,并通过脚本来过滤SQL中注入 ...