
ASP.NET Web API快速入門介紹
基于DDD的四層架構:用戶接口層、應用層、領域層和基礎設施層,如下圖所示:
與傳統的三層架構相比DDD的分層架構將業務邏輯層拆為了應用層與領域層
下方左圖為傳統四層架構,右圖為依賴倒置后的四層架構。應用層與領域層提供接口,基礎設施層提供實現。
領域層不依賴任何一層,只專注與業務。個人認為基礎設施層迭代頻率要低于接口層,抽象程度高于表現層。所以讓表現層依賴基礎設施層更合適。
我的本系列博客對應的項目也是基于DDD的架構思想,當然也會加入自己的一些想法在其中。
想學習領域驅動設計的同學可移步《DDD 實戰課》
整體項目結構如下方三張圖所示:
1、ICore.WebApi
這一層主要構建 RESTful 應用程序,提供HTTP服務。管道中間件、過濾器、跨域、路由、模型驗證等都在此配置。
2、ICore.Application
這一層很薄,不會包含任何與業務有關的邏輯信息,將使用CQRS的設計模式。安全認證、權限校驗、事務控制、發送或訂閱領域事件等都可在此層做處理。
3、ICore.Task
這一層主要用于處理系統內小型定時任務。繁多、復雜的定時任務建議用第三方調度平臺,例如:XXL-JOB。
4、ICore.Domain.Core
這一層主要用于實現核心的業務邏輯!內部主要包含Entity(實體)、Domain Event(領域事件)、Domain Service(領域服務)等。
5、ICore.Domain.Abstractions
這一層主要用于定義一些基類的接口和領域事件的接口。例如:IAggregateRoot聚合根接口、IEntity、IEntity< TKey> 實體接口等。
6、ICore.Infrastructure.Core
這一層主要對整個應用程序提供基礎實現,例如倉儲的實現、工作單元模式的實現、Redis緩存、隊列服務等。
7、ICore.Test
這一層主要用于對整個程序的單元測試,減少不必要的BUG以及提高測試效率。
我強烈建議大家看阿里巴巴Java開發手冊,以上面的規范來約束自己的編碼。
首先.Net Core同Spring Boot一樣都是自宿主程序,其不是必需在IIS內部托管。實現跨平臺離不開.Net Core內置的kestrel高性能服務器,如下圖所示(圖片來自官網):
1、在launchSettings.json
文件中修改站點信息,把IIS Express節點刪掉
2、在appsettings.json
中設置啟動端口
"Kestrel": {
"Endpoints": {
"Https": {
"Url": "https://*:8000"
},
"Http": {
"Url": "http://*:8001"
}
}
}
3、在Program
中設置啟動端口
從.NET 6.0開始已去除了Startup.cs 文件,依賴注入服務和Middleware全在Program.cs中配置。
我從寫.NET Core 2.0開始一直到現在,Startup.cs文件我覺得還是有必要存在,個人使用習慣而已
using ICore.WebApi;
var builder = WebApplication.CreateBuilder(args);
var startup = new Startup(builder.Configuration);
startup.ConfigureServices(builder.Services);
startup.Configure(builder.Build());
namespace ICore.WebApi
{
public class Startup
{
public IConfiguration Configuration { get; }
public Startup(IConfiguration configuration) => Configuration = configuration;
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
services.AddEndpointsApiExplorer();
services.AddSwaggerGen();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(WebApplication app)
{
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseAuthorization();
app.MapControllers();
app.Run("http://*:8001");
}
}
}
使用命令行啟動dotnet ICore.WebApi.dll –urls=”http://*:8001″ –ip=”127.0.0.1″ –port=8001
這一節就到這里,后面會繼續上新!
文章轉自微信公眾號@DotNet