Rafy 領域實體框架簡介

img

按照最新的功能,更新了最新版的《Rafy 領域實體框架的介紹》,內容以下:html


本文包含如下章節:git

  • 簡介
  • 特色
  • 優點

簡介

Rafy 領域實體框架是一個輕量級 ORM 框架。github

與通常的 ORM 框架不一樣的是,它不僅關注於通常性的面向對象實體與關係數據庫的映射,而是更關注於富領域模型(聚合實體)與關係數據庫的映射。使得開發者能夠很是方便地使用富領域模型的同時,配備強大的實體屬性設計、查詢功能,併兼顧了極高的開發效率。數據庫

該框架可脫離 Rafy 框架其它組件獨立運行,同時集領域驅動設計、面向服務架構、模型驅動架構、產品線工程方法於一身,是 Rafy 框架中其它組件(如界面生成框架等高級功能)的基礎。架構

Rafy 領域實體框架目前已經在大量的真實產品、項目中被應用,且口碑較好。咱們常常會在開發者在使用後收取使用者的反饋。開發者在使用以後,特別是能熟練使用此框架以後,每每以爲經過此框架來開發應用程序,開發效率較高。框架自己也針對平時開發過程當中一些常常須要處理的場景提供了易用的解決方案,這能讓開發者更加專一於業務邏輯、而不是技術問題。這也正是領域驅動設計的核心設計哲學。框架

特色

