.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/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加油
.net 开源组件推荐 之 StackExchange的更多相关文章
- 推荐3个小程序开源组件库——Vant、iView、ColorUI
推荐3个小程序开源组件库 在进行小程序开发时,经常会遇到编写组件方面的阻碍,这让我们花费大量的时间在页面以及 CSS 样式编写上.因此可以使用开源组件库,有些复杂的组件可以直接拿来使用,节省开发时间, ...
- JS组件系列——Bootstrap组件福利篇:几款好用的组件推荐(二)
前言:上篇 JS组件系列——Bootstrap组件福利篇:几款好用的组件推荐 分享了几个项目中比较常用的组件,引起了许多园友的关注.这篇还是继续,因为博主觉得还有几个非常简单.实用的组件,实在不愿自己 ...
- .net 开源组件
文章转自:http://www.cnblogs.com/asxinyu/p/dotnet_opensource_project_3.html 在前2篇文章这些.NET开源项目你知道吗?让.NET开 ...
- 27个提升效率的iOS开源库推荐
DZNEmptyDataSet(UI,空表格视图解算器) PDTSimpleCalendar(UI,drop-in日历组件) MagicalRecord(实施活跃记录模式的Core Data助手) C ...
- FluentConsole是一个托管在github的C#开源组件
FluentConsole是一个托管在github的C#开源组件 阅读目录 1.控制台能有啥滑头? 2.FluentConsole基本介绍 3.使用介绍 4.资源 从该系列的第一篇文章 .NET平台开 ...
- 开源巨献:年度最佳 JavaScript 和 CSS 开源库推荐!
作者:编辑部的故事 < 开源巨献:年度最佳 JavaScript 和 CSS 开源库推荐! > 开源巨献:年度最佳 JavaScript 和 CSS 开源库推荐! Tutoria ...
- [转]JS组件系列——Bootstrap组件福利篇:几款好用的组件推荐
本文转自:https://www.cnblogs.com/landeanfen/p/5461849.html#_label3 阅读目录 一.时间组件 1.效果展示 2.源码说明 3.代码示例 二.自增 ...
- 安卓开发笔记——关于开源组件PullToRefresh实现下拉刷新和上拉加载(一分钟搞定,超级简单)
前言 以前在实现ListView下拉刷新和上拉加载数据的时候都是去继承原生的ListView重写它的一些方法,实现起来非常繁杂,需要我们自己去给ListView定制下拉刷新和上拉加载的布局文件,然后添 ...
- 【转】JS组件系列——Bootstrap组件福利篇:几款好用的组件推荐(二)
前言:上篇 JS组件系列——Bootstrap组件福利篇:几款好用的组件推荐 分享了几个项目中比较常用的组件,引起了许多园友的关注.这篇还是继续,因为博主觉得还有几个非常简单.实用的组件,实在不愿自己 ...
随机推荐
- 面向对象的JavaScript --- 动态类型语言
面向对象的JavaScript --- 动态类型语言 动态类型语言与面向接口编程 JavaScript 没有提供传统面向对象语言中的类式继承,而是通过原型委托的方式来实现对象与对象之间的继承. Jav ...
- collate字段详细讲解
collate可以在库级别上,表级别上,列级别上设计:意思就是“排列规则”;通常和charset结合使用: 例如: 建议使用utf8mb4而不是utf8,因为utf8最多支持3字节得长度,但是有些字符 ...
- nginx静态文件缓存的解决方案
nginx的一大功能就是完成静态资源的分离部署,减轻后端服务器的压力,如果给这些静态资源再加一级nginx的缓存,可以进一步提升访问效率. 第一步:添加nginx.conf的http级别的缓存配置 # ...
- Convolutional Networks for Images,Speech,and Time-series
Convolutional Networks for Images,Speech,and Time-series Yann LeCun Yoshua Bengio 1995年的 1引言 多层BP网络 ...
- DQN(Deep Reiforcement Learning) 发展历程(二)
目录 动态规划 使用条件 分类 求解方法 参考 DQN发展历程(一) DQN发展历程(二) DQN发展历程(三) DQN发展历程(四) DQN发展历程(五) 动态规划 动态规划给出了求解强化学习的一种 ...
- mvn dependency:tree
jar依赖冲突解决实践 前言 随着功能的增多,各种中间件的引入.应用以来的各种jar的规模极具膨胀,出现jar冲突和Class冲突的问题层出不穷,让人不胜其扰.本文针对冲突,提供一个排查和定位问题的最 ...
- Maven的继承与聚合——多模块开发
一:Maven多模块项目,适用于一些比较大的项目,通过合理的模块拆分,实现代码的复用,便于维护和管理.尤其是一些开源框架,也是采用多模块的方式,提供插件集成,用户可以根据需要配置指定的模块. 二:继承 ...
- final、finally、 finalize 有什么不同
感觉这三者除了长得像也没啥可作为比较的,但是面试题中经常会出现这三者的比较,就简单总结一下. 1.final final 可以用来修饰类.方法和变量,修饰类的时候表示类是不可以被继承的,修饰方法的时候 ...
- 20155206 Exp5 MSF基础应用
20155206 Exp5 MSF基础应用 基础问题 . 用自己的话解释什么是exploit,payload,encode . exploit:这个词本身只是利用,但是它在黑客眼里就是漏洞利用.有漏洞 ...
- 20155304《网络对抗》Exp7 网络欺诈技术防范
20155304<网络对抗>Exp7 网络欺诈技术防范 实践内容 本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法.具体实践有 (1)简单应用SET工具建立冒名网 ...