ASP.NET Core分布式项目实战

默认教学计划
974人加入学习
(32人评价)
价格 ¥398.00
教学计划

docker run -p 8001:80(物理机端口:容器端口) -d (全程detach ) --name

 

 

 

nginx

[展开全文]

docker run 

             -p

             -d

             --name

[展开全文]

docker --version    查看当前docker版本

docker ps    查看当前正在运行的容器

docker images 查看本地所有的镜像

docker run 运行一个容器

docker pull 用来拉取一个镜像( https://docw.docker-cn.com/){}到本地

[展开全文]

提示没有MigrageDbContext方法?

[展开全文]

架构设计时,应该时时想到以后的系统可扩展的问题。

[展开全文]
wgjxx · 21天前 · oAuth2介绍 0

1、在使用Mysql.Data.EntityFramework.Core 的时候有一个错误。

No coercion operator is defined between types 'System.Int16' and 'System.Boolean'.

后来使用 Pomelo.EntityFrameworkCore.MySql 库来解决了这个问题。

 

2、在dotnet 2.1 新建的webapi项目创建的ValuesController默认是 集成BaseController,没有Json方法,修改集成Controller即可

[展开全文]

gitlab 安装

 

[展开全文]

docker compose

version:3

services

db

[展开全文]

容器互联 

link

docker images

 

[展开全文]

dotnet new webapi --name UserAPI

microsoft

mysql.Data.EntityFaameworkCore

Add-Migration init

 

[展开全文]

mkdir mongo

mkdir config

mkdir db

docker run -d -p 27017:27017 --name mongo01

docker ps

 

[展开全文]

https://github.com/App-vNext/Polly/wiki/Polly-and-HttpClientFactory

在.net core 2.1中引用Nuget包Microsoft.Extensions.Http.Polly就方便很多了。

现在最新的eshopOnContainer也是用这种办法。不过视频还是讲了一下造轮子,还是能看学习一下。

[展开全文]


**0** GitFlow 有Vincenr Driessen 提出的git 软件开发版本管理的流程标准。

**1 主要分支介绍**
![image](http://assets.processon.com/chart_image/5c106cd7e4b0fd4819946923.png)
**maseter分支** 

主分支产品功能全部实现后,在mster分支对外发布。

**develop 分支**

开发分支,基于master分支克隆,产品的编码在此分支进行。

**release 分支**

- 测试分支,基于develop分支克隆。
- 产品功能编码featuren分支提交合并完成后,同步到本分支测试,测试过程的BUG在本分支修复,修复完成打Tasg合并到develop分支。
- 属于临时分支,功能上线后可删除分支。

**bugfix 分支**

- bug 修复分支,基于master分支或者发布的tasg 克隆,用于修复对外发布的分支(线上版本)。
- 修复BUG完成 打Tag后合并到 develop/master 分支。
- 属于临时分支,修改完BUG后可以删除分支。

**feature 分支**
- 功能开发分支,基于develop分支克隆,用于新功能的开发。
- 功能开发完成后合并到develop分支。
- 可以存在多个,属于临时分支,功能完成后可删除。

**2 使用CitFlow有如下几点优势:**

- **并行开发:** 每个新功能都建立新的feature分支,与一家完成的功能隔离。新功能完成开发后,对应的feature分支合并到develop分支。本地开发多个新功能,可以创建多个feature分支,切换开发。
- **协作开发:** 每个feature分支改动的代码只用于某个功能。
- **支持紧急修复**:hotfix分支,从某个已经发布的tag 创建的紧急修复,这会紧急修复值影响已经发布的tag,不会与新开发feature冲突。


**3  开发 示例**

1 从远程仓库克隆代码到本地
```
git clone https://liaowei1992.visualstudio.com/IdentityServer.Samples/_git/IdentityServer.Samples
```

2 基于master 分支 创建develop

[展开全文]

  官方文档 https://identityserver4.readthedocs.io/en/latest/

 

1 IdentityServer4 ASP .NET Core 认证中心 搭建

1.1 新建ASP .NET Core 项目 ```nuget IdentityServer4``` 

1.2 新建配置类 IdentityConfig 

public class IdentityConfig
    {
        /// <summary>
        ///   ApiResource 
        /// </summary>
        /// <returns></returns>
        public static IEnumerable<ApiResource> GetResource()
        {
            return new List<ApiResource>() {
            new ApiResource("UserAPI","OrderAPI"){
            } };
        }
        /// <summary>
        /// Client
        /// </summary>
        /// <returns></returns>
        public static IEnumerable<Client> GetClients()
        {
            var cilentApp = new Client()
            {
                ClientId = "App1",
                ClientName = "App",
                AllowedGrantTypes = new List<string>() {
                    GrantType.ClientCredentials },
                ClientSecrets = new List<Secret>() {
                    new Secret("Sercrect".Sha256())
                },
                AllowedScopes = { "UserAPI"}
            };
            return new List<Client>() {
                    cilentApp
            };
        }
    }

1.3  Startup.cs配置 IdentityServer 

public void ConfigureServices(IServiceCollection services)
        {
            //依赖注入系统中注册IdentityServer
            services.AddIdentityServer()
            //扩展在每次启动时,为令牌签名创建了一个临时密钥。在生成环境需要一个持久化的密钥
                .AddDeveloperSigningCredential()
                .AddInMemoryApiResources(IdentityConfig.GetResource())//Api 资源
                .AddInMemoryClients(IdentityConfig.GetClients());//Api的客户端
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
         
        }
 public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            
            app.UseIdentityServer();//使用服务 中间件被添加到HTTP管道中
        }

1.4 启动站点 输入 ```http://localhost:4000/.well-known/openid-configuration```,可以看到授权的终结点等信息

[展开全文]

领域驱动设计 DDD (Domain Drive Design)
在软件开发的业务知识梳理过程中,必定会形成木个领域知识,根据领域知识一步步驱动软件设计。

 

  • 领域模型(Domain Model):能精确反应领域中某一知识元素的载体。分为实体,值对象,服务。 
  • 值对象(Value Object):没有唯一标识符的实体,在领域模型中是可以被共享的,他们应该是“不可变的”(只读的),当有其他地方需要用到值对象时,可以将它的副本作为参数传递。
  • 实体(Entity):通过一系列连续性(continuity)和标识(identity ID)来定义;
  • 领域服务(Domain Service):当领域中的某个重要过程或转换操作不属于实体或值对象的自然职责时,应该在模型中添加一个作为独立接口的操作,并将其申明为Service
  • 领域事件(Domain Event)
  • 资源库(Repository):负责从存放资源的位置(数据库、内存或者其他 Web 资源)获取、添加、删除或者修改领域对象。
  • 工厂(Factory):把创建对象的细节封装起来,巧妙的实现了依赖反转。
  • 聚合(Aggregate):多个模型单元间的组合,它定义了模型的关系和边界。每个聚合都有一个根,根是一个实体,并且是唯一可被外访问的。聚合是一种边界,它可以封装一到多个实体值对象,并维持该边界范围之内的业务完整性。在聚合中,至少包含一个实体,且只有实体才能作为聚合根(Aggregate Root)
  • 应用服务(Application Service):服务存在的目的就是为领域提供简单的方法。为了提供大量便捷的方法,自然要关联许多领域模型。

    服务具有以下特点:

    a)服务中体现的行为一定是不属于任何实体和值对象的,但它属于领域模型的范围内
    b)服务的行为一定设计其他多个对象
    c)服务的操作是无状态的

[展开全文]

patch 一个api修改多个字段

聚合服务

mediatr 发布订阅

 

[展开全文]

授课教师

程序员

课程特色

下载资料(2)
视频(144)
讨论(1)
图文(2)