微信类应用和公众平台接口当前呈现一种如火如荼的形势,其“IM+语音通讯+社交”的功能特点满足了大量使用者的沟通和分享需要,公众平台接口则对企业机构和商务人士拓展服务提供了无限可能和丰富的想象空间。 微信二次开发教程博客。
微信现在有两种平台,公众平台和开放平台,前者强调信息流,既可以像微博一样推送内容,也可以根据用户发来的消息进行智能回复;后者主要面向App开发者,通常前提是拥有成熟的应用程序,之后可以通过开放平台,将内容分享至朋友圈。
微信公众平台:https://mp.weixin.qq.com/
微信开发平台: http://open.weixin.qq.com/intro/?lang=zh_CN
微信的公众平台,已经免费开放高级技术接口,开发者通过这些技术接口,能更好地根据目标群体特征,定制基于微信公众平台上的专属服务,从而满足用户需求,解决自身业务问题。同时,高级技术接口的开放也将活跃微信平台生态链,微信公众平台上将掀起一股创新服务热潮,也会推动更多有价值的公众号出现。开发者可以利用新开放的接口做出功能更加强大的应用。据了解,微信公众平台在给予企业服务号新开放技术接口前,都必须先通过新的认证体系,从而确保接入的服务号所属的企业 / 机构是合法的。为了提高审核质量,微信官方引入第三方专业审核机构进行审核,该机构将通过工商局等部门核实企业 / 机构的合法性,并联系企业法人 / 负责人确认此申请是否真实。
微信在本质上是一个基于HTML5的浏览器,在智能机时代现在以APP为主的时代,先看看HTML5与APP之间的交锋,来自Michael Mahemoff的一篇文章。
(翻译)HTML5与APP 论战: http://www.williamlong.info/archives/3063.html
(原文)HTML5 vs Native: The Mobile App Debate http://www.html5rocks.com/en/mobile/nativedebate/
微信开发所用的技术和框架有:HTML5, Node.js, Sencha Touch, PhoneGap, MongoDB 以及 Redis 等, 下面将首先给与这些技术一个简单 介绍:
HTML5: 2012年W3C定稿HTML5规范:HTML5是开放Web标准的基石,它是一个完整的编程环境,适用于跨平台(无论是笔记本,台式机,还是智能手机)应用程序、视频和动画、图形、风格、排版和其它数字内容发布工具、广泛的网络功能等等,据百度百科:
HTML 5有8大特性:(1)强化了 Web 网页的表现性能,赋予网页更好的意义和结构。(2)追加了本地存储等 Web 应用的功能:HTML5 APP Cache,Indexed DB等,(3)设备兼容特性 (Class: DEVICE ACCESS):HTML5提供了前所未有的数据与应用接入开放接口,使外部应用可以直接与浏览器内部的数据直接相连,例如视频影音可直接与microphones及摄像头相联。(4)连接特性(Class: CONNECTIVITY):HTML5拥有更有效的服务器推送技术,Server-Sent Event和WebSockets就是其中的两个特性,这两个特性能够帮助我们实现服务器将数据“推送”到客户端的功能。(5)网页多媒体特性(Class: MULTIMEDIA) :支持网页端的Audio、Video等多媒体功能, 与网站自带的APPS,摄像头,影音功能相得益彰 (6)三维、图形及特效特性(Class: 3D, Graphics & Effects)基于SVG、Canvas、WebGL及CSS3的3D功能,用户会惊叹于在浏览器中,所呈现的惊人视觉效果。(7)性能与集成特性(Class: Performance & Integration)没有用户会永远等待你的Loading——HTML5会通过XMLHttpRequest2等技术,帮助您的Web应用和网站在多样化的环境中更快速的工作。(8)CSS3特性(Class: CSS3)在不牺牲性能和语义结构的前提下,CSS3中提供了更多的风格和更强的效果。此外,较之以前的Web排版,Web的开放字体格式(WOFF)也提供了更高的灵活性和控制性。
广义论及HTML5时,实际指的是包括HTML、CSS和JavaScript在内的一套技术组合。它希望能够减少浏览器对于需要插件的丰富性网络应用服务(plug-in-based rich internet application,RIA),如Adobe Flash、Microsoft Silverlight,与Oracle JavaFX的需求,并且提供更多能有效增强网络应用的标准集。
支持HTML5的浏览器包括Firefox(火狐浏览器),IE9及其更高版本,Chrome(谷歌浏览器),Safari,Opera等;国内的傲游浏览器(Maxthon),以及基于IE或Chromium(Chrome的工程版或称实验版)所推出的360浏览器、搜狗浏览器、QQ浏览器、猎豹浏览器等国产浏览器同样具备支持HTML5的能力。
在移动设备开发HTML5应用只有两种方法,要不就是全使用HTML5的语法,要不就是仅使用JavaScript引擎。JavaScript引擎的构建方法让制作手机网页游戏成为可能。由于界面层很复杂,已预订了一个UI工具包去使用。HTML5手机应用的最大优势就是可以在网页上直接调试和修改。
Node.js: 是一套用来编写高性能网络服务器的JavaScript工具包,一系列的变化由此开始。比较独特的是,Node.js会假设在POSIX环境下运行Linux 或 Mac OS X。如果是在Windows下,那就需要安装MinGW以获得一个仿POSIX的环境。在Node中,Http是首要的。Node为创建http服务器作了优化,所以在网上看到的大部分示例和库都是集中在web上(http框架、模板库等)。
有一篇 从测试数据来看Node.js和Java EE的性能区别 http://www.csdn.net/article/2013-10-28/2817306-performance-comparison-between-node-and-javaee
Node.js是一个可以快速构建网络服务及应用的平台, 该平台的构建是基于Chrome's JavaScript runtime,也就是说,实际上它是对Google V8引擎(应用于Google Chrome浏览器)进行了封装。V8引擎执行Javascript的速度非常快,性能非常好。Node对一些特殊用例进行了优化,提供了替代的API,使得V8在非浏览器环境下运行得更好。
特点:(1)V8引擎本身使用了一些最新的编译技术。这使得用Javascript这类脚本语言编写出来的代码与用C这类高级语言写出来的代码性能相差无几,却节省了开发成本。(2)事件驱动, Node采用了一个称为“事件循环(event loop)”的架构,使得编写可扩展性高的服务器变得既容易又安全:Node.js可以在不新增额外线程的情况下,依然可以对任务进行并行处理 ——Node.js是单线程的。它通过事件轮询(event loop)来实现并行操作(3)非阻塞IO, Node采用一系列“非阻塞”库来支持事件循环的方式。本质上就是为文件系统、数据库之类的资源提供接口。向文件系统发送一个请求时,无需等待硬盘(寻址并检索文件),硬盘准备好的时候非阻塞接口会通知Node。该模型以可扩展的方式简化了对慢资源的访问, 直观,易懂。尤其是对于熟悉onmouseover、onclick等DOM事件的用户,更有一种似曾相识的感觉。(4)Node.js作为一个新兴的后台语言, 让Javascript运行于服务器端不是Node的独特之处,但却是其一强大功能。(5) RESTful API
Node.js 入门手册:http://www.cnblogs.com/lhb25/p/nodejs-web-frameworks.html
Sencha Touch :世界上第一个基于HTML5的Mobile App框架,Sencha Touch可以让Web App看起来像Native App。美丽的用户界面组件和丰富的数据管理,全部基于最新的HTML5和CSS3的 WEB标准,全面兼容Android和Apple iOS设备。几大特性:
(1)基于最新的WEB标准 – HTML5,CSS3,JavaScript。整个库在压缩和gzip后大约80KB,通过禁用一些组件还会使它更小。(2)支持世界上最好的设备。Beta版兼容Android和iOS,Android上的开发人员还可以使用一些专为Android定制的主题。(3)增强的触摸事件。在touchstart、touchend等标准事件基础上,增加了一组自定义事件数据集成,如tap、swipe、pinch、rotate等。(4)数据集成。提供了强大的数据包,通过Ajax、JSONp、YQL等方式绑定到组件模板,写入本地离线存储。
PhoneGap:PhoneGap是一个用基于HTML,CSS和JavaScript的,创建移动跨平台移动应用程序的快速开发平台。它使开发者能够利用iPhone,Android,Palm,Symbian,WP7,Bada和Blackberry智能手机的核心功能——包括地理定位,加速器,联系人,声音和振动等,此外PhoneGap拥有丰富的插件,可以以此扩展无限的功能。
(1)PhoneGap是免费的,但是它需要特定平台提供的附加软件,例如iPhone的iPhone SDK,Android的Android SDK
(2)PhoneGap在多个主要的智能手机设备上提供了以下功能的支持:加速计,摄像头,罗盘,通讯录,文档,地理定位,媒体,网络,通知(警告、声音和振动) 和存储
MongoDB: 一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
CSDN上有一篇上讲MongoDB的:http://www.csdn.net/article/2013-10-30/2817342-genius-and-folly-mongodb
Redis:Redis是一个高性能的key-value数据库,redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用
Redis和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hashs(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis提供了Python,Ruby,Erlang,PHP客户端,使用很方便。
参考:http://news.xinhuanet.com/tech/2013-10/30/c_125624176.htm
www.baike.baidu.com