首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MzBlog分析

MzBlog分析

作者头像
张善友
发布2018-01-30 17:10:13
1.5K0
发布2018-01-30 17:10:13
举报
文章被收录于专栏:张善友的专栏张善友的专栏

早上衣明志 在QQ群里说他的博客开源了,地址在 https://github.com/qihangnet/MZBlog,基于NancyFX和MongoDB开发的。博客内容需要使用 MarkDown 进行编写。Nancy框架是ASP.NET之外用.NET开发Web App的一种选择,而且也是一种很简单的选择。所以本文本着学习Nancy 框架的分析了下衣大哥的代码,下图是个脑图:

MzBlog分析
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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014-01-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MongoDB
腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档