29
2015
12

老衣的开发工具和类库集之2014版(下)

 

服务端类库

NancyFx

Nancy是一个不错的轻量级开源.NET Web框架。如果想快速做个简单的Web应用,Nancy是个不错的选择。作为NancyFx的粉丝,作为博主我也将在本博中开写一系列介绍NancyFx的文章。敬请关注!

官方网站:http://www.nancyfx.org

Newtonsoft.Json

目前.NET开发中最流行的JSON序列化库,为新版的WebApi库提供基础。

官方网站: http://james.newtonking.com/json

Autofac

Autofac是.NET开发领域最流行的IoC库之一,轻量且高性能,对项目代码几乎无任何侵入性,可无config运行。IoC理念在降低耦合方面表现非常突出,并可为项目代码的可测试性提供帮助。扩展性非常优秀,官方也提供了大量的扩展库,以应对各种场景。

官方网站: http://autofac.org

AutoMapper

流行的对象映射框架,用于Entity、DTO、ViewModel等之间的映射时非常方便,可减少大量硬编码。很小巧灵活,性能表现也可接受。

官方网站: http://automapper.org

Elmah

实现最流行的ASP.NET应用异常日志记录框架,可以详细的将运行时的各种异常记录在文件、数据库或其他可能的任何位置。对网站运营期内发现和修复异常非常有帮助。

官方项目: http://elmah.googlecode.com

Lucene.Net

流行高性能的全文索引库,可用于为各类信息提供强大的搜索功能。迁移自Java的Lucene库。

官方网站: http://lucenenet.apache.org

Lucene.Net.Analysis.PanGu

支持Lucene.Net最新版的盘古中文分词扩展库。

盘古分词组件: https://pangusegment.codeplex.com

DotNetOpenAuth

DotNetOpenAuth可以让网站具备支持OpenID、OAuth、InfoCard等身份验证的能力。 提前引入该库,可以为本站未来支持微博、人人等平台登录提供先期基础保障。

官方网站: http://www.dotnetopenauth.net

Quartz.NET

Quartz.NET 是一个.NET 版的任务调度框架。可用于定时处理数据或发邮件等工作。

官方网站: http://www.quartz-scheduler.net

NLog

NLog是一个简单灵活的.NET日志记录类库。通过使用NLog,我们可以在任何一种.NET语言中输出带有上下文的(contextual information)调试诊断信息,根据喜好配置其表现样式之后发送到一个或多个输出目标(target)中。 相比于log4net,NLog的使用难度和维护难度要低很多,而在异步情况下性能要比log4net高很多。日志的记录不应该影响正常业务的执行速度,所以采用异步是非常必要的。

官方网站: http://github.com/NLog/NLog

System.IO.Abstractions

.NET框架非常优秀,但是一些底层设计在一些情景下会显得缺乏考量,比如System.IO中的类,在.NET框架中就没有对应的抽象,会造成文件的读写一定是真实文件的操作。当需要在单元测试中对文件操作做庄进行模拟时,就无法实现了,尤其是面对云计算、云存储环境下,文件的存储和操作已经不是那么简单了。所以牛人就为此做了一个通用的抽象System.IO.Abstractions。

项目网站: https://github.com/tathamoddie/System.IO.Abstractions

EnyimMemcached

Memcached是非常优秀和流行的分布式缓存服务器软件,EnyimMemcached则是它在.NET上目前最优秀的客户端驱动,集成不错的分布式均衡算法。另外还支持Membase。

项目网站: https://github.com/enyim/EnyimMemcached

SharpZipLib

.NET上优秀的Zip处理库,可以处理Zip、GZip等。

官方介绍网站: http://www.icsharpcode.net/OpenSource/SharpZipLib/Default.aspx

AttributeRouting

可以通过Attribute直接设置Controller或Action的路由地址,使得MVC中设置路由变得直观方便。

官方网站: http://attributerouting.net

RouteJs

前端js代码经常要通过ajax访问服务器端的地址,在MVC项目中一个地址是有路由映射出来的,一个地址对应的Action也是路由映射护理的。如果开发过程中可能经常变动服务器端的路由映射规则,会使得js请求的地址都要改变一次,RouteJs则可通过向客户端传递服务器上的路由表来实现客户端请求的地址随服务器端路由映射的改变而改变的情况。

官方网站: http://dan.cx/projects/routejs

RazorGenerator

ASP.Net MVC 3后官方就支持Razor视图引擎,该引擎给.NET Web开发者带来极大的便利和优秀的开发体验。默认情况下,MVC中的视图是在被请求到时动态编译执行的,也就是说不请求就不编译,会造成几个明显的问题:

  1. 不执行到该视图就不知道是否存在编译级的错误;

  2. 请求时才编译视图,使得性能变得低下;

  3. 如果项目还带有Area,那么部署时会有各种痛苦的经历

  4. 要脱离Controller,单独对视图进行单元测试,会发现非常麻烦

Razor Generator通过Visual Studio自定义工具功能,对Razor视图提供开发时的编译能力,部署时不需要传输视图文件,只传输dll即可。运行效率、部署效率、可测试性均大幅提高。

项目网站: https://razorgenerator.codeplex.com

WebActivator

WebActivator 可以让ASP.NET应用具备不修改Global.asax,就能加入应用启动事件的代码逻辑的能力。在降低项目的耦合方面具有积极意义。

项目网站: https://github.com/davidebbo/WebActivator

FastReflectionLib

国内.NET领域的大牛之一老赵开发的快速发射类库,可以获得比内置反射类更高的性能。

项目网站: http://www.codeplex.com/FastReflectionLib

Moq

