iis日志代碼(iis日志怎么看)
↓推薦關注↓
?前言
從實習到現(xiàn)在回想自己已經入行四年了,很慶幸自己一直還是從事著開發(fā)的工作。
這幾年不管是工作還是生活都有很多不甘與失落還有收獲,從學校出來之后有時候覺得自己的心態(tài)受不了小小的打擊,可能就像平凡的世界中的孫少平一樣,有著一顆敏感而脆弱的自尊心。
春種一粒粟,秋收萬顆子。從2021年1月份到現(xiàn)在一直沒有更新過博客,在這個播種的季節(jié)我想我應該要總結一下過去的技術經驗,對自己是提升,對別人可能或多或少都有幫助。
阿里巴巴大神畢玄曾說過,"一個優(yōu)秀的工程師和一個普通工程師的區(qū)別,不是滿天飛的架構圖,他的功底體現(xiàn)在所寫的每一行代碼上"。這句話我與諸君共思共勉!
分層目標
大道至簡:能提高開發(fā)效率,讓剛進公司的實習生也能快速上手CRUD
結構清晰:不僅要遵循DIP原則(降低耦合),而且也要保證每一層或每一個類庫職責單一,減少后期維護成本
擴展/復用:分層之后有很高的復用性和更方便的橫向擴展性
大道至簡:能提高開發(fā)效率,讓剛進公司的實習生也能快速上手CRUD
結構清晰:不僅要遵循DIP原則(降低耦合),而且也要保證每一層或每一個類庫職責單一,減少后期維護成本
擴展/復用:分層之后有很高的復用性和更方便的橫向擴展性
傳統(tǒng)三層架構
傳統(tǒng)的三層架構:表現(xiàn)層、業(yè)務邏輯層和數(shù)據(jù)訪問層,如下圖所示:
展開全文
DDD四層架構
基于DDD的四層架構:用戶接口層、應用層、領域層和基礎設施層,如下圖所示:
與傳統(tǒng)的三層架構相比DDD的分層架構將業(yè)務邏輯層拆為了應用層與領域層
下方左圖為傳統(tǒng)四層架構,右圖為依賴倒置后的四層架構。應用層與領域層提供接口,基礎設施層提供實現(xiàn)。
領域層不依賴任何一層,只專注與業(yè)務。個人認為基礎設施層迭代頻率要低于接口層,抽象程度高于表現(xiàn)層。所以讓表現(xiàn)層依賴基礎設施層更合適。
我的本系列博客對應的項目也是基于DDD的架構思想,當然也會加入自己的一些想法在其中。
想學習領域驅動設計的同學可移步《DDD 實戰(zhàn)課》
我的本系列博客對應的項目也是基于DDD的架構思想,當然也會加入自己的一些想法在其中。
想學習領域驅動設計的同學可移步《DDD 實戰(zhàn)課》
整體項目結構如下方三張圖所示:
層級介紹
1、ICore.WebApi這一層主要構建 RESTful 應用程序,提供HTTP服務。管道中間件、過濾器、跨域、路由、模型驗證等都在此配置。
3、ICore.Task這一層主要用于處理系統(tǒng)內小型定時任務。繁多、復雜的定時任務建議用第三方調度平臺,例如:XXL-JOB。
4、ICore.Domain.Core這一層主要用于實現(xiàn)核心的業(yè)務邏輯!內部主要包含Entity(實體)、Domain Event(領域事件)、Domain Service(領域服務)等。
5、ICore.Domain.Abstractions這一層主要用于定義一些基類的接口和領域事件的接口。例如:IAggregateRoot聚合根接口、IEntity、IEntity TKey 實體接口等。
6、ICore.Infrastructure.Core這一層主要對整個應用程序提供基礎實現(xiàn),例如倉儲的實現(xiàn)、工作單元模式的實現(xiàn)、Redis緩存、隊列服務等。
7、ICore.Test這一層主要用于對整個程序的單元測試,減少不必要的BUG以及提高測試效率。
其它規(guī)范
編碼、格式規(guī)范
我強烈建議大家看阿里巴巴Java開發(fā)手冊,以上面的規(guī)范來約束自己的編碼。
配置文件規(guī)范
全部采用json格式文件
建立映射類,使用IOptions T方式讀取配置信息
數(shù)據(jù)庫連接字符串、數(shù)據(jù)傳輸?shù)募用苊荑€等不建議寫在配置文件中,應放到分布式配置中心中
全部采用json格式文件
建立映射類,使用IOptions T方式讀取配置信息
數(shù)據(jù)庫連接字符串、數(shù)據(jù)傳輸?shù)募用苊荑€等不建議寫在配置文件中,應放到分布式配置中心中
加入惡意請求IP黑名單
防SQL注入攻擊
日志應記錄請求時間、操作人ID、IP地址、是否成功等重要信息
CORS策略應加上白名單限制
生產環(huán)境的接口文檔不對外暴露
加入惡意請求IP黑名單
防SQL注入攻擊
日志應記錄請求時間、操作人ID、IP地址、是否成功等重要信息
CORS策略應加上白名單限制
生產環(huán)境的接口文檔不對外暴露
首先.Net Core同Spring Boot一樣都是自宿主程序,其不是必需在IIS內部托管。實現(xiàn)跨平臺離不開.Net Core內置的kestrel高性能服務器,如下圖所示(圖片來自官網(wǎng)):
修改端口
1、在launchSettings.json文件中修改站點信息,把IIS Express節(jié)點刪掉
2、在appsettings.json中設置啟動端口
"Kestrel": {
"Endpoints": {
"Https": {
"Url": "https://*:8000"
},
"Http": {
"Url": "http://*:8001"
}
}
}
3、在Program中設置啟動端口
app.Run( "http://*:8001");
加入Startup.cs
從.NET 6.0開始已去除了Startup.cs 文件,依賴注入服務和Middleware全在Program.cs中配置。
我從寫.NET Core 2.0開始一直到現(xiàn)在,Startup.cs文件我覺得還是有必要存在,個人使用習慣而已
改造Program.cs
using ICore.WebApi;
var builder = WebApplication.CreateBuilder(args);
var startup = new Startup(builder.Configuration);
startup.ConfigureServices(builder.Services);
startup.Configure(builder.Build);
重寫Startup.csnamespaceICore.WebApi
{
publicclassStartup
{
publicIConfiguration Configuration { get; }
publicStartup( IConfiguration configuration) = Configuration = configuration;
// This method gets called by the runtime. Use this method to add services to the container.
publicvoidConfigureServices( 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.
publicvoidConfigure( WebApplication app)
{
if(app.Environment.IsDevelopment)
{
app.UseSwagger;
app.UseSwaggerUI;
}
app.UseAuthorization;
app.MapControllers;
app.Run( "http://*:8001");
}
}
}
Run起來!
使用命令行啟動dotnet ICore.WebApi.dll --urls="http://*:8001" --ip="127.0.0.1" --port=8001
這一節(jié)就到這里,后面會繼續(xù)上新!
轉自:江北
轉自:江北
- EOF -
點擊標題可跳轉
微軟公布 .NET最新的編程語言支持策略
.NET 提升開發(fā)效率的強大多功能工具箱
.NET 6.0 開發(fā)的配置中心開源項目
看完本文有收獲?請轉發(fā)分享給更多人
推薦關注「DotNet」,提升.Net技能
點贊和在看就是最大的支持??
掃描二維碼推送至手機訪問。
版權聲明:本文由飛速云SEO網(wǎng)絡優(yōu)化推廣發(fā)布,如需轉載請注明出處。