【開源】OSharp3.3框架解說系列:重新開源及3.3版本新特性


OSharp是什么?

  OSharp是個快速開發框架,但不是一個大而全的包羅萬象的框架,嚴格的說,OSharp中什么都沒有實現。與其他大而全的框架最大的不同點,就是OSharp只做抽象封裝,不做實現。依賴注入、ORM、對象映射、日志、緩存等等功能,都只定義了一套最基礎最通用的抽象封裝,提供了一套統一的API、約定與規則,並定義了部分執行流程,主要是讓項目在一定的規范下進行開發。所有的功能實現端,都是通過現有的成熟的第三方組件來實現的,除了EntityFramework之外,所有的第三方實現都可以輕松的替換成另一種第三方實現,OSharp框架正是要起隔離作用,保證這種變更不會對業務代碼造成影響,使用統一的API來進行業務實現,解除與第三方實現的耦合,保持業務代碼的規范與穩定。

本文已同步到系列目錄:OSharp快速開發框架解說系列

前言

  經過一段時間的努力,OSharp項目又有了全新的面貌,目前版本號已經更新到 3.3.2(github.comnuget),與之前3.0的版本又有了很大的差異。

  有些項目被拆分了,有些項目又被合並了,又新增了不少項目,有人就要問了,為什么不向前兼容呢?

  這個是比較無奈的事,有些是因為之前設計考慮不周,設計有缺陷,也有些是因為后面又有了更好的想法,也就不斷的改進了,至少總是不斷向好的方向發展的。並且現在框架處於開發階段,不能保持穩定,不斷調整是在所難免的。

重新開源

  經過這段時間的發展,OSharp項目已經比較算比較成熟了,能看得過眼,算是拿得出手了,現在也重新提交到了github開源平台中,開源地址依然為:

https://github.com/i66soft/osharp

  之前的舊版本,已經更名為osharp.v2,舊版本的地址為:https://github.com/i66soft/osharp.v2,請注意區分。

  歡迎大家關注(Watch)、支持(Star)、參與(Fork)《OSharp快速開發框架》開源項目的發展。

3.3版本新特性及項目組成

新特性

  下面我們還是先來看看,截止到目前為止,當前版本的一些新特性吧。

  1. 自定義了一個Web.Config的配置節點,用於配置框架中一些必要的開關,初始化環境等。當然,基於“約定勝於配置”的傳統,這些配置不是必須的,如果不使用配置節點,系統也能按一套默認的設置來正常運行。
  2. 從框架級別對框架初始化進行了抽象,框架定義了初始化流程,具體的第三方組件,僅作為具體的服務實現存在。
  3. 參考 ASP.NET 5 的依賴注入設計,從框架級別提供了依賴注入的抽象封裝,可以極其方便的使用第三方IoC組件實現依賴注入功能。
  4. 參考 ASP.NET 5 的“一切皆服務”的設計思想,配合第2點對依賴注入的支持,很容易構建一套可組裝的松耦合的架構,一切變化點的實現方案均可很容易進行替換。
  5. 基於 ASP.NET Identity 的權限系統設計,一切權限均可配置,可以很輕松實現角色-功能、用戶-功能、角色-數據、用戶-數據等細粒度的功能權限與數據權限控制。

項目組成

  我們來看看這個版本相對於之前的版本,項目結構有何變化,下面這三張圖片的對比,可以一目了然的展現OSharp的發展歷程:

OSharp 2.0

  OSharp2.0版本只是簡單的三層架構,主要是實現了EntityFramework的動態上下文構建的功能,MVC/WebApi/SignalR等平台的相關代碼,僅是作為輔助工具組件的形式存在,架構上比較簡單。

  OSharp 2.0

OSharp 3.0

  OSharp3.0對增加了一個SiteBase項目,系統初始化也初具雛形,但仍然極其簡單,依賴注入功能的實現仍然強依賴於Autofac,沒有進行解耦。對MVC/WebApi等平台的整合有了一些封裝,但平台間沒有進行分離,而是雜合在一個類庫中,相互污染程度比較大。

  OSharp 3.0

OSharp 3.3

  OSharp3.3由依賴注入的抽象封裝開始,以MVC6的“一切皆服務”的架構思想,對整個架構進行了大改,並嚴格隔離了MVC/WebApi/SignalR等平台,使之互不影響,並可單獨構建運行環境,同時加入了權限認證的支持。

  OSharp 3.3

 

  乍一看,似乎 OSharp 3.3 版本的類庫數量增加了很多個,其實也沒增加多少的,只是把原來整合在一起的構架按 Mvc/WebApi/SignalR 等平台進行了拆分,拆分了之后,能更靈活的對需要的功能進行引用,不必引用使用不到的功能。

 3.3版本類庫功能及依賴說明

工具類庫

  • OSharp.Utility
    • 作用:工具類組件,對常用工具類輔助操作進行封裝
    • 依賴項:Json.NET