Rafy 領域實體框架,有如下特色:分佈式

  • 領域驅動設計
    相對於一些注重概念、使用複雜的 DDD 框架,Rafy 更加註重實踐。實現了 DDD 中與實際開發結合緊密的重要概念:聚合實體、標識、倉庫、服務、分層架構、CQRS,同時保證了開發的易用性。詳情參見:Rafy 與經典 DDD 的關係。 實體基類的設計支持關係的延遲加載、自動冗餘屬性、大對象屬性、數據綁定、樹型實體等。詳情見:領域實體。
    實體使用了自定義屬性系統(託管屬性框架)。這使得運行時能夠再也不使用反射,而是使用內置的屬性管理方式,運行效率更高。同時,這些屬性的 API 直接公佈,更方便開發人員編寫面向本身應用的框架。詳情見:實體屬性。
    倉庫基類則實現了組合實體的添加、刪除、修改,並提供了大量的默認查詢。詳情見:實體倉庫。
    領域服務是跨組合實體的業務邏輯的封裝體,也是 SOA 架構的基礎。詳情見:領域服務。組件化

  • 插件化(組件化)架構
    Rafy 實體框架相對於傳統的 ORM 框架,一個很大的不一樣在於支持插件化的架構。
    實體的插件化使得咱們能夠把一組相關的實體封裝爲一個業務組件,並最終逐漸造成一個業務組件的倉庫。當開發新的應用程序時,能夠在業務組件中選擇相關組件進行組裝,以實如今業務級別上的更高層次的重用。
    可是,業務組件要實現真正的重用,須要給出不一樣的層次的擴展點。不然,使用者會由於當前業務組件能力的不足而不得不選擇棄用該組件,轉而自行從新開發相似的功能。這是目前大量組件化框架所遇到的最大問題。針對這個問題,基於 Rafy 編寫的實體組件,內置提供了多種多樣的擴展點:實體屬性的擴展(添加新的屬性、替換當前屬性的邏輯)、查詢的擴展(添加新查詢、替換當前查詢邏輯)、業務控制器的擴展(添加新邏輯、替換當前邏輯、替換整個控制器)、服務的擴展。這些擴展點均可以由額外的新插件來完成,而無須要修改當前插件的源碼。這樣的方式使得組件的使用者在組件自己能力不夠時,不須要棄用該組件,而是直接編寫新插件來擴展該組件便可,進而大大提高了組件的重用度。
    詳情見:產品線工程、插件化架構、現有插件。單元測試

  • CodeFirst 開發模式
    使用 Rafy 領域實體框架,採用 CodeFirst 開發模式,可使得開發人員在開發過程當中只關心領域實體的關係、屬性,而不須要關心數據庫結構的變化。
    在開發過程當中,只須要配置好數據庫鏈接後,建庫、建表、建字段都會由 Rafy 完成。實體結構上的變化:類型、屬性、關係,都會由 Rafy 自動同步到數據庫上。相對於傳統的三層應用程序,在實體中添加、刪除一個字段,開發人員再也不須要修改應用程序的數據庫、DAL、BLL代碼,而由框架自動同步,大大提升了開發效率。
    同時,生成的數據庫知足第三泛式的要求。
    詳情參見:數據庫同步功能。測試

  • 支持 Net Standard
    最新的 Rafy 領域實體框架是基於 Net Standard 版原本開發的,也就意味着它能夠很好地配合 .Net Core 來實現跨平臺(Windows、Linux、MacOS)。

  • 多數據庫支持
    Rafy 領域實體框架支持把同一份實體代碼映射到多種數據庫。開發者切換數據庫時,只須要簡單地修改鏈接字符串便可。
    目前已經支持了 SqlServer 2005-20十二、Oracle十、MySql,以及文件型數據庫 SQLCE4。其它數據庫的支持也在研發中。
    詳情參見:多數據庫支持。

  • 支持部署爲單機、直連、分佈式等多種應用程序
    領域實體框架在設計初就已經考慮到了各類可能會被使用的應用程序類型。目前也已經在不少類型的真實項目中被應用,穩定,高效。開發者能夠在各類類型的應用程序中使用 Rafy 領域實體框架:

  • 單機應用程序
    簡單的一些本地程序,通常使用 SQLCE 文件型數據庫(SqlLite 正在支持中……)。

  • 直連數據庫程序
    與單機應用程序相似,在此類程序中可以使用 Rafy 直連數據庫,如 SQLServer、Oracle、MySql 等。

  • 分佈式應用程序
    Rafy 中的領域實體自己可直接用於分佈式傳輸,因此能夠很是方便地開發客戶端+服務端(C/S)程序。另外,實體倉庫的設計,使得開發者不須要修改一行代碼,便可無縫支持分佈式遠程調用。
    也就是說,使用 Rafy 編寫的實體、查詢、服務,原生就支持分佈式的部署方式。既能夠部署爲直接鏈接數據庫,也能夠部署爲客戶端經過服務來間接訪問數據庫。同時,Rafy 針對分佈式傳輸進行了優化,如:基於自定義的託管屬性框架,在對實體的數據進行序列化時,只會傳輸有效數據,而不會傳輸實體中默認的空數據,也提升了數據傳輸的效率。
    部署的相關內容,詳情參見:部署。

  • 零配置
    框架的使用對開發人員要求很是簡單,默認狀況下基本不須要做任何配置。這樣提升了開發的效率。
    Rafy 框架的快速開發思想之一是支持默認值,儘可能少使用配置。在必要時,僅需很是少的配置便可達到運行時的靈活變化。

  • 與 VS 集成
    Rafy 的一個重要做用就是爲了提高開發效率,因此咱們爲 VisualStudio 開發了 RafySDK 插件,其中包含項目模板、代碼生成、領域建模等功能。一體化的開發環境,能夠更加快速地開發 Rafy 應用程序。

  • 穩定、質量有保障
    領域實體框架的代碼行有 5 萬多行。爲了保證框架的穩定性及運行質量,咱們爲框架編寫了 700 多個單元測試,以測試框架的各個功能是否運轉正常並保證兼容性。

優點

與 EF、NH 等傳統 ORM 框架相比,使用 Rafy 領域實體框架的優點在於:

  • 領域驅動設計:傳統 ORM 只是爲了解決面向對象類型與關係數據庫的映射,而 Rafy 解決的是領域實體(領域模型)與關係數據庫的映射。

  • 插件化架構、產品線工程:使得通用業務邏輯真正可以以插件的形式開發,並真正能實施業務組件級別的大規模重用。例如:現有插件。

  • 傳統 ORM 只作數據處理,開發人員不得不繼續考慮不少其它的問題,例如分層架構、分佈式傳輸、遠程懶加載、界面數據綁定等功能;而 Rafy 則提供了一體化解決方案,包括:倉庫設計、分佈式設計、託管屬性設計、服務設計、界面綁定設計等。

相關文章
相關標籤/搜索