欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

基于.NET平台常用的框架和开源程序整理

程序员文章站 2023-12-17 13:47:28
自从学习.net以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个平台产生了浓厚的兴趣,在工作和学习中也积累了一些开源的组件,就目前想到...

自从学习.net以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个平台产生了浓厚的兴趣,在工作和学习中也积累了一些开源的组件,就目前想到的先整理于此,如果再想到,就继续补充这篇日志,日积月累,就能形成一个自己的组件经验库。

分布式缓存框架:

microsoft velocity:微软自家分布式缓存服务框架。

memcahed:一套分布式的高速缓存系统,目前被许多网站使用以提升网站的访问速度。

redis:是一个高性能的kv数据库。 它的出现很大程度补偿了memcached在某些方面的不足。

enyimmemcached:访问memcached最优秀的.net客户端,集成不错的分布式均衡算法。

开源的.net系统推荐:

oxite:微软asp.net mvc案例演示框架。

petshop:微软asp.net宠物商店。

orchard:国外一个mvc开源的博客系统。

sscli:微软在net framework 2.0时代的开源代码。

dasblog:国外一个基于asp.net的博客系统。

blogengine.net:国外一款免费开源的博客系统。

dotnetnuke.net:一套非常优秀的基于asp.net的开源门户网站程序。

discuz.net:国内开源的论坛社区系统。

nopcommerce和aspxcommerce:国外一套高质量的开源b2c网站系统。

jumbotcms和dtcms:国内两款开源的网站管理系统:

日志记录异常处理:

log4net.dll:轻量级的免费开源.net日志记录框架。

enterprise library log application black:微软企业库日志记录。

elmah:实现最流行的asp.net应用异常日志记录框架。

nlog:是一个简单灵活的日志记录类库,性能比log4net高,使用和维护难度低。

关于nosql数据库:

mongodb:分布式文件存储数据库。

membase:家族的一个新的重量级的成员。

自动任务调度框架:

quartz.net:开源的作业调度和自动任务框架。

topshelf:另一种创建windows服务的开源框架

依赖注入ioc容器框架:

unity:微软patterns&practicest团队开发的ioc依赖注入框架,支持aop横切关注点。

mef(managed extensibility framework):是一个用来扩展.net应用程序的框架,可开发插件系统。

spring.net:依赖注入、面向方面编程(aop)、数据访问抽象,、以及asp.net集成。

autofac:最流行的依赖注入和ioc框架,轻量且高性能,对项目代码几乎无任何侵入性。

postsharp:实现静态aop横切关注点,使用简单,功能强大,对目标拦截的方法无需任何改动。

ninject:基于.net轻量级开源的依赖注入ioc框架

常用的几个orm框架:

ef(ado.net entity framework):微软基于ado.net开发的orm框架。

nhibernate:面向.net环境的轻量级的orm框架。

sqlmapper.cs:用于小项目的通用的c#数据库访问类。

automapper:流行的对象映射框架,可减少大量硬编码,很小巧灵活,性能表现也可接受。

subsonic:优秀的开源的orm映射框架,同时提供符合自身需要的代码生成器。

fluentdata:开源的基于fluent api的链式查询orm轻量级框架。

dapper:轻量级高性能基于emit生成的orm框架。

emitmapper:性能较高的orm框架,运行时通过emit动态生成il代码,并非采用反射机制。

格式和数据类型转换:

newtonsoft.json:目前.net开发中最流行的json序列化库,为新版的webapi库提供基础。

system.json.dll:微软自己开发的json序列化组件(需要单独下载)

datacontractjsonserializer 和 datacontractxmlserializer:微软在wcf中使用的序列化器。

javascriptserializer:微软默认针对web开发者提供的json格式化器。

itextsharp、pdfsharp 和 pdf.net:通过.net处理和生成pdf文档的组件。

sharpziplib.dll:免费开源的zip和gzip文件解压缩组件。

math.net:强大的数学运算、微积分、解方程和科学运算。

docx:不需要安装word软件,通过c#操作word文件。