框架核心類庫

  • OSharp.Core
    • 作用:框架核心組件,為框架定義配置節點,依賴注入,數據訪問,日志,緩存,框架初始化,基礎數據等功能的基礎類、核心接口等
    • 依賴項:OSharp.Utility
  • OSharp.Core.Data.Entity:
    • 作用:數據訪問組件,封裝基於EntityFramework的數據訪問功能的實現
    • 依賴項:OSharp.Core,EntityFramework,EntityFramework.Extended,AutoMapper
  • OSharp.Core.Data.Entity.MySql
    • 作用:MySql數據訪問組件,對數據訪問組件提供基於EntityFramework的數據訪問功能的MySql數據庫的支持
    • 依賴項:OSharp.Core.Data.Entity,MySql.Data.Entity

技術平台類庫

MVC平台

  • OSharp.Web.Mvc
    • 作用:ASP.NET MVC 組件,封裝MVC通用操作及MVC平台初始化實現
    • 依賴項:OSharp.Core.Data.Entity,OWin,ASP.NET MVC5
  • OSharp.Autofac.Mvc
    • 作用:ASP.NET MVC 的Autofac依賴注入組件,基於Autofac對框架的MVC平台的依賴注入功能進行實現
    • 依賴項:OSharp.Core,ASP.NET MVC5,Autofac.Integration.Mvc

WebApi平台

  • OSharp.Web.WebApi
    • 作用:ASP.NET WebApi 組件,封裝WebApi通用操作及WebApi平台初始化實現
    • 依賴項:OSharp.Core.Data.Entity,OWin,ASP.NET WebApi5
  • OSharp.Autofac.WebApi
    • 作用:ASP.NET WebApi 的Autofac依賴注入組件,基於Autofac對框架的WebApi平台的依賴注入功能進行實現
    • 依賴項:OSharp.Core,ASP.NET WebApi5,Autofac.Integration.WebApi

SignalR平台

  • OSharp.Web.SignalR
    • 作用:ASP.NET SignalR 組件,封裝SignalR通用操作及SignalR平台初始化實現
    • 依賴項:OSharp.Core.Data.Entity,OWin,ASP.NET SignalR2
  • OSharp.Autofac.SignalR
    • 作用:ASP.NET SignalR 的Autofac依賴注入組件,基於Autofac對框架的SignalR平台的依賴注入功能進行實現
    • 依賴項:OSharp.Core,ASP.NET SignalR2,Autofac.Integration.SignalR

本地程序平台

  • OSharp.App.Local
    • 作用:本地程序組件,封裝Winform/WPF/Services/Console等形式的本地應用程序提供框架初始化功能
    • 依賴項:OSharp.Core,Autofac
  • OSharp.Web.Client
    • 作用:本地程序網絡組件:封裝Winform/WPF/Services/Console等形式的本地應用程序提供WebApi/SignalR等網絡功能
    • 依賴項:OSharp.Utility,ASP.NET WebApi4 Client,ASP.NET SignalR Client

輔助類庫(可選)

  • OSharp.Core.Permissions
    • 作用:用戶認證權限組件:基於 ASP.NET Identity 提供用戶認證與功能權限、數據權限的驗證功能的基礎實現
    • 依賴項:OSharp.Core.Data.Entity,ASP.NET Identity Core
  • OSharp.Logging.Log4Net
    • 作用:log4net日志組件:基於log4net對日志記錄功能進行實現
    • 依賴項: OSharp.Core,log4net

開源說明

github.com

   OSharp項目已在github.com上開源,地址為:https://github.com/i66soft/osharp,歡迎閱讀代碼,歡迎 Watch(關注),歡迎 Star(推薦),如果您認同 OSharp 項目的設計思想,歡迎參與 OSharp 項目的開發。

  在Visual Studio 2013中,可直接獲取 OSharp 的最新源代碼,獲取方式如下,地址為:https://github.com/i66soft/osharp.git

  

開源項目參與方式

  很多童鞋想參與開源項目,為項目做貢獻,但又不知道如何做,這里我簡單說下參與OSharp的步驟吧:

  1. https://github.com/i66soft/osharp 右上角 Fork 一下項目源碼,在你的賬戶下會有一份代碼的副本
  2. 使用VisualStudio Clone 你賬戶下的代碼到本地,更改代碼,再提交,就完成代碼的更改了
  3. 如果覺得有並入 i66soft 主干的價值,可以向主干提交 pull request申請,如果我審核通過,就可以合並到主干了,這就形成了一次開源代碼的貢獻了
  4. 如果我沒有接受合並,你也可以在你的賬戶上按你的風格去發展osharp
  5. 我也會經常瀏覽各個Fork版本對項目的更改,如果覺得有價值,也會主動合並到主干代碼中,也能形成一次對開源的貢獻
  6. 為保證提交的質量,也便於對代碼的合並,每次更改與提交應該只做一件事,只提交必要的更改

nuget

  OSharp的相關類庫已經發布到nuget上,歡迎試用,直接在nuget上搜索 “osharp” 關鍵字即可找到

系列導航

本文已同步到系列目錄:OSharp快速開發框架解說系列


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM