.net 开源组件推荐 之 StackExchange

原文: .net 开源组件推荐 之 StackExchange

 

已经两年没更新过博客了!!!

StackExchange,地址:https://github.com/StackExchange,开源的这些项目都是在StackOverflow线上使用的。

说起StackOverflow,扯两句闲话,所有码农应该都不陌生,特别是对.net的开发者,它可能是应用了.net里仅存的不多还能拿的出手的知名网站了。MySpace的远去,某东的彻底转身,就连以前的老东家某二流IM,很早的时候也是转向了Java。感觉用.net很少技术氛围很好的公司,其实老东家的技术氛围还是不错的。。有种说法:有技术氛围的.net公司都转型了,凡是在坚持都是自认为氛围好的。(黑的漂亮,竟无言以对。。)。以后再听到这种说法,可以拿StackOverflow扇他脸了,哈哈。。。但是如果有做java、python的机会,而又不介意.net出身的,请联系我。。^_^

经过反复黑和粉,做为一个靠.net吃饭的.net黑要转到正题了,这些开源项目里,推荐的都是跟.net相关的,并且都在StackOverflow上正在使用的,合适的情况下绝对可以放心大胆使用。

1,dapper

https://github.com/StackExchange/dapper-dot-net

可能有很多码农都使用过,一个微型ORM框架,很精简,就一个cs文件。

最核心的技术是称为反射发出的机制,大意就是在运行时动态生成IL,并且只在第一次使用时,在此之后的使用就可以全速运行,效率上是很有保证的。有兴趣的可以深究下,https://msdn.microsoft.com/zh-cn/library/8ffc3x75(v=vs.110).aspx

具体的使用方式也是很简单方便,发个自己的简单代码和使用笔记。

封装代码:https://github.com/fengzhbo/MySampleCode/blob/master/Code.Dapper/Code.Dapper/Main.cs

简单笔记:https://github.com/fengzhbo/MySampleCode/issues/1

性能非常优秀,看下项目介绍或自己试验下就行了。

2,StackExchange.Redis

https://github.com/StackExchange/StackExchange.Redis

一个访问操作Redis的.net客户端组件。

说到这里,不得不提一下另一个鼎鼎大名的Redis组件ServiceStack.Redis,这个组件在2.0之后就已经商业授权了,https://servicestack.net/download#free-quotas,免费使用的每小时只用6000次的使用请求上限,哎。。

做为客户端的组件,两者在使用上还是有点差别的,具体使用这里也不介绍了。还是分享个自己的简单封装和使用笔记。

简单封装:https://github.com/fengzhbo/MySampleCode/blob/master/Code.StackExchange_Redis/Code.StackExchange_Redis/Main.cs

简单笔记:https://github.com/fengzhbo/MySampleCode/issues/2

3,MiniProfiler

https://github.com/MiniProfiler

https://github.com/MiniProfiler/dotnet

同样也是StackOverflow内部使用和维护的,是一个需要在代码里埋点,用于分析性能的组件。

大概了解了一下,觉得还是挺有用的工具,从代码内部也不像其它外置工具分析,结果会更有说服力一些。并且有大公司在使用做为背书,绝对值得一用的。

但是,但是,我也只是了解了一下,还没有在实际项目上使用,没法展开,只能这样了,推荐一下,有使用过的可以详谈下。

 

到这里就可以结束了,但是顺带介绍下另一个开源组件

protobuf.net

https://github.com/google/protobuf

https://github.com/mgravell/protobuf-net

protobuf的.net版本,用于序列化的。通过本人的实验和实际使用上,protobuf是目前最快的序列化组件,并且序列化之后内容的体积也是最小的,比ServiceStack.Text、NewtonSoft.Json都快,.net自带的XML,Binary的序列化更是渣的不行。

 

到这里,一个简单的基于开源组件的数据访问层骨架就出来:用Dapper做ORM;ProtoBuf.net 做序列化和反序列化;最后使用StackExchange.Redis 来存取Redis。这些组件结合在一起使用简单方便、效率高、性能好,谁用谁知道。

最后说一下,纯个人经验,应用的性能问题,在数据这块,大都出现在数据库(索引、SQL、结构设计等)和序列化上。

 

.net加油

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Dapper .NET.NET 下一个简单的对象关系映射库 (ORM)。它支持SQLite, SQL CE, Firebird, Oracle, MySQL, PostgreSQL and SQL Server等数据库。   优点: 使用Dapper可以自动进行对象映射! 轻量级,单文件。 支持多数据库。 Dapper原理通过Emit反射IDataReader的序列队列,来快速的得到和产生对象。   Dapper.Net的示例代码: public class Dog {     public int? Age { get; set; }     public Guid Id { get; set; }     public string Name { get; set; }     public float? Weight { get; set; }     public int IgnoredProperty { get { return 1; } } }             var guid = Guid.NewGuid(); var dog = connection.Query("select Age = @Age, Id = @Id", new { Age = (int?)null, Id = guid }); dog.Count()     .IsEqualTo(1); dog.First().Age     .IsNull(); dog.First().Id     .IsEqualTo(guid); 下面是Dapper .NET与其他几种数据访问组件的性能对比,从比较结果看Dapper .NET表现优异。 Performance of SELECT mapping over 500 iterations - POCO serialization Method Duration Remarks Hand coded (using a SqlDataReader) 47ms Can be faster Dapper ExecuteMapperQuery 49ms ServiceStack.OrmLite (QueryById) 50ms PetaPoco 52ms BLToolkit 80ms SubSonic CodingHorror 107ms NHibernate SQL 104ms Linq 2 SQL ExecuteQuery 181ms Entity framework ExecuteStoreQuery 631ms Performance of SELECT mapping over 500 iterations - dynamic serialization Method Duration Remarks Dapper ExecuteMapperQuery (dynamic) 48ms   Massive 52ms Simple.Data 95ms Performance of SELECT mapping over 500 iterations - typical usage Method Duration Remarks Linq 2 SQL CompiledQuery 81ms Not super typical involves complex code NHibernate HQL 118ms   Linq 2 SQL 559ms   Entity framework 859ms   SubSonic ActiveRecord.SingleOrDefault         github地址:https://github.com/StackExchange/dapper-dot-net 入门教程:http://www.cnblogs.com/Sinte-Beuve/p/4231053.html   Dapper已经有很多成熟的扩展项目了,Dapper.Rainbow、Dapper.Contrib,DapperExtensions   其中Dapper-Extensions非常不错,github地址:https://github.com/tmsmith/Dapper-Extensions Dapper-Extensions的优点: 1、开源 2、针对Dapper封装了常用的CRUD方法,有独立的查询语法。 3、需要映射的实体类本身0配置,无需加特性什么的。是通过独立的映射类来处理,可以设置类映射到DB的别名,字段的别名等等。 Dapper-Extensions的缺点: 1、好几年没更新了 2、不支持oracle(木有oracle的方言,已经搞定)  3、不能同时支持多种数据库(已经搞定) 4、部分代码有些bug(发现的都搞定了)   Dapper-Extensions入门教程可参考: http://www.cnblogs.com/hy59005271/p/4759623.html       标签:orm
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值