程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 幾個不常見但非常出色的 .NET 開源庫

幾個不常見但非常出色的 .NET 開源庫

編輯:關於.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, OrmLite 與 Simple.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 的話,這三個工具都可以很好地幫助你以微小的性能損失為代價換來更好與更安全的數據庫訪問層設計。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved