已經兩年沒更新過博客了!!!
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加油