sharpserializer:开源xml和、二进制、json、压缩和优化框架。

反射和动态语言:

clay dynamic:开源的动态语言dynamic框架让您形如javascript的方式创建对象。

exposedobject:在类的外部通过动态语言dynamic的方式访问私有成员。

privateobject:微软单元测试框架中便捷在外部调用类内部私有成员的一个类。

跨平台和运行时解决方案:

mono.net:跨平台的.net运行环境,让.net跨平台运行成为可能。

dotgnu portable.net:类似于mono.net的跨平台运行时。

phalanger:将php编译成.net,可实现php与.net互操作。

vmdotnet:中国移动飞信所使用过的.net运行时。

unity3d:微软大力支持的机遇c#和javascript的跨平台游戏开发框架。

cassini、iis express和cassinidev:开源的asp.net执行环境。

katana:微软基于owin规范实现的非iis寄宿asp.net和mvc等。

ikvm.net:基于.net的java虚拟机,让java运行在.net之上。

web开发和设计:

jumony core:基于.net开发的html引擎。

microsoft.mshtml.dll、winista.htmlparser.dll 和 htmlagilitypack.dll:解析处理html文档的框架。

javascript.net和clearscript(微软出品):基于.net开发的javascript引擎。

ncrawler:其html处理引擎htmlagilitypack的的开源网络爬虫软件。

antixss:微软官方预防跨站xss脚本入侵攻击的开源类库,它通过白名单机制进行内容编码。

yuicompressor.net、microsoft ajax minifier 和 google closure compiler:javascrip和css压缩器。

nancyfx:是一个不错的轻量级开源.net web框架。如果想快速做个简单的web应用。

aspnetpager:国内知名的asp.net分页控件,支持多种分页方式。

nopi.dll:导出excel报表的插件(基于微软openxml实现)(nopi.css.dl通过css设置样式)

enterprise library:微软针对企业级应用开发的最佳实践组件。

powercollections:国外一个牛人写的高级开源集合。

移动互联网和云计算:

pushsharp:通过.net向各种移动平台推送消息。

mono for android:用.net语言开发安卓应用:

monotouch:用.net语言开发ios应用。

phonegap和appcan:跨平台基于html5的移动开发平台。

cordova:phonegap贡献给apache后的开源项目,是驱动phonegap的核心引擎。

网络通信和网络协议:

supersocket:基于.net轻量级的可扩展的socket开发框架。

superwebsocket:通过.net实现tml5 websocket框架。

xproxy:支持插件的基础代理程序集,内置nat、加解密、反向、直接和间接代理。

图形和图像处理框架:

paint.net:基于.net小巧灵活强大的图形处理开源项目。

imagemagick.net:用c#对开源图像处理组件imagemagick的封装。

skimpt:基于.net开源的屏幕截图软件。

imageglue.net:商业的图像处理组件,支持的格式列了一大堆。

sprite and image optimization framework:微软css精灵,多图合成一张大图和css样式。

桌面应用程序框架:

devexpress:一个全球知名的桌面应用程序ui控件库。

prism:微软开发的针对wpf和silverlight的mvvm框架,通过功能模块化的思想,来讲复杂的业务功能和ui耦合性进行分离。

wpftoolkit 和 fluent ribbon control suite:开发类似于office风格的ribbon菜单。

测试和性能评估方面:

faker.net:方便生成大批量测试数据的框架。

nunit:一个轻量级的单元测试框架。

moq:非常流行的mock框架,支持linq,灵活且高性能。

xunit:比nunit更好的单元测试框架,升级改进版的nunit框架。

miniprofiler和glimpse:基于mvc的两款性能事件监控框架。

事务和分布式事务支持:

ktmintegration:一个支持ntfs文件系统的事务开源类。

net transactional file manager:对文件系统操作(复制、移动和删除)加入事务支持。

分词、全文检索和搜索引擎:

lucene.net:流行高性能的全文索引库,可用于为各类信息提供强大的搜索功能。

lucene.net.analysis.pangu:支持lucene.net最新版的盘古中文分词扩展库。

