為什麼選擇ABP.IO平台

abp.io mascot

本文檔旨在回答一個大問題:

“為什麼應該使用 ABP.IO 平台而不是從頭開始創建新的解決方案?”

該文件介紹了建立現代軟體解決方案的挑戰,並解釋了 ABP 如何應對這些挑戰。

abp.io mascot

建立新的解決方案

當您需要開始一個新的解決方案時,您需要問自己很多問題,並且在開始編寫第一個業務程式碼之前您應該花費大量時間。


問題

即使創建一個幾乎空的解決方案也是具有挑戰性的;

  • 您如何跨專案組織程式碼庫?
  • 有哪些層以及它們如何相互作用?
  • 如何整合到第三方函式庫和系統?
  • 如何設定自動化測試?

動態血壓解決方案

ABP 基於領域驅動設計原則提供了一個架構良好、分層且可用於生產的啟動解決方案。該解決方案還包括每個層的預先配置單元和整合測試項目。


問題

您應該使用哪些函式庫來實現常見需求?軟體開發生態系統是高度動態的,這使得跟上最新的工具、函式庫、趨勢和方法變得具有挑戰性。

動態血壓解決方案

ABP 將流行的、成熟的和最新的庫預先整合到解決方案中。您不需要花時間整合它們或使它們相互溝通。它們開箱即用,可以正常工作。


問題

在解決 UI 問題時,會出現一系列挑戰。其中包括為響應式、現代且適應性強的 UI 套件奠定基礎,該套件具有一致的外觀和導航選單、頁首、工具列、頁腳、小部件等一系列功能。

即使您選擇預先設計的主題,將其無縫整合到您的專案中也可能需要數天的開發時間。另一個障礙在於升級此類主題。通常,主題的 HTML/CSS 結構會與您的 UI 程式碼交織在一起,從而呈現未來的主題變更或升級複雜的任務。程式碼和設計的這種交織使後續調整的靈活性變得複雜。

動態血壓解決方案

ABP 框架提供了一個獨特的主題系統,可以將您的 UI 程式碼從主題約束中解放出來。主題獨立存在,包裝為 NuGet 或 NPM 套件,使主題安裝或升級只需幾分鐘。雖然您保留開發自訂主題或整合現有主題的選項,但 ABP Commercial 提供了一系列精緻且現代的主題。

此外,還有 Telerik 和 DevExpress 等 UI 元件提供者。然而,這些提供者主要提供單獨的元件,讓您有責任建立自己的佈局系統。在基於 ABP 的專案中工作時,您可以無縫合併這些庫,就像在任何其他專案中一樣。


問題

建立強大的測試環境是一項耗時的工作。它涉及在解決方案中設置專用測試項目,仔細選擇必要的工具,創建服務和資料庫模擬,製作必要的基類和實用服務以最大限度地減少測試中的冗餘程式碼,以及解決各種相關任務。

動態血壓解決方案

ABP 啟動範本預先配備了已設定的測試項目,可為您簡化流程。這意味著從第一天起,您就可以立即開始編寫初始單元或整合測試程式碼。


問題

設定開發解決方案後,您通常必須教導開發人員系統如何運作以及如何使用相同的商定方法來建構它。即使您為他們提供培訓,保持文件最新也可能很困難。隨著時間的推移,每個開發人員可能會以自己的方式編寫程式碼,導致編寫程式碼的規則變得彼此不同。

動態血壓解決方案

ABP 解決方案已經組織得很整齊,並且有明確的解釋。逐步教學和指南向您準確展示如何處理 ABP 專案。


問題

開始開發後,您必須追蹤用於升級和補丁的庫的新版本。

動態血壓解決方案

我們定期將所有軟體包更新到最新版本,並在穩定版本發布之前對其進行測試。當您更新 ABP 框架時,其所有相依性都會升級為邊緣技術。

Abp update CLI command automatically discovers and upgrades all ABP-dependant NuGet and NPM packages in a solution. With ABP, it is easier to stay with the latest versions.


不要重複自己!

abp.io 不要重複自己!

