MzBlog分析


早上衣明志 在QQ群里說他的博客開源了,地址在 https://github.com/qihangnet/MZBlog,基於NancyFX和MongoDB開發的。博客內容需要使用 MarkDown 進行編寫。Nancy框架是ASP.NET之外用.NET開發Web App的一種選擇,而且也是一種很簡單的選擇。所以本文本着學習Nancy 框架的分析了下衣大哥的代碼,下圖是個腦圖:

MzBlog分析

1、MongoDB:數據存儲采用NoSQL MongoDB,采用官方的驅動 mongocsharpdriver。

2、核心庫的測試項目MZBlog.Core.Tests:項目采用xUnit.NET測試框架,xUnit.net創造者是Jim Newkirk和Brad Wilson從包括NUnit及其它單元測試框架的使用經驗中總結出來的一個新框架,相比於NUnit,xUnit.net和其他框架的比較可參考《xuint和其他的單元測試框架的比較》。另外FluentAssertions,非常棒的測試斷言。非常符合人的思維模式。

3、項目分層:項目采用DDD(領域模型)的典型層次,包括了表現層,應用層,領域層和基礎設施層,MZBlog.Core其實對應着基礎設施層,不過這里的並不是指領域模型中的基礎設施,更恰當的說應該是一些普通項目的核心層,封裝一些常用的工具和服務,例如緩存、MongoDB操作。

MZBlog.Core的Documents、ViewProjections、Commands 對應的是MongoDB的領域層,領域層進行細分,會出現一些專門對應的一些領域核心層,領域核心實體擴展層。

  1. 領域核心層:這個層專門用於進行對領域層的擴展:用於定義一些領域中常用模式的接口,屬於上層建築。如ICommandInvoker,IViewProjection等,
  2. 領域核心擴展層:這個層專門用於對領域層中的實體進行擴展,如ViewProjections、Commands 等。

MZBlog.Web是應用層和表現層,同時也是對Nancy框架的一個應用的示例。

4、Nancy框架:Nancy是一個不錯的輕量級開源.NET Web框架,他是asp.net框架之外的另一個web開發框架,他完全不依賴於System.Web.只為簡單的Web開發做最基礎的准備,以Nancy寫的Web應用,可以輕松部署在Linux上,而不必受服務器操作系統的限制,衣明志的博客 就是在Linux上跑的,Web服務器使用的Jexus

  1. Bootstrapper,類似與ASP.Net項目里的Global.asax,定義了應用的生命周期,繼承了NancyBootstrapper類后可以重寫基類的許多方法,比如ApplicationStartup
  2. Security: Nancy的身份驗證組件——Nancy.Authentication.Forms,你可以到nuget上獲得。由於Nancy的運行機制跟ASP.NET幾乎沒有關聯,到可以移步到Forms authentication with nancyfx看看它是怎么實現的。
  3. Responses:Http響應,項目中有個RssResponse,封裝了博客的RSS功能。
  4. Modules:Nancy Web App的核心,繼承NancyModule這個基類,然后在構造里直接定義HTTP方法和路由即可,路由機制簡單輕量但不失強大,可以方便的通過正則表達式制定路由規則。和ASP.NET相比非常簡單吧,Nancy框架天生就是MVC結構,Modules類似於ASP.NET MVC的Controller。
  5. Modelbinding:類似於asp.net mvc的ModelBinding,具體參看https://github.com/NancyFx/Nancy/wiki/Model-binding,擔負起Modules和Views之間數據傳遞的橋梁。
  6. Views: Nancy支持Razor, Spark, dotLiquid等視圖引擎,開發人員可以根據自己的喜好,選用不同的視圖引擎。MZBlog用的是Razor視圖引擎,你的ASP.NET MVC的知識可以無縫嫁接。
  7. ErrorHandling:異常處理,可以根據不同的http狀態碼進行處理,具體可以參考 Consistent error handling with Nancy
  8. TinyIoC:Nancy集成了TinyIoCTinyIoC是一個跨各種手機平台的輕量級開源Ioc框架(TinyIoC),該框架非常小,只有一個cs文件就能使用,使用后感覺效果還不錯,基本容器功能都支持了。git開源項目地址:https://github.com/grumpydev/TinyIoC

5、Bootstrap是Twitter出名的一個優秀的web前端框架,它讓不太懂設計的web程序員們也能做出比較好看的UI來。Bootstrap3默認采用時下流行的扁平化設計,會讓你的web顯得很時尚.

6、Markdown 是一種輕量級標記語言,創始人為約翰·格魯伯(John Gruber)和亞倫·斯沃茨(Aaron Swartz)。它允許人們“使用易讀易寫的純文本格式編寫文檔,然后轉換成有效的XHTML(或者HTML)文檔”。這種語言吸收了很多在電子郵件中已有的純文本標記的特性。Markdown 語法可參考 http://wowubuntu.com/markdown/

 

xUnit.net runner for Visual Studio 2012 and 2013

Lift your Petticoats with Nancy....

Setting up a NancyFX website

From ASP.NET MVC to Nancy - Part 1

擴展NoteService,支持NancyFx


免責聲明!

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



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