非常流行的Mock框架,灵活且高性能。也是目前.NET领域唯一支持Linq的Mock框架

项目网站:https://github.com/Moq/moq4

CsQuery

CsQuery相当于是jQuery的C#实现,可以在C#代码中对HTML进行查找、筛选、处理等DOM操作。只要你熟悉jQuery,就很容易学会在C#中用CsQuery处理HTML了。

官方代码库:https://github.com/jamietre/CsQuery

SpecFlow

SpecFlow是非常优秀的免费的BDD框架和验收测试框架,支持业务人员(非技术人员)可懂的功能描述语言规范。支持常见的国际化语言,当然也包括简体中文和繁体中文等。

官方网站: http://www.specflow.org

Simple.Data

Simple.Data是一个简单的可以代替ORM甚至DAL的数据访问框架,其严重依赖于dynamic特性,且具备高可测试性。深得我的喜欢,在小型项目使用可以成本提高开发效率。

官方文档:http://simplefx.org/simpledata/docs/index.html

官方代码库:https://github.com/markrendle/Simple.Data

xUnit

NUnit框架作者重新开发的非常优秀的单元测试框架,目前ASP.NET MVC官方团队全部使用的xUnit框架编写的ASP.NET MVC单元测试。

项目网站: https://xunit.codeplex.com

EmbeddedMail

网站开发过程中,免不了要开发发送邮件的功能,对应的也应该写单元测试代码。如果使用真实的SMTP,会给一些真实邮件接收者代理困扰,也会因为过程太慢而失去单元测试的持续有效性,而在持续集成服务器上更会表现差劲。所以开发阶段应该使用模拟的SMTP服务代替真实的,EmbeddedMail是这方面表现比较不错的框架之一。

项目网站: https://github.com/jmarnold/EmbeddedMail

WatiN

开发和验收过程不免需要自动化运行真实的IE或FireFox浏览器进行测试,尤其是验收测试时,非常必要。WatiN就是为此而生的。

官方网站: http://watin.org

LTAF

LTAF是微软总部的ASP.NET团队开发的轻量级测试自动化框架,虽然已经接近2年没有再更新了,但是在一些情景下依然是表现不错的框架。

官方网站: https://ltaf.codeplex.com/

补充原文遗漏

Hprose

Hprose是我大学同学andot开发的一套开源的高性能远程对象服务引擎(High Performance Remote Object Service Engine)。非常易用,而且性能极佳,对传统WebService和RPC有性能或跨平台意见的同学可以用用,因为作者把市面上流行的几种语言、框架都做了支持,如:php、go、ruby、python、nodejs、object-c、AAutor Quicker、ActionScript、ASP、Hack、Delphi、javascript、java、.NET、dart、D、Perl、swift、lua、cpp等。你可以在https://github.com/hprose找到它们。

官网:http://hprose.com

SignalR

SignalR是一套ASP.NET下实现实时通信的Web应用开发框架,集成客户端与服务器,基于浏览器的客户端和基于 ASP.NET 的服务器组件可以借助它来进行双向多步对话。SignalR会自动根据客户端选择合适的技术来实现实时程序方式。我们只要关注更高层面的业务实现,无需关注技术上的实现细节。比如,轻松实现一个聊天室。

官网:http://signalr.net

NPOI.CSS

阅读过我过往博客的同学应该看过我对NPOI.CSS的介绍,这是由于内部项目需要,而创建的简单快速设置Excel单元格样式的类库。当你用NPOI对单元格设置复杂样式的时候,原本需要很多行代码,且还要时刻提防样式数超标的问题(Excel对单文件内的样式数量有限制),这是很困扰人的。于是我开发这套可以用类CSS的方式设置单元格样式的类库,比如下面这样一行

cell.CSS("color:red;font-weight:bold;font-size:11;font-name:宋体;border-type:thin;") 

就可以轻松给单元个设置字体为宋体,字体颜色为红色,且为粗体、11号大小,并给单元格打上细边框。很简单吧?

官网:https://github.com/qihangnet/npoi.css

iBoxDB

iBoxDB是我博客程序MZBlog新版中所采用的NOSql数据库,其具备类SQL的一些特性,但的确是个NOSql数据库。高性能、无依赖、线程安全、先天支持 Java 、.NET、Android、Mono、Unity3D、Xamarin、Nashorn、Linux、Windows Phone等平台、支持索引、事务、主键、零配置,内嵌或独立Server,用类SQL语局查询、支持Linq。官方有跟MongoDB的性能对比,基本是高于MongoDB的。MZBlog采用iBoxDB,而放弃原来使用的MongoDB,原因主要是不希望这样一个轻量级博客依赖于一个Server级的数据库,那不利于迁移和部署。关于MZBlog新版,我将会另起一篇博文详述相关内容。

官网:http://www.iboxdb.com

CsvHelper

CsvHelper是.NET上处理CSV文件的利器,快速、灵活且十分易用。支持读写自定义类型对象。

官网:http://joshclose.github.io/CsvHelper

RestSharp

RestSharp是我用过的最好的REST Api调用类库,没有之一。支持同步、异步。总之,有了它,你完全可以放弃微软官方那个了,哈哈……

官网:http://restsharp.org

C5

C5是IT University of Copenhagen出品的一套支持C#和其他CLI语言的开源泛型集合类。提供了标准.NET框架System.Collections.Generic命名空间下所没有提供的功能和数据结构,比如Persistent Tree、Circular Queue、Hashed Array List、Sorted Array、Hashed Linked List等

官网:http://www.itu.dk/research/c5

源码库:https://github.com/sestoft/C5

« 上一篇下一篇 »

相关文章: