欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報(bào)邀請(qǐng)碼778899分享:c# 系統(tǒng)架構(gòu)分析

柚子快報(bào)邀請(qǐng)碼778899分享:c# 系統(tǒng)架構(gòu)分析

http://yzkb.51969.com/

一、速通一圖流

二、系統(tǒng)架構(gòu)功能、作用分析

1. Furion:框架核心層

功能:這是 Furion 框架的核心層,通常包含框架本身的基本功能和配置。這一層應(yīng)該是比較穩(wěn)定的,不應(yīng)該包含業(yè)務(wù)邏輯,而是提供項(xiàng)目其他部分需要依賴的基礎(chǔ)設(shè)施功能。作用:為整個(gè)應(yīng)用程序提供通用的功能支持和框架級(jí)別的配置。例如,依賴注入配置、全局異常處理、日志管理等。

2. Furion.Application:業(yè)務(wù)應(yīng)用層

功能:這一層主要負(fù)責(zé)業(yè)務(wù)邏輯的實(shí)現(xiàn),是應(yīng)用程序的核心部分。所有與業(yè)務(wù)相關(guān)的代碼,比如服務(wù)層、用例邏輯、應(yīng)用程序的核心功能實(shí)現(xiàn)等,都會(huì)寫在這里。作用:封裝業(yè)務(wù)邏輯,確保業(yè)務(wù)規(guī)則和流程的一致性。這一層不應(yīng)該直接處理數(shù)據(jù)訪問(那是倉儲(chǔ)層的職責(zé)),而是通過依賴注入使用倉儲(chǔ)層提供的數(shù)據(jù)訪問功能。

3. Furion.Core:核心層

功能:這一層通常包含應(yīng)用程序的核心基礎(chǔ)設(shè)施,如實(shí)體定義、倉儲(chǔ)接口、領(lǐng)域模型等。核心層應(yīng)該是輕量級(jí)的,并且不依賴于其他實(shí)現(xiàn)細(xì)節(jié)(例如數(shù)據(jù)庫訪問層)。作用:定義核心業(yè)務(wù)對(duì)象和基礎(chǔ)設(shè)施代碼,供應(yīng)用層和數(shù)據(jù)訪問層使用。這一層關(guān)注于領(lǐng)域模型和接口定義,確保應(yīng)用的核心業(yè)務(wù)邏輯可以獨(dú)立于具體的技術(shù)實(shí)現(xiàn)進(jìn)行開發(fā)和測(cè)試。

4. Furion.Database.Migrations:EF Core 架構(gòu)遷移文件層

功能:這一層專門用于存放 EF Core 的數(shù)據(jù)庫遷移文件。這些文件包含了數(shù)據(jù)庫架構(gòu)的變更記錄,EF Core 通過這些遷移文件來保持?jǐn)?shù)據(jù)庫和應(yīng)用程序模型之間的一致性。作用:管理數(shù)據(jù)庫架構(gòu)的變更和遷移,是數(shù)據(jù)庫與應(yīng)用程序之間的一座橋梁。開發(fā)人員可以通過遷移來應(yīng)用或回滾數(shù)據(jù)庫的變更。

5. Furion.EntityFramework.Core:EF Core 配置層

功能:這一層負(fù)責(zé)配置和**管理 EF Core,**通常包括 DbContext 的配置、模型創(chuàng)建規(guī)則、數(shù)據(jù)庫上下文的注入和數(shù)據(jù)訪問的具體實(shí)現(xiàn)等。作用:集中管理 EF Core 的配置和數(shù)據(jù)訪問邏輯,為業(yè)務(wù)層提供數(shù)據(jù)操作的基礎(chǔ)設(shè)施。這個(gè)層次將數(shù)據(jù)訪問與業(yè)務(wù)邏輯分離,遵循依賴倒置原則。

6. Furion.Web.Core:Web 核心層

功能:這一層包含了與 Web 相關(guān)的公共代碼,如過濾器、中間件、Web Helpers 等。通常是跨多個(gè)控制器或模塊共享的通用代碼,確保 Web 請(qǐng)求處理的通用邏輯集中管理。作用:為 Web 層提供通用功能支持,如請(qǐng)求過濾、授權(quán)認(rèn)證、跨域配置、異常處理等。通過這一層,Web 層的代碼可以更加簡(jiǎn)潔且專注于業(yè)務(wù)功能的實(shí)現(xiàn)。

7. Furion.Web.Entry:Web 入口層/啟動(dòng)層

功能:這是 Web 應(yīng)用程序的入口點(diǎn),通常包含程序啟動(dòng)類(如 Program.cs)和 Startup.cs,用于配置應(yīng)用程序啟動(dòng)時(shí)所需的所有服務(wù)和中間件。作用:配置應(yīng)用程序的啟動(dòng)流程,包括依賴注入的初始化、路由配置、應(yīng)用中間件管道的設(shè)置等。這一層負(fù)責(zé)將整個(gè)應(yīng)用程序整合起來,并將其運(yùn)行在 Web 服務(wù)器上。

三、初級(jí)后端工程師開發(fā)特別要注意的具體結(jié)構(gòu)

1. Application 項(xiàng)目

1.1 項(xiàng)目作用

Application 項(xiàng)目主要負(fù)責(zé)服務(wù)類的實(shí)現(xiàn)、數(shù)據(jù)傳輸對(duì)象(DTO)的定義,以及接口的定義。它是應(yīng)用程序的業(yè)務(wù)邏輯層,通過定義和實(shí)現(xiàn)服務(wù)來處理業(yè)務(wù)規(guī)則,并通過 DTO 進(jìn)行數(shù)據(jù)傳輸。

1.2 書寫方式

項(xiàng)目名稱:Test.Admin.Application