創建基礎解決方案需要大量時間並且需要良好的架構經驗。然而,這只是開始!當您開始開發時,您可能需要編寫大量重複的程式碼;如果所有這些都能自動處理,那就太好了。

ABP 透過遵循約定優於配置的原則,盡可能地自動化和簡化重複程式碼。但是,當您需要切換到手排時,它不會限制您。控制權始終掌握在您手中。

abp.io 不要重複自己!

問題

單一登入、Active Directory / LDAP 整合、OpenIddict 整合、社群登入、雙重認證、忘記/重設密碼、電子郵件啟動、新使用者註冊、密碼複雜性控制、嘗試失敗時鎖定帳戶、顯示失敗的登入嘗試...等等。我們知道您對所有這些通用要求都很熟悉。你並不孤單!

動態血壓解決方案

ABP 框架和商業版本提供了所有這些預先實現的標準內容作為可重複使用的帳戶模組。您只需啟用並配置您需要的內容即可。


問題

橫切關注點是應該為每個用例實現的基本重複邏輯。一些例子;

  • 啟動事務,成功時提交,錯誤時回滾。
  • 處理和報告異常,向客戶端傳回正確的錯誤回應並在客戶端處理錯誤情況。
  • 實現授權和驗證,返回正確的回應並在客戶端處理這些回應。

動態血壓解決方案

ABP 框架自動化或簡化了所有常見的橫切關注點。您只需編寫對您的業務重要的程式碼,ABP 將按照慣例處理其餘部分。


問題

您通常需要建立基礎架構才能正確實施您的架構。例如,您通常實作儲存庫模式。您定義一些基底類別來簡化和標準化建立實體、服務、控制器和其他物件。

動態血壓解決方案

ABP 框架提供了所有這些以及更多開箱即用的功能。它是成熟的並且有充分的記錄。


問題

在每個業務應用中都有很多需求需要重複實現;

  • 細緻的權限體系,依照角色和使用者對UI進行權限管理。
  • 寫入審核日誌和實體歷史記錄以追蹤使用者何時修改資料庫記錄。
  • 對您的實體進行軟刪除,以便將它們標記為已刪除,而不是從資料庫中物理刪除並在查詢中自動過濾已刪除的實體。
  • 建立抽象和包裝器以從前端程式碼使用後端 API。
  • 排隊並執行後台作業。
  • 處理全球系統中的多個時區。
  • 在伺服器和用戶端之間共用驗證、本地化、授權邏輯。

動態血壓解決方案

ABP 提供了一個基礎設施來輕鬆實現此類需求。同樣,您不必花費寶貴的時間一次又一次地重新實現所有這些。


問題

您將在典型的 Web 應用程式中建立許多類似的頁面。他們中的大多數都會執行類似的 CRUD 操作。重複建立這樣的頁面非常繁瑣,而且容易出錯。

動態血壓解決方案

ABP Suite可以在幾秒鐘內為您的實體產生全端 CRUD 頁面。產生的程式碼是分層且乾淨的。所有標準驗證和授權要求均已實施。另外,也會產生單元測試類別。一旦獲得完全運行的頁面,您可以根據您的業務需求進行修改。


問題

大多數庫都被設計為低級別,您通常會做一些工作來正確整合它們,而無需在解決方案中的各處重複相同的整合和配置程式碼。例如,假設您必須使用 RabbitMQ 來實現分散式事件匯流排。你想做的就是;將訊息傳送到佇列並處理傳入的訊息。但您需要了解訊息傳遞模式、佇列和交換細節。要編寫高效的程式碼,您必須建立一個池來管理連線、客戶端和通道。您還必須處理異常、ACK 訊息、失敗時重新連線到 RabbitMQ 等。

動態血壓解決方案

例如,ABP 的 RabbitMQ 分散式事件匯流排整合抽象化了所有這些細節。您可以輕鬆地發送和接收訊息。您需要編寫低階程式碼嗎?沒問題,您隨時都可以這樣做。當您需要使用正在使用的庫的低階功能時,ABP 不會限制您。


問題

所有基礎設施,即使是最簡單的方式,也需要花費大量時間來建造、維護和記錄。隨著時間的推移,它會變得越來越大,並且很難在解決方案中維護它。將它們分離成可重複使用的專案是建立您自己的內部框架的起點。

