• 这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)


    在上个月发表的一篇文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧 ,得到了很多朋友的响应。同时也有很多朋友直接进行使用,反应非常棒,虽然不是每一个都用得上,只要有一个用得上,其实也不错了,其他的就留着收藏,以后说不定用得上。最近再次整理一些比较实用的.NET开源组件,如果大家有兴趣,下个月再整理2篇,分别是比较大型的和算法方面的。还是发老样子,每次精选15个我个人认为还比较有用,而且平时曝光度不高的。

        注意,本文所列出的.NET开源组件都是功能比较实用,但日常中曝光度比较少的,很多大家都知道的项目,我也没必要再发出来了。可能部分已经放弃更新了,但并不能说就不能用了,对于新手来说,可以是一个学习的过程,同时很多小功能组件,并不需要多长久的更新,稳定就行了。

    .NET开源目录:http://www.cnblogs.com/asxinyu/p/4329755.html

    本文原文地址:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)

    1.FluentValidation验证组件

        FluentValidation是一个使用Linq表达式,非常流畅的小型业务对象验证组件。流畅也可以说优雅。类似链式操作。易于理解,功能完善。还可以配合MVC使用直接在页面进行验证,当你看到它的语法时,非常优雅,非常令人心动。看如下官网提供的一段验证代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    using FluentValidation;
    public class CustomerValidator: AbstractValidator<Customer> {
      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<ValidationFailure> failures = results.Errors;

        不仅可以使用Linq的操作,还能自带验证返回信息。更重要的是,组件内部已经封装好了10几种验证器。当然可以自定义一个复杂的哦。核心dll文件也不大,130多k。如果好用,可以自己移植到自己的系统哦。直接更好。

        官方网站:https://github.com/JeremySkinner/FluentValidation

        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循环

    。。。等等,更多功能还期待你的使用和发现

        简单的数值表达式就不演示了,看一个比较有新意的代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class MyClass
    {
         public string[] myExternalString;
         public int x;
    }
     
    var v = new MyClass();
    v.myExternalString = new string[] { "Hello""there""World!" };
    v.x = 2;
    //关键点,注册符号v
    registry.RegisterSymbol("v", v);
    //动态计算属性
    //返回结果是"there",因为v.x=2,2/2=1,所以返回索引1的值
    "v.myExternalString[v.x/2]"

        官方网站:http://csharpeval.codeplex.com/ 

    3..NET 基础类库

         几乎每个搞.NET的人都多多少少会积累自己的常规基础类库,比如XXhelp,XXUntil之类的。都是一些简单功能的封装。同样开源的基础类库也很多,这里就介绍几个,按需选择,不一定都要用,可以提取部分出来给自己用了。

    3.1 Craig's Utility Library

         功能性的基类。已经包装得很完善,可以安装单个命名空间的包。例如官方列出了:

    1
    2
    3
    4
    5
    6
    7
    DataTypes: Install-Package CraigsUtilityLibrary-DataTypes
    LDAP: Install-Package CraigsUtilityLibrary-LDAP
    SQL: Install-Package CraigsUtilityLibrary-SQL
    Encryption: Install-Package CraigsUtilityLibrary-Encryption
    Caching: Install-Package CraigsUtilityLibrary-Caching
    Math: Install-Package CraigsUtilityLibrary-Math
    Validation: Install-Package CraigsUtilityLibrary-Validation

        。。。。。。。。。

       包括了数据类型转换,加密,Web,ORM,压缩,缓存,数学计算,文件格式,随机数,反射,IOC,验证等基础功能模块。自己去看看了,太多了,一时半会不一定都用得上。     

        官方网站:https://github.com/JaCraig/Craig-s-Utility-Library 

    3.2 .NET Extensions

        顾名思义就是.NET的扩展类库了。核心功能包括对现有.NET命名空间的大量扩展方法,如:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    System.Array,
    System.Collections.Generic.ICollection<T>,
    System.Collections.Generic.IEnumerable<T>,
    System.Data.DataRow,
    System.Data.DataRowView,
    System.Data.IDataReader,
    System.DateTime,
    System.DateTimeOffset,
    System.Dictionary,
    System.Exception,

        。。。。。。

        都是细节性的,就不过多的描述了,自己看吧。

        官方网站:http://dnpextensions.codeplex.com/ 

    3.3 C# Developer Utility Library

         这个开发人员工具库功能模块也很上面的差别多,有集合,配置,加密,IO,网络,反射,序列化,文本,Web, 验证,日期等的封装。

        官方网站:http://scrimpnet.codeplex.com/ 

    4.PDFsharp & MigraDoc

      生成PDF文件格式的文档,大家肯定有想过,很多人项目中也肯定用过,方法、组件肯定有很多。由于以前只是了解,并不实际操作,所以也不过多关注,偶然看到一款开源的操作PDF文件的类库,比较感兴趣,花了点时间看看官方网站的说明,资料都比较齐全,所以推荐一下,以后有时间会写篇文章具体介绍一下。

      PDFSharp组件主要特点有:
    1.可以使用任何.NET编程语言动态创建PDF文档
    2.很容易使用对象模型来构建文档
    3.全部用C#重写设计和编写代码
    4.可以生成PDF文件和显示在窗体或者打印,都使用同一源文件
    5.可以修改、合并或者分割PDF文件
    6.可以控制图片的透明度,嵌入了字体

        官方网站:http://www.pdfsharp.net/(X(1)S(dokpp5uzvpyo5mdcr0pwadxu))/MainPage.ashx 

    5.Chaow Framework

        Chaow Framework准确来说,也是一个开发人员基础工具箱,只不过我认为和3中介绍的几个有稍微的区别,这个主要是体现在写法上,扩展方法的使用更加优雅。如果你认为和上面3中介绍的一样,其实也无可厚非,看看它的几个简单例子,管中窥豹吧。

    1
    2
    3
    4
    5
    6
    var matchQuery = new {
        BirthDate = 1.January(2000),//创建日期
        Iam = Sex.Man,
        LookingFor = Array.Enum<Sex>(), //创建性别枚举类型
        AgeRange = 18.To(25)            //创建数值范围
    }

        函数式编程方法:

    1
    2
    3
    4
    5
    Func<intint> fibo = null;
    fibo = x => fibo(x - 1) + fibo(x - 2);
    fibo = fibo.When(x => x <= 1, x => x); 
    fibo = fibo.Memoize();                 
    var result = fibo(38);

        还有诸如排列组合生成,集合运算相关的扩展方法。

        官方网站:http://chaow.codeplex.com/ 

    6.Javascript.NET

        Javascript.NET是一个将Google V8 Javascript引擎集成和引入到CLI环境的工具,它可以在运行的过程中,使用C#代码来执行JavaScript代码。威力强不强大,还是看代码吧:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    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 < 5; i++)
                console.Print(message + ' (' + i + ')');
            number += i;
        ";
        //执行脚本
        context.Run(script);
        // 获取参数值
        Console.WriteLine("number: " + context.GetParameter("number"));
    }

        官方网站:https://github.com/JavascriptNet/Javascript.Net 

    7.ClearScript

         ClearScript的功能和上面的Javascript.NET是类似的,不仅可以动态的在.NET应用程序中添加JavaScript脚本,还可以添加C#脚本,相当于动态执行C#代码,当然这样的功能组件在前面一篇文章也介绍过,这个组件支持Google的 V8, 微软的JScript 和 VBScript引擎。功能同样也不含糊,看代码,由于js是本人的硬伤,不多说了:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    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);
    }

        官方网站:http://clearscript.codeplex.com/ 

    8.SharpKit代码转换

        这货是一个将C#代码转换为JavaScript代码的开源工具,虽然是和.net平台应用有点相反,但总归是一个奇葩角色,感觉很有意思,没玩过。。。那天实在要写js代码了,用它试试看。

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

    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

        官方网站:http://github.com/naudio/NAudio 

    10.Software Protector序列号生成

         说简单的,这个东西就是序列号生成器,用来保护应用程序的授权的。可以生成和验证不同类型的序列号(20位),能限制时间(最多999天),还能够锁定特定机器的key。这个组件是GUI界面,内核使用的是SKGL(Serial Key Generating Library)组件。所以使用的时候还是一起吧,地址如下:

    官方网站:http://softwareprotector.codeplex.com/

                     http://skgl.codeplex.com/ 

    11.Toxy文档信息抽取

        Toxy是一个获取数据和文档信息的抽取框架, 支持日常很多常见的格式,如docx, xlsx, xls, pdf, txt, epub, html等等。

        有意思的是,这个框架的开发者是Tony Qu,也是大名鼎鼎的NPOI的主要开发者。赞一个,NPOI总的来说非常好用。期待越来越强大,因为互联网的数据除了html之外,还有大量的文档格式,如果快速的检索抽取这些元数据信息,是非常有用的。

        这里有一篇作者的介绍文档,看起来很牛逼:http://blog.neuzilla.com/2015/03/02/getstartedwithtoxy/

        官方网站:http://toxy.codeplex.com/ 

    12..NET Assembly 信息获取

         这个比较简单,是获取.net程序集信息的一个小功能组件。如下面这个图显示的程序集的相关信息:

    1.jpg

        官方网站:http://assemblyinformation.codeplex.com/

    本文原始作者博客http://www.cnblogs.com/asxinyu

    E-mail:1287263703@qq.com

  • 相关阅读:
    爱信诺面试总结
    项目进展日志6
    项目进展日志5
    项目进展日志4
    项目进展日志3
    项目进展日志2
    项目阶段总结
    项目进展日志
    事物的ACID特性
    5.27作业
  • 原文地址:https://www.cnblogs.com/4kapple/p/4560631.html
Copyright © 2020-2023  润新知