文件夾結(jié)構(gòu):

接口定義:放置用于定義服務(wù)接口的文件夾。

Dtos:包含具體的數(shù)據(jù)傳輸對(duì)象(DTOs)。 服務(wù)類:包含業(yè)務(wù)邏輯的實(shí)現(xiàn)類。 基礎(chǔ)服務(wù)類:BaseService.cs,用于封裝公共的業(yè)務(wù)邏輯或服務(wù)功能。全局引用文件:GlobalUsings.cs,用于定義常用的 using 指令,以避免在每個(gè)文件中重復(fù)引用。

1.3 例子

接口定義:File 上傳 具體的數(shù)據(jù)對(duì)象:

namespace Easy.Admin.Application.File.Dtos

{

public class UploadFileOutput

{

///

/// 文件名

///

public string Name { get; set; }

///

/// 附件鏈接

///

public string Url { get; set; }

}

}

服務(wù)類:

using Easy.Admin.Application.File.Dtos;

using Easy.Admin.Core.Options;

using Microsoft.AspNetCore.Hosting;

using Microsoft.Extensions.Options;

using OnceMi.AspNetCore.OSS;

namespace Easy.Admin.Application.File

{

public class FileService : IDynamicApiController, ITransient

{

private readonly IOSSService _ossService;

private readonly IOptionsMonitor _ossOptionsMonitor;

private readonly IHttpContextAccessor _httpContextAccessor;

private readonly IWebHostEnvironment _webHostEnvironment;

private readonly IIdGenerator _idGenerator;

public FileService(IOSSService ossService,

IOptionsMonitor ossOptionsMonitor,

IHttpContextAccessor httpContextAccessor,

IWebHostEnvironment webHostEnvironment,

IIdGenerator idGenerator)

{

_ossService = ossService;

_ossOptionsMonitor = ossOptionsMonitor;

_httpContextAccessor = httpContextAccessor;

_webHostEnvironment = webHostEnvironment;

_idGenerator = idGenerator;

}

///

/// 上傳附件

///

///

///

[NonUnify]

public async Task> Upload([Required] IFormFile file)

{

if (file is null or { Length: 0 })

{

throw Oops.Oh("請(qǐng)上傳文件");

}

var options = _ossOptionsMonitor.CurrentValue;

var now = DateTime.Today;

string name = _idGenerator.Encode(_idGenerator.NewLong());

string extension = Path.GetExtension(file.FileName);

if (string.IsNullOrWhiteSpace(extension))

{

throw Oops.Bah("無效文件");

}

// 文件路徑

string filePath = $"/{now.Year}/{now.Month:D2}/{now.Day:D2}/";

// 本地存儲(chǔ)處理

if (!options.Enable)

{

filePath = string.Concat(options.Bucket.TrimEnd('/'), filePath);

string s = Path.Combine(_webHostEnvironment.WebRootPath, filePath);

if (!Directory.Exists(s))

{

Directory.CreateDirectory(s);

}

var stream = System.IO.File.Create($"{s}{name}{extension}");

await file.CopyToAsync(stream);

await stream.DisposeAsync();

var request = _httpContextAccessor.HttpContext!.Request;

string url = $"{request.Scheme}://{request.Host.Value}/{filePath}{name}{extension}";

return new List()

{

new()

{

Name = $"{name}{extension}",

Url = url

}

};

}

// 云存儲(chǔ)處理

string fileName = $"{filePath}{name}{extension}";

await _ossService.PutObjectAsync(options.Bucket, fileName, file.OpenReadStream());

string bucket = options.Provider == OSSProvider.Minio ? $"/{options.Bucket}" : string.Empty;

return new List()

{

new()

{

Name = $"{name}{extension}",

Url = $"{options.Domain.TrimEnd('/')}{bucket}{fileName}"

}

};

}

}

}

2.Core 項(xiàng)目

1. 項(xiàng)目作用

Core 項(xiàng)目是應(yīng)用程序的基礎(chǔ)層,提供應(yīng)用的基礎(chǔ)服務(wù)和公共資源,支持其他項(xiàng)目模塊(如 Web 應(yīng)用層、業(yè)務(wù)邏輯層等)的開發(fā)和運(yùn)行。它通常包含基礎(chǔ)設(shè)施、工具類、核心業(yè)務(wù)邏輯、數(shù)據(jù)庫操作等。

2. 書寫方式

項(xiàng)目名稱:Test.Admin.Core

公共資源文件夾:包含各類共享資源和基礎(chǔ)服務(wù)。

接口文件夾:放置接口定義的文件夾。

接口1:具體的接口文件。接口2:具體的接口文件。 抽象類文件夾:放置抽象類的文件夾。

抽象類1:具體的抽象類文件。抽象類2:具體的抽象類文件。 資源類1:公共資源類。資源類2:公共資源類。 SqlSugar ORM:集成了 SqlSugar ORM,用于處理數(shù)據(jù)庫操作。

Pager 分頁:處理數(shù)據(jù)庫查詢結(jié)果的分頁。Repositories 倉庫類:提供數(shù)據(jù)查詢和持久化的方法。 緩存機(jī)制類:用于優(yōu)化數(shù)據(jù)庫查詢,減少數(shù)據(jù)庫訪問次數(shù),提高性能。擴(kuò)展方法類:定義自定義的查詢擴(kuò)展或其他實(shí)用工具方法。工作單元類:用于管理數(shù)據(jù)庫事務(wù),確保數(shù)據(jù)操作的一致性和完整性。過濾器類:用于添加特定的過濾器或配置查詢選項(xiàng)。

柚子快報(bào)邀請(qǐng)碼778899分享:c# 系統(tǒng)架構(gòu)分析

http://yzkb.51969.com/

推薦鏈接

評(píng)論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19525759.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