1. 程式人生 > >跟我學: 使用 fireasy 搭建 asp.net core 專案系列之一 —— 開篇

跟我學: 使用 fireasy 搭建 asp.net core 專案系列之一 —— 開篇

    fireasy 面世都有六個年頭了,至今依舊是默默無聞,知道它的人可能僅限於本人朋友圈內的人士。本人也在寫一本關於如何使用該框架的書籍,但苦於事務繁忙,至今也才寫了一半,可以說最為實用最為核心的部分,仍然還沒有寫出來。思來想去,還是通過博文這種方式,通過一個例項的講解,讓朋友們對 fireasy 有個瞭解吧。

    首先,得先說說這個fireasy是用來幹嘛的。

    fireasy 是一個靈活度比較高的開發框架,它秉承靈活、開放的態度,包容萬事萬物。它包括 common、data、entity 三個核心類庫,集成了 mvc、easyui、redis、mongodb、rabbitmq、nlog、log4net 等框架,使之能夠輕鬆搭建基於 .net framework 或 .net core 的專案。

    從面世至今,本人個人及公司的所有專案,均使用 fireasy 進行搭建,可以說無時無刻不在完善和優化。同時呢,fireasy 也釋出到了 nuget,對於安裝和更新來說絕對是再方便不過了。

    在 nuget 裡搜尋 fireasy 關鍵詞,所有最新的元件都以最新的時間更新於此。

    同時呢,fireasy 是開源的,git 倉庫位於 https://github.com/faib920/fireasy2,隨它開源的還有一個例項專案zero,https://github.com/faib920/zero,感興趣的朋友可以前去了解,記得給星哦,希望你隨時給本人提出好的建議,如果你和我趣味相投,也歡迎一起維護和完善它。

    fireasy 有很多的元件,下面先讓大家對它們有個大概的認識。

 

    一、fireasy.common

    fireasy.common 是通用的元件庫,通過它可以實現配置、日誌、快取、訊息訂閱、aop、ioc、動態/靜態編譯、json/xml/binary 序列化、加密解密等。common 中還提供了大量的擴充套件方法。

    這些元件抽象出來的介面,可由外部的第三方進行適配,比如日誌元件,可由 nlog、log4net 等來適配,快取元件,可由 redis、memcached 等來適配。訊息訂閱元件可由 redis、rabbitmq 等來適配,只需實現標準的介面抽象,然後通過配置就可以使用了。

    aop 和動態編譯貫穿整個 fireasy,為實體框架層提供了很好的解決方案(後面會介紹),ioc 可以與 .net core 相融合。

 

    二、fireasy.data

    fireasy.data 是資料層元件庫,IDatabase 為抽象出來的資料庫操作介面,通過它可以實現資料庫的增、刪、改、查等操作,它是通過 IProvider 進行擴充套件的,目前支援的資料庫型別有 sqlite、sqlserver、mysql、oracle、firebird、postgresql 等,有能力的朋友可以自己去擴充套件 。同時,還提供了語法、架構、批量插入、自增量、記錄包裝等外掛服務。

 

 

    三、fireasy.data.entity

    顧名思義,即實體框架元件庫,與 entity framework 比較相似,其 linq 語法支援基本上完全一致,對於用過 entity framework 的朋友來說,要上手完全不需要什麼學習成本。

    使用 fireasy entity 較之 entity framework 有一些明顯的好處,比如接近於原生sql的insert、update、delete語法,實體的按需更新,select裡複雜的構造,json序列化時對於延遲載入的處理等等,這些都會在以後的例項中一一講解。

    entity 元件也是基於靈活的介面配置,比如你要引入 mongodb ,只需要配置 MongoDbProvider 即可,業務層沒有任何的改變。

 

   四、fireasy.web.mvc

    fireasy.web.mvc 為 asp.net mvc 提供了一些底層的支援,比如 json 模型的繫結和序列化、異常處理等等。

 

    五、fireasy.web.easyui

    fireasy.web.easyui 是 easyui 的擴充套件庫,為 IHtmlHelper 新增擴充套件方法,同時將實體驗證的特性附加到 easyui 中。

 

    六、其他

    fireasy.redis 為redis 的支援類庫,引用該類庫後,只要完成 redis 的引數配置,就可以在 fireasy 裡使用 redis 作為快取和訊息隊列了。

    fireasy.nlog 和 fireasy.log4net 分別為 nlog 和 log4net 提供了適配。

    fireasy.rabbitmq 為 rabbitmq 提供適配,使 fireasy 能夠使用 rabbitmq 來處理訊息佇列。

    fireasy.mongodb 使 fireasy 能夠使用 mongodb,而不需要改動實體模型及業務層。

    fireasy.websockets 作為 websocket 通訊的元件,借鑑了 singnalR 的思想,使用 handler 來提供方法進行訊息交換。

 

    以上就是 fireasy 大家庭中的所有元件,以接下來的各篇文章裡都會有所提及,對此感興趣的朋友請隨時關注部落格的更新。