這些.NET開源專案你知道嗎?讓.NET開源來得更加猛烈些吧!
在上個月發表的一篇文章:這些.NET開源專案你知道嗎?讓.NET開源來得更加猛烈些吧 ,得到了很多朋友的響應。同時也有很多朋友直接進行使用,反應非常棒,雖然不是每一個都用得上,只要有一個用得上,其實也不錯了,其他的就留著收藏,以後說不定用得上。最近再次整理一些比較實用的.NET開源元件,如果大家有興趣,下個月再整理2篇,分別是比較大型的和演算法方面的。還是發老樣子,每次精選15個我個人認為還比較有用,而且平時曝光度不高的。
注意,本文所列出的.NET開源元件都是功能比較實用,但日常中曝光度比較少的,很多大家都知道的專案,我也沒必要再發出來了。可能部分已經放棄更新了,但並不能說就不能用了,對於新手來說,可以是一個學習的過程,同時很多小功能元件,並不需要多長久的更新,穩定就行了。
.NET開源目錄:【目錄】本部落格其他.NET開源專案文章目錄
本文原文地址:這些.NET開源專案你知道嗎?讓.NET開源來得更加猛烈些吧!(第二輯)
1.FluentValidation驗證元件
FluentValidation是一個使用Linq表示式,非常流暢的小型業務物件驗證元件。流暢也可以說優雅。類似鏈式操作。易於理解,功能完善。還可以配合MVC使用直接在頁面進行驗證,當你看到它的語法時,非常優雅,非常令人心動。看如下官網提供的一段驗證程式碼:
using FluentValidation;public class CustomerValidator: AbstractValidator{ public CustomerValidator() { RuleFor(customer => customer.Surname).NotEmpty(); RuleFor(customer => customer.Forename).NotEmpty() .WithMessage("Please specify a first name"); RuleFor(customer => customer.Discount).NotEqual(0) .When(customer => customer.HasDiscount); RuleFor(customer => customer.Address).Length(20, 250); RuleFor(customer => customer.Postcode).Must(BeAValidPostcode) .WithMessage("Please specify a valid postcode"); } private bool BeAValidPostcode(string postcode) { //custom postcode validating logic goes here }}Customer customer = new Customer();CustomerValidator validator = new CustomerValidator();ValidationResult results = validator.Validate(customer);bool validationSucceeded = results.IsValid;IList failures = results.Errors;
不僅可以使用Linq的操作,還能自帶驗證返回資訊。更重要的是,元件內部已經封裝好了10幾種驗證器。當然可以自定義一個複雜的哦。核心dll檔案也不大,130多k。如果好用,可以自己移植到自己的系統哦。直接更好。
官方網站:
NuGet Packages:Install-Package FluentValidation
ASP.NET MVC整合包:Install-Package FluentValidation.MVC5
2.Expression Evaluator表示式計算
Expression Evaluator是一個輕量級的可以在執行時解析C#表示式的開源免費元件。表示式求值應該在很多地方使用,例如一些工資或者成本核算系統,就需要在後臺動態配置計算表示式,從而進行計算求值。本文曾在【原創】.NET開源表示式計算元件介紹與使用一文中介紹過一個.NET平臺開源的表示式計算元件NCal。不過經過比較還是這個Expression Evaluator比較強大,雖然部分功能有重疊。也都能計算常規的數學表示式。
Expression Evaluator支援的特性有:
支援算術運算子,支援關係運算子,以及邏輯運算子
支援表示式分組和括號,以及遞增遞減運算子
支援表示式屬性訪問以及動態型別,支援字串的+運算
支援數值型別的字尾d/f/m/l/u/ul、
支援隱式表示式,以及成員訪問運算子(.)
支援一些預設的型別,如double, float, char, string, DateTime, Convert, Math
支援foreach迴圈
。。。等等,更多功能還期待你的使用和發現
簡單的數值表示式就不演示了,看一個比較有新意的程式碼:
class MyClass{ public string[] myExternalString; public int x;}var v = new MyClass();v.myExternalString = new string[] { "Hello", "there", "World!" };v.x = 2;//關鍵點,註冊符號vregistry.RegisterSymbol("v", v);//動態計算屬性//返回結果是"there",因為v.x=2,2/2=1,所以返回索引1的值"v.myExternalString[v.x/2]"
官方網站:
3..NET 基礎類庫
幾乎每個搞.NET的人都多多少少會積累自己的常規基礎類庫,比如XXhelp,XXUntil之類的。都是一些簡單功能的封裝。同樣開源的基礎類庫也很多,這裡就介紹幾個,按需選擇,不一定都要用,可以提取部分出來給自己用了。
3.1 Craig's Utility Library
功能性的基類。已經包裝得很完善,可以安裝單個名稱空間的包。例如官方列出了:
DataTypes: Install-Package CraigsUtilityLibrary-DataTypesLDAP: Install-Package CraigsUtilityLibrary-LDAPSQL: Install-Package CraigsUtilityLibrary-SQLEncryption: Install-Package CraigsUtilityLibrary-EncryptionCaching: Install-Package CraigsUtilityLibrary-CachingMath: Install-Package CraigsUtilityLibrary-MathValidation: Install-Package CraigsUtilityLibrary-Validation
。。。。。。。。。
包括了資料型別轉換,加密,Web,ORM,壓縮,快取,數學計算,檔案格式,隨機數,反射,IOC,驗證等基礎功能模組。自己去看看了,太多了,一時半會不一定都用得上。
官方網站:
3.2 .NET Extensions
顧名思義就是.NET的擴充套件類庫了。核心功能包括對現有.NET名稱空間的大量擴充套件方法,如:
System.Array,System.Collections.Generic.ICollection,System.Collections.Generic.IEnumerable ,System.Data.DataRow,System.Data.DataRowView,System.Data.IDataReader,System.DateTime,System.DateTimeOffset,System.Dictionary,System.Exception,
。。。。。。
都是細節性的,就不過多的描述了,自己看吧。
官方網站:
3.3 C# Developer Utility Library
這個開發人員工具庫功能模組也很上面的差別多,有集合,配置,加密,IO,網路,反射,序列化,文字,Web, 驗證,日期等的封裝。
官方網站:
4.PDFsharp & MigraDoc
生成PDF檔案格式的文件,大家肯定有想過,很多人專案中也肯定用過,方法、元件肯定有很多。由於以前只是瞭解,並不實際操作,所以也不過多關注,偶然看到一款開源的操作PDF檔案的類庫,比較感興趣,花了點時間看看官方網站的說明,資料都比較齊全,所以推薦一下,以後有時間會寫篇文章具體介紹一下。
PDFSharp元件主要特點有:
1.可以使用任何.NET程式語言動態建立PDF文件
2.很容易使用物件模型來構建文件
3.全部用C#重寫設計和編寫程式碼
4.可以生成PDF檔案和顯示在窗體或者列印,都使用同一原始檔
5.可以修改、合併或者分割PDF檔案
6.可以控制圖片的透明度,嵌入了字型
官方網站:(X(1)S(dokpp5uzvpyo5mdcr0pwadxu))/MainPage.ashx
5.Chaow Framework
Chaow Framework準確來說,也是一個開發人員基礎工具箱,只不過我認為和3中介紹的幾個有稍微的區別,這個主要是體現在寫法上,擴充套件方法的使用更加優雅。如果你認為和上面3中介紹的一樣,其實也無可厚非,看看它的幾個簡單例子,管中窺豹吧。
var matchQuery = new { BirthDate = 1.January(2000),//建立日期 Iam = Sex.Man, LookingFor = Array.Enum(), //建立性別列舉型別 AgeRange = 18.To(25) //建立數值範圍}
函數語言程式設計方法:
Funcfibo = null;fibo = x => fibo(x - 1) + fibo(x - 2);fibo = fibo.When(x => x x); fibo = fibo.Memoize(); var result = fibo(38);
還有諸如排列組合生成,集合運算相關的擴充套件方法。
官方網站:
6.Javascript.NET
Javascript.NET是一個將Google V8 Javascript引擎整合和引入到CLI環境的工具,它可以在執行的過程中,使用C#程式碼來執行JavaScript程式碼。威力強不強大,還是看程式碼吧:
using (JavascriptContext context = new JavascriptContext()){ //設定引數 context.SetParameter("console", new SystemConsole()); context.SetParameter("message", "Hello World !"); context.SetParameter("number", 1); //JS 指令碼 string script = @" var i; for (i = 0; i官方網站:
7.ClearScript
ClearScript的功能和上面的Javascript.NET是類似的,不僅可以動態的在.NET應用程式中新增JavaScript指令碼,還可以新增C#指令碼,相當於動態執行C#程式碼,當然這樣的功能元件在前面一篇文章也介紹過,這個元件支援Google的 V8, 微軟的JScript 和 VBScript引擎。功能同樣也不含糊,看程式碼,由於js是本人的硬傷,不多說了:
using System;using Microsoft.ClearScript;using Microsoft.ClearScript.V8;//建立引擎using (var engine = new V8ScriptEngine()){ engine.AddHostType("Console", typeof(Console)); engine.Execute("Console.WriteLine('{0} is an interesting number.', Math.PI)"); engine.AddHostObject("random", new Random()); engine.Execute("Console.WriteLine(random.NextDouble())"); engine.AddHostObject("lib", new HostTypeCollection("mscorlib", "System.Core")); engine.Execute("Console.WriteLine(lib.System.DateTime.Now)"); engine.Execute("person = { name: 'Fred', age: 5 }"); Console.WriteLine(engine.Script.person.name);}官方網站:
8.SharpKit程式碼轉換
這貨是一個將C#程式碼轉換為JavaScript程式碼的開源工具,雖然是和.net平臺應用有點相反,但總歸是一個奇葩角色,感覺很有意思,沒玩過。。。那天實在要寫js程式碼了,用它試試看。
官方網站:
9.NAudio音訊處理
NAudio是一個.NET平臺開源的音訊和MIDI程式庫,包括大量音訊處理相關.NET功能模組,可以加速開發。一直在程式更新中。目前有大量的成熟軟體使用了NAudio,例如下面一些軟體或者開源專案都有用到,所以應該很成熟,下面一些元件本身也是開源的,可以進行學習和使用參考:
Skype Voice Changer - Modify your voice with audio effects while talking on Skype
.NET Voice Recorder - Record your voice, save to MP3, and visualise the waveform using WPF.
Pree - Record spoken word without the need for editing.
Q2Cue - application for running audio cues in a theatrical or other performance related settings
TuneBlade - Stream Windows' audio to AirPlay receivers
Teachey Teach - utility to help English language conversation teachers generate feedback for students
Sound Mill - an audio player, list organizer and automation manager
SIPSorcery - .NET softphone framework
Squiggle - A free open source LAN Messenger
Helix 3D toolkit - Multi-format audio player
airphone-tv - A revival of axStream to implement control through the iPhone
JamNet - a Silverlight drum sample player
Jingle Jim - Jingle Software (German language)
All My Music
iSpy - Open Source Camera Security Software
RadioTuna - Online internet radio player
Fire Talk New - chat program
AVR Audio Guard - utility to fix a HDMI related issue
官方網站:
10.Software Protector序列號生成
說簡單的,這個東西就是序列號生成器,用來保護應用程式的授權的。可以生成和驗證不同型別的序列號(20位),能限制時間(最多999天),還能夠鎖定特定機器的key。這個元件是GUI介面,核心使用的是SKGL(Serial Key Generating Library)元件。所以使用的時候還是一起吧,地址如下:
官方網站:
11.Toxy文件資訊抽取
Toxy是一個獲取資料和文件資訊的抽取框架, 支援日常很多常見的格式,如docx, xlsx, xls, pdf, txt, epub, html等等。
有意思的是,這個框架的開發者是Tony Qu,也是大名鼎鼎的NPOI的主要開發者。贊一個,NPOI總的來說非常好用。期待越來越強大,因為網際網路的資料除了html之外,還有大量的文件格式,如果快速的檢索抽取這些後設資料資訊,是非常有用的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2768/viewspace-2811638/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 讓蘋果砸得更猛烈些吧!蘋果
- 這些開源CMS,你敢用嗎?
- 你知道嗎?元宇宙收益的主要來源是這些行業……元宇宙行業
- dotnet開源專案
- 這些年我開源的幾個小專案
- 它們養活了一票國產軟體!這些開源軟體你知道嗎
- 它們養活了一票國產軟體!這些開源軟體你知道嗎?
- 查漏補缺,這些熱門開源專案你都知道麼?「GitHub 熱點速覽」Github
- 寫簡歷沒模板?別怕,這些開源專案幫你搞定!
- AI開源專案 - facenetAI
- 開源專案之:DotNetNuke
- 開源鉅獻:2017 年 Google 開源了這些超讚的專案Go
- 那些年的開源專案,你跑起來了嗎?
- AI開源專案 - AdaNetAI
- EasyNet開源專案計劃
- 移動端適配方案-讓解析度來的更猛烈些吧!
- 開源.NET專案是否受到微軟冷遇?微軟
- 掘金開源秀:來沸點展示你的開源專案
- 2017 年 Google 開源了這些超讚的專案Go
- 你給開源專案提過 PR 嗎?
- 軟體測試這些你知道嗎?
- 這些Python騷操作,你知道嗎?Python
- 介面中這些細節你知道嗎?
- .NET Core/.NET5/.NET6 開源專案彙總7:電商專案
- 讓iOS保持介面流暢的這些技巧,你都知道嗎iOS
- .NET 開源專案 StreamJsonRpc 介紹JSONRPC
- .NET Core中的事件溯源開源專案事件
- Netty中的這些知識點,你需要知道!Netty
- 這些 JavaScript函式讓你的工作更加 So Easy!JavaScript函式
- 運作開源專案的一些經驗
- 給你的開源專案加一個綬帶吧
- 不要讓你的開源專案「裸奔」,一文了解開源證書
- 這幾個好用的Python開源框架,你都知道嗎?Python框架
- 2016 年穀歌開源了這些超酷炫的專案
- 一個.Net Core開源快取中介軟體,讓你更加簡單、方便使用快取快取
- .NET Core/.NET5/.NET6 開源專案彙總4:CMS、Blog專案
- 你正在使用的開源專案原來有這麼多風險
- 用Java這麼多年,這些祕密你知道嗎?Java