zoukankan      html  css  js  c++  java
  • .NET开源项目

    .NET开源项目

    这些.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/

  • 相关阅读:
    NBUT 1120 Reimu's Teleport (线段树)
    NBUT 1119 Patchouli's Books (STL应用)
    NBUT 1118 Marisa's Affair (排序统计,水)
    NBUT 1117 Kotiya's Incantation(字符输入处理)
    NBUT 1115 Cirno's Trick (水)
    NBUT 1114 Alice's Puppets(排序统计,水)
    188 Best Time to Buy and Sell Stock IV 买卖股票的最佳时机 IV
    187 Repeated DNA Sequences 重复的DNA序列
    179 Largest Number 把数组排成最大的数
    174 Dungeon Game 地下城游戏
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/4560146.html
Copyright © 2011-2022 走看看