`
oldrev
  • 浏览: 233705 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
社区版块
存档分类
最新评论

几个不常见但非常出色的 .NET 开源库

阅读更多

NLog

NLog 目前最为出色的 .NET 日志库,非常容易配置,且极具灵活性。最重要的是与 log4net 相比,NLog 的开发很活跃。顺带提一句,NLog 完全兼容 Mono。

Mono.Cecil

.NET IL代码及 Assembly 操纵库,可以不需要把 DLL 加载到内存就能够分析其中的元数据和类型,也能够创建 Assembly。此库被广泛应用于涉及 IL 代码分析和生成的领域。

NRefactory

NRefactory 提供了对 C# 和 VB.net 代码的解析和编译功能。你可以通过 NRefactory 把一段 C# 源程序解析成抽象语法树,甚至还能够进行语义分析和生成 IL代码。换句话说,NRefactory 把一个 C# 编译器以 API 的形式提供给你,让你有能力在程序运行时处理 C# 代码,实际上,NRefactory 的核心就是一个修改过的 Mono C# 编译器。NRefactory 在很多地方是非常有用的,一个最简单也是最实用的例子:C#中的 LINQ 表达式通常是静态的,也就是你写的 from x in y where xxx 最终是被编译器转化成了表达式树的形式。因此, C# 程序在运行的时候是无法如 SQL 一般通过字符串来拼凑出 LINQ 表达式并执行的,但通过 NRefactory 提供的编译器级别的能力你就能够做到这一点。

Irony

Irony 号称是“编译器构造工具”,实际上是一个类似 C++ Boost.spirit 的 LALR 语法分析生成器,但与 C++ Boost.spirit 不同的是 Irony 是在运行时生成解析器,而不是靠各种奇技淫巧的模板元编程。拜 C# 的操作符重载能力所赐,Irony 的语法定义已经很接近 EBNF 的定义了,相当简洁。如果有简单的文本文件解析的需要的话,Irony 应该是不错的选择。稍显遗憾的是 Irony 的解析器不是泛型的,只能解析 string 不能解析字节流,而且目前 Irony 还处于 alpha 阶段,并不适合生产使用。

Ionic.Zip (DotNetZip)

Ionic.Zip 是一个非常轻量级的 Zip 文件访问库,提供了压缩和解压缩 zip 文件的功能,相对于常见的 Sharpzip 库,Ionic.Zip 的优点在于轻量级,只有一个很小的 DLL。且 Ionic.Zip 的MS-PL授权形式更加开放,对商业应用更加友好。

Dapper , OrmLiteSimple.Data

这三个都是极轻量级的 ORM 工具,基本功能就是从 POCO 对象转换为 SQL 查询与SQL查询结果转换为 POCO 对象,由于它们都只在 ADO.NET 上做了一层非常薄的封装,因此性能非常高,跟直接用 ADO.NET 相差无几。相对与 NHibernate 和 ADO.NET EF 这样的全功能 ORM 框架来说,轻量级 ORM 基本上都不支持更改跟踪之类的高级功能,但是比起手工拼接 SQL 方便和安全很多。三个库都支持完全意义上的 POCO 对象,不像 NHibernate 要求对象的属性 virtual 的,可以说没有一点儿侵入性。特别要说的是 Dapper,这个库只有一个 .cs 源文件,而且没有限制数据库,只要有 ADO.NET 驱动的都可以,这一点是另外两个都做不到的。另外,OrmLite 有个特性可以跟据 POCO 对象自动建表,对于数据库的操作因此方便了很多,但其目前支持 SQLite 和 SQL Server 不能不说是很大的遗憾。

最后的结论就是,如果你目前:还在用 .NET 1.0 时代的 DbHelper 或者 SqlHelper、不满意 NHibernate/ADO.NET EF 的性能、直接用 ADO.NET 的话,这三个工具都可以很好地帮助你以微小的性能损失为代价换来更好与更安全的数据库访问层设计。

 

作者:昆明维智众源企业管理咨询有限公司

 

== EOF ==

分享到:
评论

相关推荐

    Hubble.net使用手册

    安装Hubble.net通常包括以下几个步骤: 1. 下载源码或预编译的二进制包。 2. 在.NET Framework环境下编译项目或者直接引用预编译库。 3. 配置索引目录和相关设置,如分词器选择、内存分配等。 4. 创建索引,将需要...

    ajax _asp.net 开发的的树

    1. 使用ASP.NET AJAX Control Toolkit:这是一个开源的工具包,包含了一系列预构建的服务器端控件和客户端脚本库,其中的TreeView控件可以直接用于构建树形结构。通过AJAX UpdatePanel,可以实现无刷新的节点展开和...

    C# .Net 写的中文分词

    在C# .Net环境中实现中文分词,可以借助现有的开源库,如SharpNLP、HanLP.NET等,它们提供了丰富的API和分词算法,方便开发者快速集成到项目中。同时,也可以自定义实现分词算法,这样可以更好地适应特定的业务需求...

    svm demo C#

    1. **第三方库**:例如,libsvm.NET是一个将流行的开源库libsvm封装为C#接口的项目,允许开发者在.NET环境中直接调用libsvm的函数。它提供训练模型、预测等功能,且支持多类分类和非线性核函数。 2. **使用ML.NET**...

    net反编译工具

    常见的.NET反编译工具有以下几种: 1. **ILSpy**: 这是一款开源的.NET反编译器,它提供了一个友好的用户界面来浏览类库、查看类型、方法和属性。ILSpy不仅能显示IL代码,还能尝试将其转换为类似于C#的源代码格式。 ...

    pdf2image.O2S.Components.PDFRender4NET.zip

    这个压缩包文件"pdf2image.O2S.Components.PDFRender4NET.zip"包含了几种不同的.NET组件和库,它们允许开发者将PDF文档转换为图像格式。下面我们将详细探讨这些组件及其在PDF转图片过程中的应用。 1. **PDFLibNet**...

    VC++几个数据压缩方法源代码

    本文将详细介绍在VC++中常见的几种数据压缩方法,以及如何利用源代码实现这些方法。 1. **LZ77 (Lempel-Ziv 1977)** LZ77是一种滑动窗口压缩算法,通过查找输入数据中的重复模式来实现压缩。它创建了一个字典,将...

    JAVA上百实例源码以及开源项目源代码

    Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书 Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java...

    newrelic-agent-3.7.2.zip

    总结来说,"newrelic-agent-3.7.2.zip"是用于监控Java应用程序性能的New Relic代理,而"lamma.zip"则是金融领域的一个用于生成定期计划的Scala开源库。这两个项目分别代表了应用监控和金融服务领域的技术解决方案。

    模型优化基于Yolov5的筑基融合检测2022.10.16.zip

    4. **C#-Winform**:这是一种常见的Windows应用程序开发技术,结合了C#编程语言和Windows Forms库。C#-Winform允许开发者创建具有丰富用户界面的桌面应用。在这个项目中,C#-Winform被用来构建一个交互式的检测工具...

    C#常用滤镜

    C#中实现滤镜功能通常会依赖于如AForge.NET、Emgu CV或OpenCVSharp这样的开源库,这些库提供了丰富的图像处理功能,并且封装了C++底层的图像处理算法。 AForge.NET是一个专门为.NET开发者设计的框架,包含图像处理...

    操作NPOIExcel

    NPOI的模块化设计使其能够灵活应对不同的开发需求,以下是几个关键Assembly及其作用的简要介绍: - **NPOI.Util**:提供了一系列基础辅助类和方法,如数据类型转换、异常处理等,是NPOI的核心辅助库。 - **NPOI....

    几款比较流行的Ajax框架

    Open Rico 是一个开源的JavaScript库,主要用于构建富互联网应用程序(RIA)。它提供了动态调色板和可拖拽层的功能。动态调色板可以让用户选择颜色,常用于颜色配置或设计工具中;而“使用Open Rico实现可拖拽的层...

    SVN服务器与VS2005客户端par1

    Codehaus、Sourceforge、Savannah 和 Java™ 社区的 java.net 等站点中驻留的免费 CVS 使得为开源项目建设存储库更为简单。以 CVS 为中心,已发展起一个大型的附件市场,包括 TortoiseCVS、ViewCVS 和 Fisheye 等...

    C#与Flash交互

    C#可以使用开源库如AMF.NET或FluorineFX来处理AMF数据,Flash端使用AS3的FlashNetLib库进行AMF通信。 4. **HTTP/HTTPS请求**:Flash的URLLoader类可以发起HTTP或HTTPS请求,C#端可以设置Web服务器处理这些请求。...

    基于node.js的随机点名器

    在编程教学或团队活动中,随机点名是一个常见的需求。这个基于Node.js的点名器就是为了解决这个问题而设计的。Node.js是一个使用JavaScript语言开发的开源服务器端运行环境,它允许开发者在服务器端使用JavaScript...

    c# 服务器/客户端opensim 物理

    开发OpenSimulator的物理特性时,开发者可能需要处理以下几个关键任务: 1. **初始化物理世界**:设置物理世界的边界、重力和其他基本属性。 2. **创建物理对象**:在虚拟环境中,每个物体都有对应的物理表示,包括...

    opencv使用手册

    安装和使用OpenCV主要分为以下几个步骤: 1. 阅读FAQ,了解常见问题和解决方案。 2. 加入OpenCV的Yahoo Groups(http://groups.yahoo.com/group/OpenCV/),与其他开发者交流,获取一手资料。 3. 浏览Yahoo Group中...

    SVN服务器VS2005客户端part2

    Codehaus、Sourceforge、Savannah 和 Java™ 社区的 java.net 等站点中驻留的免费 CVS 使得为开源项目建设存储库更为简单。以 CVS 为中心,已发展起一个大型的附件市场,包括 TortoiseCVS、ViewCVS 和 Fisheye 等...

    SilverLight图片平铺

    在IT行业中,Silverlight是一种基于.NET Framework的浏览器插件,由微软开发,主要用于创建丰富的、交互式的用户界面,尤其在多媒体、图形和动画方面表现出色。然而,Silverlight本身并不直接支持图片的平铺功能,这...

Global site tag (gtag.js) - Google Analytics