基于.NET的微信SDK
超級懶漢編寫的基于.NET的微信SDK
一、前言
特別不喜歡麻煩的一個(gè)人,最近碰到了微信開發(fā)。下載下來了一些其他人寫的微信開發(fā)“框架”,但是被惡心到了,實(shí)現(xiàn)的太臃腫啦。
最不喜歡的就是把微信返回的xml消息在組裝成實(shí)體類,所以會比較臃腫,現(xiàn)在都提倡輕量級,所以有什么辦法可以避免大量實(shí)體類的存在呢。
當(dāng)然,還有包裝的比較繁雜,看完官方API后,再看"框架",讓人感覺一頭霧水,不夠清晰、明了。
二、我的實(shí)現(xiàn)思路
我的微信SDK(不敢自稱框架),最重要的實(shí)現(xiàn)2個(gè)目標(biāo):
1.輕量級,就是要摒棄實(shí)體類,盡量少的申明Entity,減少SDK的體量;
2.簡單、明了,就是SDK類的劃分和官方API保持一致,讓人一看就懂你的用意。
用戶發(fā)送請是首先POST到微信服務(wù)器的,然后微信服務(wù)器在POST到我的服務(wù)器,這個(gè)接受的消息是xml,我猜測為什么是xml,而不是更輕量級的json,是為了更好的兼容性,畢竟xml更通用一些(說錯(cuò)了,請指出來)。而我們主動調(diào)用微信的一些API時(shí),它返回的是json格式,我靠,要死啊,高大上啊。你們的副總裁張小龍不知道這事嗎?好吧,這樣其實(shí)也可以的。
其實(shí),調(diào)用微信的工作原理很簡單,沒有必要上來就框架什么的,我相信是個(gè)合格的程序員都能做出來。
我們的服務(wù)器只需要一個(gè)GET,和一個(gè)POST就可以和微信通信了,從這一點(diǎn)來看,設(shè)計(jì)的還是比較人性化的,贊一個(gè)。GET用于接通微信服務(wù)的校驗(yàn),驗(yàn)證;POST用于接收微信服務(wù)器過來的消息,然后將Response組裝好返回即可。
三、上代碼
好了,廢話不多說了。
由于微信服務(wù)器Post給我們的是xml消息,返回的是json,所以需要互轉(zhuǎn)。這樣就存在3種類型的format,這也是大量的框架定義實(shí)體類導(dǎo)致框架不夠輕量級的的原因之所在。
實(shí)現(xiàn)第一個(gè)目標(biāo),我主要用到了.net Framework4.0的Dynamic特性,和一個(gè)將xml字符串自動轉(zhuǎn)換成Dynamic Object的DynamicXml.cs類,還有一個(gè)將json字符串自動轉(zhuǎn)換成Dynamic Object的DynamicJson.cs類。
苦苦尋覓,終于讓我找到了我想要的。
1.以下是DynamicXml.cs類,文件頭有原作者的版權(quán)信息。
View Code
這個(gè)代碼我也沒仔細(xì)看,反正能用,沒出過差錯(cuò)。
2.以下是DynamicJson.cs類,文件頭有原作者的版權(quán)信息
View Code
這個(gè)代碼我也依舊沒仔細(xì)看,反正也能用,沒出過差錯(cuò)。
這個(gè)最核心的攔路虎解決了,后面的事情就順理成章的進(jìn)行啦。
3.基礎(chǔ)支持API包裝
View Code
4.發(fā)送消息包裝
View Code
5.其他代碼就不一一貼出來了。可以在文章最后自行下載完整代碼查閱。
6.處理與微信服務(wù)器通信的WeixinController.cs,WeixinExecutor.cs
View Code
View Code
完整源代碼下載:http://files.cnblogs.com/deepleo/WeixinSDK.rar
作者:深邃的獅子座
出處:http://www.deepleo.com/
總結(jié)
以上是生活随笔為你收集整理的基于.NET的微信SDK的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ad2(ad2摩托车)
- 下一篇: 艾绒的制作(艾叶怎么加工成艾绒)