1. 程式人生 > >【開源】OSharp框架學習系列(1):總體設計及系列導航

【開源】OSharp框架學習系列(1):總體設計及系列導航

正是 html 組織 內聚性 權限 是什麽 enc 3-0 分發

OSharp是什麽?

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

  OSharp是一個依賴於EntityFramework,專註於業務數據模型與EntityFramework解耦的適用於中小型項目開發的(插件式)框架。OSharp將支持基於OSGi.NET的插件式開發,但我們還是會從非插件式講起,詳細了解OSharp開發框架的方方面面。在本系列中,將會講解到不少非常實用的技術與編碼技巧,歡迎關註。

  本系列使用的開發環境為:Windows7 SP1、Visual Studio 2013、Sql Server 2012,.NET Framework 4.5,github.com 代碼托管,並使用 Resharper 8.0.2 進行代碼優化。

技術分享

  技術分享

架構說明

使用技術(庫)說明

  • 技術平臺:.NET Framework 4.5
  • 技術框架:ASP.NET MVC5 + WebAPI + SignalR
  • 數據存儲:EntityFramework 6
  • 數據序列化:使用JSON.NET作為JSON序列化的主要工具
  • 數據映射:AutoMapper,主要用於數據傳輸對象DTO與數據實體模型Model之間的相互轉化,免於繁雜的對象屬性賦值
  • IoC組件:Autofac,定義了一個專用於處理映射的空接口IDependency,用於處理IoC接口與實現的批量映射,避免Autofac與各個層次耦合
  • 日誌記錄:定義通用日誌記錄接口與基礎API,日誌輸出方式可以使用現成的任意日誌組件(如log4net)
  • 緩存處理:未定
  • 。。。

項目工程詳解

  1. 通用工具組件:OSharp.Utility

    說明:分類封裝通用的與技術無關的輔助工具類功能
    依賴項:JSON.NET
    技術分享
  2. Web組件:OSharp.Web

    說明:封裝Web相關的Webform,MVC,WebApi,SignalR等Web技術的輔助功能
    依賴項:1.OSharp.Utility,2.ASP.NET MVC,3.ASP.NET WebApi,4.SignalR,5.JSON.NET
    技術分享
  3. OSharp框架核心組件:OSharp.Core

    說明:1.定義OSharp框架的核心API,是整個框架運行的骨架
    2.該骨架提供數據存儲,緩存,權限等模塊的基礎接口或基類,不提供具體實現
    3.業務層依賴於此層的接口與基類進行業務操作,而不依賴於具體的實現
    4.日誌API為了使用方便,已經遷移到OSharp.Utility
    依賴項:OSharp.Utility
    技術分享
  4. EntityFramework數據存儲組件:OSharp.Core.Data.Entity

    說明:1.提供OSharp.Core中定義的數據存儲功能的EntityFramework的實現方案
    2.本框架的數據組件將不做各個ORM的兼容性處理,為充分發揮EntityFramework的性能優化,本框架將強依賴於EntityFramework
    依賴項:1.OSharp.Utility,2.OSharp.Core,3.EntityFramework,4.AutoMapper
    技術分享
  5. 普通(非插件式)示例工程:OSharp.Demo.Web

    說明:1.為盡量簡化項目結構,本工程不采用類庫劃分層次,而采用文件夾分層方式
    2.各文件夾說明如下:
     2.1 Models:用於EntityFramework數據存儲操作的數據實體模型,與數據庫中的表對應
     2.2 EntityConfigurations:數據實體與數據庫的映射類,實體將依靠這些映射類加載到與業務解耦的上下文中,並使用 Fluent API 配置數據映射的細節
     2.3 Dtos:DTO是業務層的輸入信息,Controller與業務層之間通信數據的承載體,用戶的交互數據將以“DTO+簡單類型數據”的形式傳遞到業務層中進行處理,DTO與Model之間的映射使用AutoMapper來進行,以減少繁雜的屬性賦值操作和增加代碼的可維護性
     2.4 Services:業務契約,業務實現將以模塊為劃分,而不是以實體為劃分。以模塊為劃分單元,可增強業務操作的內聚性,但為了方便處理各個實體的業務,推薦使用 局部類(partial)的方式來組織實現層的代碼
    依賴項:1. OSharp.Utility,2. OSharp.Web,3. OSharp.Plugin,4. OSharp.Core,5. ASP.NET MVC

    技術分享

開源說明

github.com

  OSharp項目已在github.com上開源,地址為:https://github.com/i66soft/osharp,歡迎閱讀代碼,歡迎 Fork,如果您認同 OSharp 項目的思想,歡迎參與 OSharp 項目的開發。

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

  技術分享

nuget

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

博客轉載http://www.cnblogs.com/guomingfeng/p/osharp-overall-design.html

【開源】OSharp框架學習系列(1):總體設計及系列導航