這裡給出的demo是具備整體框架的微信公眾平台源碼, 所謂demo就是拿過去就可以直接演示使用的東西, 當然不會具備非常詳細的具體到業務層面、數據層面的東西, 每個人都可以在此基礎上自由發揮, 只要看完前6篇的也一定能發展出自己的東西。
demo簡單易理解,任何人都可以看懂,這裡說明下demo跟我實際專案中的差異:
1、demo沒有連接資料庫。 demo下載可以直接使用,連接資料庫並不是每個人都很方便,且第1篇中已經把完完整整的資料庫開源了,包括設計時的視覺化介面, 想要連接資料庫的,在建立資料庫之後再新增一個EF連接就好, 連接方法在第2篇
2、demo沒有封裝接收到的微信訊息模型。 因為收到的訊息封裝的目的是為了進行訊息記錄,加入到資料庫,既然沒有1,這個就也沒有了, 訊息封裝第3篇已經寫出;
3、demo入口處沒有驗證加密簽章。 因為demo是要任何人拿回去就能用的,如果加上加密簽名驗證很多人可能調不通,本地測試的話根本沒有加密簽名供驗證(實際上本地測試可以直接return true),為了任何人都能弄清楚,就把驗證方法去掉了, 驗證方法的程式碼在第2篇一字不漏;
4、demo沒有IOC注入和快取相關。 並不是每個業務需求都用得上快取和IOC注入,也並不是每個人都接觸過這些, 為了通用,就去掉了。若你在其他專案中遇到與IOC注入和快取處理相關的問題,都可以問我, 很樂意解答
總結:demo就是個完整的微信公眾平台簡易的框架,且適合任何一個開發者; 實際專案需要使用的資料庫相關的在之前文章也全都有程式碼和操作方法;
根據demo任何人都可以超快速的做出屬於自己的微信公眾平台。
最重要的是分享整體想法~ 微信公眾平台其實很簡單,大多數人都是沒有理清訊息接收、處理的來龍去脈,就拿入口來說,就這些不同的case可能很多開發者要很久才能理清(與技術能力無關,主要是有些朋友不能一下子想明白),分享出這個demo源碼,讓任何人都可以入門
public void LookMsgType(string msgType) { #region 判断消息类型 switch (msgType) { case "text": RText mText = new RText(); mText = ReadXml.GetModel<RText>(mText, xmlModel); BLLWei.DoText(dbHome, mText);//文本消息 break; case "image": RImg mImg = new RImg(); mImg = ReadXml.GetModel<RImg>(mImg, xmlModel); BLLWei.DoImg(dbHome,mImg);//图片 break; case "voice": //声音 RVoice mVoice = new RVoice(); mVoice = ReadXml.GetModel<RVoice>(mVoice, xmlModel); BLLWei.DoVoice(dbHome,mVoice); break; case "video"://视频 RVideo mVideo = new RVideo(); mVideo = ReadXml.GetModel<RVideo>(mVideo, xmlModel); BLLWei.DoVideo(dbHome, mVideo); break; case "location"://地理位置 RLocation mLocation = new RLocation(); mLocation = ReadXml.GetModel<RLocation>(mLocation, xmlModel); BLLWei.DoLocation(dbHome,mLocation); break; case "link"://链接 RLink mLink = new RLink(); mLink = ReadXml.GetModel<RLink>(mLink, xmlModel); BLLWei.DoLink(dbHome,mLink); break; #region 事件 case "event": switch (ReadXml.ReadModel("Event", xmlModel)) { case "subscribe": if (ReadXml.ReadModel("EventKey", xmlModel).IndexOf("qrscene_") >= 0) { RCodeNotSub mNotSub = new RCodeNotSub(); mNotSub = ReadXml.GetModel<RCodeNotSub>(mNotSub, xmlModel); BLLWei.DoCodeNotSub(dbHome,mNotSub);//未关注的新用户,扫描带参数的二维码关注 } else { RSub mSub = new RSub(); mSub = ReadXml.GetModel<RSub>(mSub, xmlModel); BLLWei.DoSub(dbHome,mSub);//普通关注 } break; case "unsubscribe": RUnsub mUnSub = new RUnsub (); mUnSub = ReadXml.GetModel<RUnsub>(mUnSub, xmlModel); BLLWei.DoUnSub(dbHome,mUnSub);//取消关注 break; case "SCAN": RCodeSub mCodeSub = new RCodeSub(); mCodeSub = ReadXml.GetModel<RCodeSub>(mCodeSub, xmlModel); BLLWei.DoCodeSub(dbHome,mCodeSub);//已经关注的用户扫描带参数的二维码 break; case "LOCATION"://用户上报地理位置 RSubLocation mSubLoc = new RSubLocation(); mSubLoc = ReadXml.GetModel<RSubLocation>(mSubLoc, xmlModel); BLLWei.DoSubLocation(dbHome, mSubLoc); break; case "CLICK"://自定义菜单点击 RMenuClick mMenuClk = new RMenuClick(); mMenuClk = ReadXml.GetModel<RMenuClick>(mMenuClk, xmlModel); BLLWei.DoMenuClick(dbHome, mMenuClk); break; case "VIEW"://自定义菜单跳转事件 RMenuView mMenuVw = new RMenuView(); mMenuVw = ReadXml.GetModel<RMenuView>(mMenuVw, xmlModel); BLLWei.DoMenuView(dbHome, mMenuVw); break; }; break; #endregion } #endregion }
後續我還會寫文章,分享過程, 只為了分享開發歷程,大家可以看到我這麼些篇文章中所有的截圖都把微信號、名稱等P掉了,雖然寫文章時截圖也是用的沒有任何用戶的一般號做測試的。
更多asp.net開發微信大眾平台(7)前6篇的整體架構demo原始碼相關文章請關注PHP中文網!