OSS.Social微信项目标准库介绍
經過本周的努力,昨晚終于完成OSS.Social微信項目的標準庫支持,當前項目你已經可以同時在.net framework和.net core 中進行調用,調用方法也發生了部分變化,這里我簡單分享下,主要包含下邊幾個部分:
·?移植后的變化
·?和OSS.Common,OSS.Http關系
·?異步(Task)使用介紹
?
一. 移植后的變化
? ? 如果不了解OSS.Social的同學,可以參看我前面的幾篇文章介紹,這里就不多說了。這次移植的變化首先是對.net core項目能夠提供直接的支持,當前的使用的.net standard標準庫版本為1.3版,對應的framework支持為4.6版,對應.net core 的版本現在基本都支持,源碼詳見github,在項目我提供了Framework 4.6的單元測試項目,和.netcoreapp1.0的網站項目。由于時間不充裕,并沒有做全部接口測試,如果發現有bug可以及時和我聯系。
????其次是對異步的支持,這個也是這次變動最大的地方,幾乎公號管理功能(Offcial)模塊下的所有核心方法都轉為異步方式提供,這些完全歸功于HttpClient帶來便利,在底層IO層面提供了最基礎的異步支持。
當前可以像如下方式調用:
當然,在很多情況下需要及時對結果進行處理給出對應的響應信息,為了這種同步需求,所以我通過調用Task的wait()方法,封裝了一個簡單的擴展方法WaitResult(),直接可以如下調用:
?
二.?和OSS.Common,OSS.Http關系
OSS.Common和OSS.Http我很早以前寫的兩個基礎模塊,現在都統一到OSS系列下,現在都已經提供了.Net Standard的支持。前者負責全局結果實體,加密算法,基礎輔助類的實現。像在接口方法中所有的返回實體都會繼承ResultMo實體,其中提供了IsSuccess屬性,Ret和Message信息,統一項目中的傳值以及結果判斷,統一判斷依據。后邊會有針對它的文章介紹,這里略過,如果你想在項目中使用它,可以直接通過Nuget安裝:
至于OSS.Http,主要負責對Rest接口請求的封裝,底層已經由HttpWebRequest遷移至HttpClient模塊,如果你感興趣,可以參考我寫的《完成OSS.Http底層HttpClient重構封裝》的文章,當前也可以通過Nuget安裝:
三. 異步(Task)使用介紹
1. 基本介紹
因為在這個項目中使用了大量的async異步關鍵字,所以對于這種情況使用較少的同學可能略微有些不適,那這里我主要把異步的常見使用情況給大家介紹下。
異步在我印象中,從.net體系下最開始的使用Thread,到后來的Task,再后來的async和wait關鍵字。它的語法越來越精簡,在Framework2.0時代我們可能需要通過?new Thread(執行任務).Start()??方式來創建異步線程。因為系統線程的頻繁創建會造成系統資源的大量消耗,所以.net維護了一個線程池,可以讓我們通過 ThreadPool 來直接調用線程池中已經維護好的線程,我們可以很簡單的通過?ThreadPool.QueueUserWorkItem(執行任務)?完成異步線程的調用。
再后邊.net 提供了?Task.Run(()=>{ 執行任務?}) 這種形式的異步調用,這種形式默認使用線程池下的線程,同時返回一個 Task 對象,可以通過這個對象來等待或者判斷任務的完成狀態等。
雖然這個時候使用多線程異步操作已經相當簡單了,但是有時候異步代碼還是要單獨進行處理,會造成一定的層級關系。所以后來就有 async和await 關鍵字,可以讓我們能夠像同步流程一樣寫異步代碼。在下邊我用一個簡單的例子講解一下。
? 2. 使用形式:
這里我通過一個簡單的例子來給大家分享一下,假如我們現在有一個需求,需要通過用戶手機號,請求另外一個系統下的用戶名,并給用戶推送短信消息。下邊是我使用asyn和await寫的一個簡單例子。
在這個例子中,如果你把await和asyn拿開,那么流程就是一個完整的同步流程,但是加上之后就變成了一個異步。
這里要特殊說一下,await后邊并不是立刻執行異步,他只有在真正的異步操作時才會處理,在這個例子中,也就是1,2,3 步會同步執行,4,5則是在異步線程中執行,同時在執行第4步時,UpdateUserInfo()方法結束返回
3. 異常注意問題:
? 對于異步異常,我推薦這篇文章《關于C#中async/await中的異常處理(上)》,這里有一個問題需要強調一下,異步之后最好要對返回的?Task 有后續的操作, 這樣如果有異常就會及時拋出,否則會在?GC 回收資源時觸發,如果沒有設置全局異常處理,很可能會引起應用程序池的崩潰。?
如果你對我的代碼感興趣,可以直接查看我的GitHub,或者關注公眾號(OSSCoder):
原文地址:http://www.cnblogs.com/sunhoy/p/6411357.html
.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注
總結
以上是生活随笔為你收集整理的OSS.Social微信项目标准库介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: SQL Server on Linux的
- 下一篇: Visual Studio 2017 离