数据验证组件整理:

fluentvalidation for .net:基于linq表达式方法链fluent接口验证组件。

microsoft.practices.enterpriselibrary.validation.dll:微软企业库验证程序块。

cuttingedge.conditions:基于fluent接口方法练接口的契约编程组件。

dotnetopenauth:让网站具备支持openid、oauth、infocard等身份验证的能力。

开源图表统计控件:

visifire:一套效果非常好的wpf图表控件,支持3d绘制、曲线、折线、扇形、环形和梯形。

sparrowtoolkit:一套wpf图表控件集,支持绘制动态曲线,可绘制示波器、cpu使用率和波形。

dynamicdatadisplay:微软开源的wpf动态曲线图,线图、气泡图和热力图。

可以扩充消息队列类别,如:kafka是一种分布式的,基于发布/订阅的消息系统。主要设计目标如下:
以时间复杂度为o(1)的方式提供消息持久化能力,即使对tb级以上数据也能保证常数时间复杂度的访问性能。
高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100k条以上消息的传输。
支持kafka server间的消息分区,及分布式消费,同时保证每个partition内的消息顺序传输。
同时支持离线数据处理和实时数据处理。
scale out:支持在线水平扩展。

rabbitmq

rabbitmq是使用erlang编写的一个开源的消息队列,本身支持很多的协议:amqp,xmpp, smtp, stomp,也正因如此,它非常重量级,更适合于企业级的开发。同时实现了broker构架,这意味着消息在发送给客户端时先在中心队列排队。对路由,负载均衡或者数据持久化都有很好的支持。

redis

redis是一个基于key-value对的nosql数据库,开发维护很活跃。虽然它是一个key-value数据库存储系统,但它本身支持mq功能,所以完全可以当做一个轻量级的队列服务来使用。对于rabbitmq和redis的入队和出队操作,各执行100万次,每10万次记录一次执行时间。测试数据分为128bytes、512bytes、1k和10k四个不同大小的数据。实验表明:入队时,当数据比较小时redis的性能要高于rabbitmq,而如果数据大小超过了10k,redis则慢的无法忍受;出队时,无论数据大小,redis都表现出非常好的性能,而rabbitmq的出队性能则远低于redis。

zeromq

zeromq号称最快的消息队列系统,尤其针对大吞吐量的需求场景。zeromq能够实现rabbitmq不擅长的高级/复杂的队列,但是开发人员需要自己组合多种技术框架,技术上的复杂度是对这mq能够应用成功的挑战。zeromq具有一个独特的非中间件的模式,你不需要安装和运行一个消息服务器或中间件,因为你的应用程序将扮演这个服务器角色。你只需要简单的引用zeromq程序库,可以使用nuget安装,然后你就可以愉快的在应用程序之间发送消息了。但是zeromq仅提供非持久性的队列,也就是说如果宕机,数据将会丢失。其中,twitter的storm 0.9.0以前的版本中默认使用zeromq作为数据流的传输(storm从0.9版本开始同时支持zeromq和netty作为传输模块)。

activemq

activemq是apache下的一个子项目。 类似于zeromq,它能够以代理人和点对点的技术实现队列。同时类似于rabbitmq,它少量代码就可以高效地实现高级应用场景。

kafka/jafka

kafka是apache下的一个子项目,是一个高性能跨语言分布式发布/订阅消息队列系统,而jafka是在kafka之上孵化而来的,即kafka的一个升级版。具有以下特性:快速持久化,可以在o(1)的系统开销下进行消息持久化;高吞吐,在一台普通的服务器上既可以达到10w/s的吞吐速率;完全的分布式系统,broker、producer、consumer都原生自动支持分布式,自动实现负载均衡;支持hadoop数据并行加载,对于像hadoop的一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。kafka通过hadoop的并行加载机制统一了在线和离线的消息处理。apache kafka相对于activemq是一个非常轻量级的消息系统,除了性能非常好之外,还是一个工作良好的分布式系统。

上一篇:

下一篇: