.net 開源組件推薦 之 StackExchange

 

已經兩年沒更新過博客了!!!java

StackExchange,地址:https://github.com/StackExchange,開源的這些項目都是在StackOverflow線上使用的。python

提及StackOverflow,扯兩句閒話,全部碼農應該都不陌生,特別是對.net的開發者,它多是應用了.net裏僅存的很少還能拿的出手的知名網站了。MySpace的遠去,某東的完全轉身,就連之前的老東家某二流IM,很早的時候也是轉向了Java。感受用.net不多技術氛圍很好的公司,其實老東家的技術氛圍仍是不錯的。。有種說法:有技術氛圍的.net公司都轉型了,凡是在堅持都是自認爲氛圍好的。(黑的漂亮,竟無言以對。。)。之後再聽到這種說法,能夠拿StackOverflow扇他臉了,哈哈。。。可是若是有作java、python的機會,而又不介意.net出身的,請聯繫我。。^_^git

通過反覆黑和粉,作爲一個靠.net吃飯的.net黑要轉到正題了,這些開源項目裏,推薦的都是跟.net相關的,而且都在StackOverflow上正在使用的,合適的狀況下絕對能夠放心大膽使用。github

1,dapper

https://github.com/StackExchange/dapper-dot-net數據庫

可能有不少碼農都使用過,一個微型ORM框架,很精簡,就一個cs文件。app

最核心的技術是稱爲反射發出的機制,大意就是在運行時動態生成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加油

相關文章
相關標籤/搜索