码迷,mamicode.com
首页 > 微信 > 详细

[转贴]超级懒汉编写的基于.NET的微信SDK

时间:2014-05-24 09:54:09      阅读:457      评论:0      收藏:0      [点我收藏+]

标签:style   class   blog   c   code   java   

一、前言

      特别不喜欢麻烦的一个人,最近碰到了微信开发。下载下来了一些其他人写的微信开发“框架”,但是被恶心到了,实现的太臃肿啦。

      最不喜欢的就是把微信返回的xml消息在组装成实体类,所以会比较臃肿,现在都提倡轻量级,所以有什么办法可以避免大量实体类的存在呢。

      当然,还有包装的比较繁杂,看完官方API后,再看"框架",让人感觉一头雾水,不够清晰、明了

二、我的实现思路

      我的微信SDK(不敢自称框架),最重要的实现2个目标:

      1.轻量级,就是要摒弃实体类,尽量少的申明Entity,减少SDK的体量;

      2.简单、明了,就是SDK类的划分和官方API保持一致,让人一看就懂你的用意。

      用户发送请是首先POST到微信服务器的,然后微信服务器在POST到我的服务器,这个接受的消息是xml,我猜测为什么是xml,而不是更轻量级的 json,是为了更好的兼容性,毕竟xml更通用一些(说错了,请指出来)。而我们主动调用微信的一些API时,它返回的是json格式,我靠,要死啊, 高大上啊。你们的副总裁张小龙不知道这事吗?好吧,这样其实也可以的。

       其实,调用微信的工作原理很简单,没有必要上来就框架什么的,我相信是个合格的程序员都能做出来。

       我们的服务器只需要一个GET,和一个POST就可以和微信通信了,从这一点来看,设计的还是比较人性化的,赞一个。GET用于接通微信服务的校验,验证;POST用于接收微信服务器过来的消息,然后将Response组装好返回即可。

三、上代码

       好了,废话不多说了。

       由于微信服务器Post给我们的是xml消息,返回的是json,所以需要互转。这样就存在3种类型的format,这也是大量的框架定义实体类导致框架不够轻量级的的原因之所在。

       实现第一个目标,我主要用到了.net Framework4.0的Dynamic特性,和一个将xml字符串自动转换成Dynamic Object的DynamicXml.cs类,还有一个将json字符串自动转换成Dynamic Object的DynamicJson.cs类

       苦苦寻觅,终于让我找到了我想要的。

       1.以下是DynamicXml.cs类,文件头有原作者的版权信息。

bubuko.com,布布扣
bubuko.com,布布扣 View Code
bubuko.com,布布扣

     这个代码我也没仔细看,反正能用,没出过差错。

 

      2.以下是DynamicJson.cs类,文件头有原作者的版权信息

bubuko.com,布布扣
bubuko.com,布布扣 View Code
bubuko.com,布布扣

      这个代码我也依旧没仔细看,反正也能用,没出过差错。

      这个最核心的拦路虎解决了,后面的事情就顺理成章的进行啦。

 

      3.基础支持API包装

bubuko.com,布布扣
bubuko.com,布布扣 View Code
bubuko.com,布布扣

      

       4.发送消息包装

bubuko.com,布布扣
bubuko.com,布布扣 View Code
bubuko.com,布布扣

 

       5.其他代码就不一一贴出来了。可以在文章最后自行下载完整代码查阅。

       6.处理与微信服务器通信的WeixinController.cs,WeixinExecutor.cs

bubuko.com,布布扣
bubuko.com,布布扣 View Code
bubuko.com,布布扣

 

bubuko.com,布布扣
bubuko.com,布布扣 View Code
bubuko.com,布布扣

 

 完整源代码下载: http://files.cnblogs.com/deepleo/WeixinSDK.rar

 Github在线浏览:https://github.com/night-king/weixinSDK

[转贴]超级懒汉编写的基于.NET的微信SDK,布布扣,bubuko.com

[转贴]超级懒汉编写的基于.NET的微信SDK

标签:style   class   blog   c   code   java   

原文地址:http://www.cnblogs.com/redmondfan/p/3748508.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!