MyMicroService

简介

写一个从零写一个 C#微服务解决方案,尽量加入功能

创建一个微服务项目

注:C#里的解决方案对标Java的项目,C#的项目对标Java的模块

Program.cs 是整个文件的入口。其中的 builder,app概念值得梳理。

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

可以看到builder是WebApplication的构建者。这里做的事是把的映射关系作为配置信息载入,可以类比 Spring 中把Bean的注册信息加入BeanFectory,但此时的服务都没有被实例化。

var app = builder.Build();

这一步使得 WebApplication实例化。类比BeanFactory里的类全部实例化。

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();

这些 app.UseXXX 是在构建 middleware 管道,就是请求进来先走管道,再执行,平时可以加一些限流,鉴权中间件。

到了这里完整的对比一下 Spring 和 ASP.Net 的区别。

首先从设计哲学上spring遵从约定大于配置,启动就是一句简单的 SpringApplication.run()。而ASP.Net在启动时,由配置加载,实例,到中间件链编排全部需要开发者实现,需要开发者对启动流程有一定的了解。

再来看一下 WebApplication 和 ApplicationContext。WebApplication 的功能包括 启动服务,注册单例,编排中间件。

ASP. Spring
加载配置(无感) WebApplication.Configuration Environment
注册 bean builder.Services.AddXXX() @Bean/Compoment 注解+扫描注册
服务实例化,依赖注入,生命周期 WebApplication.Services->IServiceProvider BeanFactory,常用ApplicationContext
中间件管道 WebApplication.UseXXX() Tomcat的Servlet,Filter
应用启动 app.run() SpringApplication.run()

配置文件

ASP.Net 配置文件由两个,appSettings.json,Property/launchSettings.json。

appSettings.json提供应用运行时配置,比如数据库连接,服务地址,这些配置服务器也生效。

Property/launchSettings.json负责启动参数配置,本地启动用的地址、端口。

运行时配置 启动配置
ASP appSettings.json launchSettings.json
Spring application.yml:mysql application.yml:spirng:port:8080
文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