<optgroup id="6y7f6"><small id="6y7f6"></small></optgroup>

<code id="6y7f6"></code>

  • <p id="6y7f6"><tbody id="6y7f6"><ins id="6y7f6"></ins></tbody></p>
    <code id="6y7f6"><form id="6y7f6"></form></code>

      .NET 入門到高級路線

      .NET Web入門到高級路線

      C# 基礎語法

      微軟官方教程地址 :C# 文檔 - 入門、教程、參考。 | Microsoft Learn

      B站視頻:

      劉鐵猛《C#語言入門詳解》全集_嗶哩嗶哩_bilibili

      C#語言入門詳解

      .NET Core 基礎知識

      微軟官方教程地址:使用 ASP.NET Core 創建 Web API | Microsoft Learn

      .NET 6教程,.Net Core 2022視頻教程,楊中科主講_嗶哩嗶哩_bilibili

      ASP.NET Core基礎知識概述

      Blazor

      Blazor 是一個使用 Blazor 生成交互式客戶端 Web UI 的框架:

      • 使用 C# 代替 JavaScript 來創建信息豐富的交互式 UI。
      • 共享使用 .NET 編寫的服務器端和客戶端應用邏輯。
      • 將 UI 呈現為 HTML 和 CSS,以支持眾多瀏覽器,其中包括移動瀏覽器。
      • 與新式托管平臺(如 Docker)集成。
      • 使用 .NET 和 Blazor 生成混合桌面和移動應用。

      使用 .NET 進行客戶端 Web 開發可提供以下優勢:

      • 使用 C# 代替 JavaScript 來編寫代碼。
      • 利用現有的 .NET 庫生態系統。
      • 在服務器和客戶端之間共享應用邏輯。
      • 受益于 .NET 的性能、可靠性和安全性。
      • 使用開發環境(例如 Visual StudioVisual Studio Code)保持 Windows、Linux 或 macOS 上的工作效率。
      • 以一組穩定、功能豐富且易用的通用語言、框架和工具為基礎來進行生成。

      Blazor 微軟官方文檔

      Blazor 基礎教程

      Blazor UI框架推薦

      ASP.NET Core 官方文檔

      GitHub / Web VSCode地址

      ORM

      ORM簡介
      對象關系映射(Object Relational Mapping,簡稱ORM)模式是一種為了解決面向對象與關系數據庫存在的互不匹配的現象的技術。

      簡單的說,ORM是通過使用描述對象和數據庫之間映射的元數據,將程序中的對象自動持久化到關系數據庫中。

      那么,到底如何實現持久化呢?一種簡單的方案是采用硬編碼方式,為每一種可能的數據庫訪問操作提供單獨的方法。

      這種方案存在以下不足:
      1.持久化層缺乏彈性。一旦出現業務需求的變更,就必須修改持久化層的接口
      2.持久化層同時與域模型與關系數據庫模型綁定,不管域模型還是關系數據庫模型發生變化,毒藥修改持久化曾的相關程序代碼,增加了軟件的維護難度。

      • 簡單:以最基本的形式建模數據。
      • 傳達性:數據庫結構被任何人都能理解的語言文檔化。
      • 精確性:基于數據模型創建正確標準化了的結構。

      FreeSql

      是一款功能強大的對象關系映射(O/RM)組件,支持 .NET Core 2.1+、.NET Framework 4.0+ 以及 Xamarin?

      EntityFrameworkCore

      Entity Framework (EF) Core 是輕量化、可擴展、開源和跨平臺版的常用 Entity Framework 數據訪問技術。(作者推薦efcore是由微軟官方維護)

      Dapper

      Dapper是由Stack Overflow背后的團隊創建的micro-ORM。Dapper 是 .NET 的簡單對象映射器,在速度方面擁有 Micro ORM 之王的稱號,幾乎與使用原始 ADO.NET 數據讀取器一樣快。ORM是一個對象關系映射器,負責數據庫和編程語言之間的映射。

      SqlSugar

      SqlSugar 是一款 老牌 .NET 開源ORM框架,由果糖大數據科技團隊維護和更新

      關系型數據庫

      SQL Server

      SQL Server是由Microsoft開發和推廣的關系數據庫管理系統(DBMS);
      SQL Server使用方便,伸縮性好與相關軟件集成程度高;
      SQL Server 數據庫引擎為關系型數據和結構化數據提供了更安全可靠的存儲功能。

      MySQL

      MySQL 是最流行的關系型數據庫管理系統,在 WEB 應用方面 MySQL 是最好的 RDBMS(Relational Database Management System:關系數據庫管理系統)應用軟件之一。

      PostgreSQL

      PgSQL PostgreSQL 的歷史簡介. 現在被稱為 PostgreSQL 的對象- 關系型數據庫管理系統 (有一段時間被稱為 Postgres95)是從伯克利寫的 POSTGRES 軟件包發展而來的。. 經過十幾年的發展, PostgreSQL 是世界上可以獲得的最先進的 開放源碼 的 數據庫系統 , 它提供了多版本并行控制,支持幾乎所有 SQL 構件 (包括 子查詢 , 事務 和用戶定義類型和函數), 并且可以獲得非常廣闊范圍的(開發)語言綁定(包括 C,C++,Java,perl,tcl,和 python)

      中間件

      中間件是介于應用系統和系統軟件之間的一類軟件,它使用系統軟件所提供的基礎服務(功能),銜接網絡上應用系統的各個部分或不同的應用,能夠達到資源共享、功能共享的目的。它并沒有很嚴格的定義,但是普遍接受IDC的定義:中間件是一種獨立的系統軟件服務程序,分布式應用軟件借助這種軟件在不同的技術之間共享資源,中間件位于客戶機服務器的操作系統之上,管理計算資源和網絡通信。從這個意義上可以用一個等式來表示中間件:中間件=平臺+通信,這也就限定了只有用于分布式系統中才能叫中間件,同時也把它與支撐軟件和實用軟件區分開來。

      MongoDB

      MongoDB 是一個基于分布式文件存儲的數據庫。由 C++ 語言編寫。旨在為 WEB 應用提供可擴展的高性能數據存儲解決方案。

      MongoDB 是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。

      Redis

      REmote DIctionary Server(Redis) 是一個由 Salvatore Sanfilippo 寫的 key-value 存儲系統,是跨平臺的非關系型數據庫。

      Redis 是一個開源的使用 ANSI C 語言編寫、遵守 BSD 協議、支持網絡、可基于內存、分布式、可選持久性的鍵值對(Key-Value)存儲數據庫,并提供多種語言的 API。

      Redis 通常被稱為數據結構服務器,因為值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等類型。

      RabbitMQ

      RabbitMQ是實現了高級消息隊列協議(AMQP)的開源消息代理軟件(亦稱面向消息的中間件)。RabbitMQ服務器是用Erlang語言編寫的,而集群和故障轉移是構建在開放電信平臺框架上的。所有主要的編程語言均有與代理接口通訊的客戶端庫。

      ActiveMQ

      Apache ActiveMQ是Apache軟件基金會所研發的開放源代碼消息中間件;由于ActiveMQ是一個純Java程序,因此只需要操作系統支持Java虛擬機,ActiveMQ便可執行。

      SkyWalking

      用于分布式系統的應用程序性能監視工具,特別為微服務、云原生和基于容器(Kubernetes)架構設計。

      Consul

      Consul是微服務架構中,解決服務發現、配置中心的分布式中間件。
      Consul是HashiCorp公司推出的開源工具,Consul由Go語言開發,部署起來非常容易,只需要極少的可執行程序和配置文件,具有綠色、輕量級的特點。Consul是分布式的、高可用的、 可橫向擴展的用于實現分布式系統的服務發現與配置。

      • 服務發現(Service Discovery):Consul提供了通過DNS或者HTTP接口的方式來注冊服務和發現服務。一些外部的服務通過Consul很容易的找到它所依賴的服務。
      • 健康檢查(Health Checking):Consul的Client可以提供任意數量的健康檢查,既可以與給定的服務相關聯(“webserver是否返回200 OK”),也可以與本地節點相關聯(“內存利用率是否低于90%”)。操作員可以使用這些信息來監視集群的健康狀況,服務發現組件可以使用這些信息將流量從不健康的主機路由出去。
      • Key/Value存儲:應用程序可以根據自己的需要使用Consul提供的Key/Value存儲。 Consul提供了簡單易用的HTTP接口,結合其他工具可以實現動態配置、功能標記、領袖選舉等等功能。
      • 安全服務通信:Consul可以為服務生成和分發TLS證書,以建立相互的TLS連接。意圖可用于定義允許哪些服務通信。服務分割可以很容易地進行管理,其目的是可以實時更改的,而不是使用復雜的網絡拓撲和靜態防火墻規則。
      • 多數據中心:Consul支持開箱即用的多數據中心. 這意味著用戶不需要擔心需要建立額外的抽象層讓業務擴展到多個區域。

      Kafka

      Kafka是一種高吞吐量的分布式發布訂閱消息系統,它可以處理消費者規模的網站中的所有動作流數據。 這種動作(網頁瀏覽,搜索和其他用戶的行動)是在現代網絡上的許多社會功能的一個關鍵因素。 這些數據通常是由于吞吐量的要求而通過處理日志和日志聚合來解決。 對于像Hadoop的一樣的日志數據和離線分析系統,但又要求實時處理的限制,這是一個可行的解決方案。Kafka的目的是通過Hadoop的并行加載機制來統一線上和離線的消息處理,也是為了通過集群機來提供實時的消費。

      Dapr

      Dapr 是一個可移植的、事件驅動的運行時,它使任何開發人員能夠輕松構建出彈性的、無狀態和有狀態的應用程序,并可運行在云平臺或邊緣計算中,它同時也支持多種編程語言和開發框架。

      微軟Dapr簡介

      運維

      Docker

      Docker 是一個開源的應用容器引擎,基于 Go 語言 并遵從 Apache2.0 協議開源。

      Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然后發布到任何流行的 Linux 機器上,也可以實現虛擬化。

      容器是完全使用沙箱機制,相互之間不會有任何接口(類似 iPhone 的 app),更重要的是容器性能開銷極低。

      DockerCompose

      Compose 是用于定義和運行多容器 Docker 應用程序的工具。通過 Compose,您可以使用 YML 文件來配置應用程序需要的所有服務。然后,使用一個命令,就可以從 YML 文件配置中創建并啟動所有服務。

      Drone

      Drone是為繁忙的開發團隊提供的自助持續集成平臺。

      CI/CD

      CI 持續集成(Continuous Integration)
      協同開發是目前主流的開發方式,也就是多位開發人員可以同時處理同一個應用的不同模塊或者功能。

      但是,如果企業計劃在同一天,將所有開發分支代碼集成在一起,最終可能會花費很多時間和進行很多重復勞動,費事費力。因為代碼沖突是難以避免的。

      如果開發人員本地的環境和線上不一致的話,那么這個問題就更加復雜了。

      持續集成(CI)可以幫助開發者更加方便地將代碼更改合并到主分支。

      一旦開發人員將改動的代碼合并到主分支,系統就會通過自動構建應用,并運行不同級別的自動化測試(通常是單元測試和集成測試)來驗證這些更改,確保這些更改沒有對應用造成破壞。

      如果自動化測試發現新代碼和現有代碼之間存在沖突,CI 可以更加輕松地快速修復這些錯誤。

      CD 持續交付(Continuous Delivery)
      CI 在完成了構建、單元測試和集成測試這些自動化流程后,持續交付可以自動把已驗證的代碼發布到企業自己的存儲庫。

      持續交付旨在建立一個可隨時將開發環境的功能部署到生產環境的代碼庫。

      在持續交付過程中,每個步驟都涉及到了測試自動化和代碼發布自動化。

      在流程結束時,運維團隊可以快速、輕松地將應用部署到生產環境中。

      CD 持續部署(Continuous Deployment)
      對于一個完整、成熟的 CI/CD 管道來說,最后的階段是持續部署。

      它是作為持續交付的延伸,持續部署可以自動將應用發布到生產環境。

      實際上,持續部署意味著開發人員對應用的改動,在編寫完成后的幾分鐘內就能及時生效(前提是它通過了自動化測試)。這更加便于運營團隊持續接收和整合用戶反饋。

      總而言之,所有這些 CI/CD 的關聯步驟,都極大地降低了應用的部署風險。

      不過,由于還需要編寫自動化測試以適應 CI/CD 管道中的各種測試和發布階段,因此前期工作量還是很大的。

      微服務

      一種軟件開發技術- 面向服務的體系結構(SOA)架構樣式的一種變體,它提倡將單一應用程序劃分成一組小的服務,服務之間互相協調、互相配合,為用戶提供最終價值。每個服務運行在其獨立的進程中,服務與服務間采用輕量級的通信機制互相溝通(通常是基于HTTP的RESTful API)。每個服務都圍繞著具體業務進行構建,并且能夠獨立地部署到生產環境、類生產環境等。另外,應盡量避免統一的、集中式的服務管理機制,對具體的一個服務而言,應根據上下文,選擇合適的語言、工具對其進行構建。

      .NET 應用程序體系結構文檔

      .NET 微服務。適用于容器化

      使用 DDD 和 CQRS 模式降低微服務中的業務復雜性
      image

      領域驅動設計(DDD)

      域驅動設計 (DDD) 提倡基于與用例相關的真實業務來構建模型。 在構建應用程序的上下文中,DDD 用域來描述問題。 它將獨立的問題區域描述為界定的上下文(每個界定的上下文關聯一個微服務),并強調使用一種通用的語言來討論這些問題。 它還提出許多技術概念和模式,如具有充血模型的域實體(無貧血模型)、值對象、聚合和聚合根(或根實體)規則,用于支持內部實現。 本部分介紹這些內部模式的設計和實現。

      有時這些 DDD 技術規則和模式被認為是障礙,因為會導致實施 DDD 方法時的學習曲線較陡峭。 但重要的并非模式本身,而是如何根據業務問題組織代碼,并使用相同的業務術語(通用語言)。 此外,只有在需要實現采用重要業務規則的復雜微服務時,才應使用 DDD 方法。 較為簡單的功能,如 CRUD 服務,可使用較為簡單的方法來管理。

      設計和定義微服務時,最關鍵的任務是界定邊界。 借助 DDD 模式,可了解域中的復雜性。 對于每個界定的上下文的域模型,需確定和定義為域建模時所需的實體、值對象和聚合。 生成和優化限定在某個邊界內的域模型,該邊界用于定義上下文。 如果是微服務的形式,這會十分明晰。 這些邊界內的組件最終會成為微服務,但在某些情況下,BC 或業務微服務可由多個物理服務組成。 DDD 與邊界相關,微服務也是如此。

      在 CQRS 微服務中實現讀取/查詢

      對于讀取/查詢,來自 eShopOnContainers 引用應用程序的訂購微服務獨立于 DDD 模型和事務區域實現查詢。 此實現主要是因為查詢的需要和事務的需要有很大不同。 寫入的執行事務必須符合域邏輯。 另一方面,查詢是冪等的,可以與域規則分離。

      應用框架

      ABP

      ABP是一個開源且文檔友好的應用程序框架。ABP不僅僅是一個框架,它還提供了一個最徍實踐的基于領域驅動設計(DDD)的體系結構模型,可以支持.net framework和.net core兩種技術流派。

      ABP 框架特點

      • 依賴注入,這個部分使用 Castle windsor (依賴注入容器)來實現依賴注入,這個也是我們經常使用IOC來處理的方式;
      • Repository倉儲模式,已實現了Entity Framework、NHibernate、MangoDB、內存數據庫等,倉儲模式可以快速實現對數據接口的調用;
      • 身份驗證與授權管理,可以使用聲明特性的方式對用戶是否登錄,或者接口的權限進行驗證,可以通過一個很細粒度的方式,對各個接口的調用權限進行設置;
      • 數據有效性驗證,ABP自動對接口的輸入參數對象進行非空判斷,并且可以根據屬性的申請信息對屬性的有效性進行校驗;
      • 審計日志記錄,也就是記錄我們對每個接口的調用記錄,以及對記錄的創建、修改、刪除人員進行記錄等處理;
      • Unit Of Work工作單元模式,為應用層和倉儲層的方法自動實現數據庫事務,默認所有應用服務層的接口,都是以工作單元方式運行,即使它們調用了不同的存儲對象處理,都是處于一個事務的邏輯里面;
      • 異常處理,ABP框架提供了一整套比較完善的流程處理操作,可以很方便的對異常進行進行記錄和傳遞;
      • 日志記錄,我么可以利用Log4Net進行常規的日志記錄,方便我們跟蹤程序處理信息和錯誤信息;
      • 多語言/本地化支持,ABP框架對多語言的處理也是比較友好的,提供了對XML、JSON語言信息的配置處理;
      • Auto Mapping自動映射,這個是ABP的很重要的對象隔離概念,通過使用AutoMaper來實現域對象和DTO對象的屬性映射,可以隔離兩者的邏輯關系,但是又能輕松實現屬性信息的賦值;
      • 動態Web API層,利用這個動態處理,可以把Application Service 直接發布為Web API層,而不需要在累贅的為每個業務對象手工創建一個Web API的控制器,非常方便;
      • 動態JavaScript的AJax代理處理,可以自動創建Javascript 的代理層來更方便使用Web Api,這個在Web層使用。

      ABP 框架特別的功能

      • 多租戶支持(每個租戶的數據自動隔離,業務模塊開發者不需要在保存和查詢數據時寫相應代碼;
      • 軟刪除支持(繼承相應的基類或實現相應接口,會自動實現軟刪除)
      • 系統設置存取管理(系統級、租戶級、用戶級,作用范圍自動管理)
      • EventBus實現領域事件(Domain Events)
      • 模塊以及模塊的依賴關系實現插件化的模塊處理等等

      image

      MASA Framework

      全新的.NET現代應用開發,提供分布式應用運行時–基于Dapr云原生最佳實踐,能夠快速實現分布式、微服務、DDD,SaaS等現代應用開發

      image

      OpenIddict

      OpenIddict是什么?

      OpenIddict旨在提供一個通用的解決方案,在任何ASP中實現OpenID連接客戶端、服務器和令牌驗證支持。NET Core 2.1(及更高版本)應用程序。ASP。NET 4.6.1(及更高版本)應用程序也得到了完全的支持,這要歸功于原生的Microsoft。Owin 4.2集成。

      OpenIddict完全支持代碼/隱式/混合流、客戶端憑證/資源所有者密碼授予和設備授權流。

      OpenIddict原生支持實體框架核心、實體框架6和MongoDB,并且可以實現自定義存儲以支持其他提供者。

      結尾

      歡迎大佬繼續補充, 壯大 dotnet 生態!

      GitHub 地址: dotent入門到高級

      來自 token 的分享

      技術交流群: 737776595

      posted @ 2023-02-01 19:07  tokengo  閱讀(8797)  評論(32編輯  收藏  舉報
      欧洲黄色网页链接入口,免费A级毛片无码无遮挡久久影院,a免费黄色网址,国产一级黄色的网站
      <optgroup id="6y7f6"><small id="6y7f6"></small></optgroup>

      <code id="6y7f6"></code>

    1. <p id="6y7f6"><tbody id="6y7f6"><ins id="6y7f6"></ins></tbody></p>
      <code id="6y7f6"><form id="6y7f6"></form></code>