建置、記錄、培訓和維護內部框架確實很困難。如果您沒有經驗豐富的專門框架團隊,您的內部框架很快就會變成無人能理解和維護的未記錄的遺留程式碼。另一方面,這些框架一般是由團隊中的一、兩個開發人員所開發的。這些人正在成為知識孤島。這對他們有利,但對公司不利,因為他們是專案的單點故障-SPOF- 。一旦他們離開公司,專案就會急劇下降。

動態血壓解決方案

ABP框架是一個社群驅動的、文件齊全、成熟且通用的應用程式框架。由經驗豐富的開發人員組成的團隊正在努力使其保持最新、易於理解和舒適使用。使用這樣一個穩定的框架可以讓您專注於自己的業務程式碼,並在需要時獲得專家的框架協助。


建築基礎設施

abp.io mascot

SaaS 應用程式、模組化或微服務系統是最常用的企業軟體模式。建構這樣的系統不僅需要良好的理解和經驗,還需要強大的軟體基礎設施。否則,您會發現自己花費了大量精力來支援程式碼庫中的這些架構細節。

abp.io mascot

問題

要建立真正的模組化系統並不容易!系統的所有方面(資料庫、實體、API、UI 頁面/元件)都可以拆分為模組,並且每個模組都可以重複使用,無需其他模組。普通的 ASP.NET Core 並不會提供這樣的模組化架構。如果你需要的話,你應該從頭開始考慮。

動態血壓解決方案

ABP框架天生就是一個模組化的應用程式開發結構。框架中的每個功能都是為了與模組化相容而開發的。文件和指南解釋如何以標準方式開發可重複使用模組。


問題

多租戶是實施 SaaS 系統的常用方法。然而,實施一致的多租戶基礎設施可能會變得複雜。

動態血壓解決方案

ABP 框架提供了完整的多租戶基礎設施,並從業務程式碼中抽像出複雜性。您的應用程式程式碼將主要是多租戶感知的,而 ABP 框架會自動將資料庫、快取和租戶的其他詳細資訊相互隔離。它支援單一資料庫、每個租戶資料庫和混合方法。它正確配置了 Microsoft Identity 和 OpenIddict 等程式庫,這些程式庫通常不相容於多租用戶。


問題

建構微服務系統需要許多基礎設施細節:對應用程式和微服務進行身份驗證和授權以及在微服務之間實現非同步訊息傳遞和同步(Rest/GRPC)通訊模式是最基本的問題。

動態血壓解決方案

ABP 框架提供服務、指南和範例,協助您使用業界標準工具實施微服務解決方案。

ABP Commercial 甚至更進一步,提供了一個完整的啟動範本來啟動您的微服務解決方案。


abp.io module

預建模區塊

問題

我們所有人都有相似但略有不同的業務需求。然而,我們都應該重新發明輪子,因為沒有人的程式碼可以直接在我們的解決方案中工作。它們都是更大解決方案的嵌入部分。

abp.io module

動態血壓解決方案

ABP Commercial模組提供了大量可重複使用的應用模組,例如付款、聊天、檔案管理、稽核日誌報告等。所有這些模組都可以輕鬆安裝到您的解決方案中並直接運行。我們不斷添加更多模組。

所有模組均設計為可根據您的業務需求進行客製化。如果您需要完全控制,您可以下載任何模組的完整原始程式碼,並根據您的特定業務需求進行完全自訂。


總部社區

總部社區

最後,在一個每個人都遵循相似的編碼風格和原則並共享通用基礎設施的大社區中,當您遇到麻煩或需要設計決策幫助時,這會帶來力量。由於我們編寫的程式碼相似,因此我們可以更好地互相幫助。 ABP 是一個社區支持的項目,在 GitHub 上擁有超過 10K star。

在 ABP 開發人員之間共用程式碼甚至可重複使用的程式庫很容易。適合您的程式碼片段也適用於其他人。有很多範例和教程,您可以直接為您的應用程式實現。

當您聘請曾經使用過 ABP 架構的開發人員時,他會立即了解您的解決方案並在很短的時間內開始開發。