专访柳峰:微信开发经验谈

时间:2017-07-31 11:41

刘运强,网名“柳峰”,一个热爱软件开发的80后。计算机研究生毕业,先后就职于亚信联创、贵州年华科技两家公司,担任过BI工程师、Java工程师、技术经理、研发部经理等职位。兼职做过几年Java、Android、Linux就业开发培训。工作之余,喜欢打羽毛球、骑单车、看电影、旅游,当然也会花不少时间来学习,不断充实武装自己。下面是对他的专访全文(部分提取网友问题)。

专访柳峰:微信开发经验谈


图:柳峰

CSDN:你自己具体是从什么时候开始做微信平台的开发的?

答:我是从2013年3月开始接触微信公众平台开发,那时微信公众平台才推出7个月左右,微信公众账号还没有自定义菜单。

CSDN:微信是一个新的平台,你一开始开发的时候是否遇到了什么技术上的困难?怎么解决的?

答:在微信公众平台开发过程中,的确遇到过一些技术问题,这里就例举几个大家都比较关心的技术问题。

1)微信服务器与第三方平台是明文传递消息,那么如何保障数据安全?建议非敏感数据采用普通消息(文本、图片、语音等)传递,敏感数据通过网页呈现,可以使用HTTPS加密传输。

2)如何使用Java发起HTTPS请求?这需要了解JSSE相关知识、理解信任管理器的处理规则才能编写出相关实现代码。这部分内容在我的博客和《微信公众平台应用开发:方法、技巧与案例》一书中都有详细介绍。

3)一套处理程序如何服务于多个微信公众账号?问题的关键在于处理程序如何区分请求来自于哪个公众账号,通常的实现方式有两种:1)通过URL+参数区分不同的公众账号;2)直接根据请求消息中的ToUserName区分不同的公众账号。

CSDN:帮企业搭建微信平台要搭建服务部署到公网上,是否有什么成熟的框架?

答:就拿Java语言来说,开发微信公众账号可以借助于Struts2、Spring、Hibernate、iBatis等框架实现,这些也是Java Web开发主要用到的技术框架,功能强大,使用简单。如果是开发微网站,可以考虑使用jQuery mobile,这是一套移动Web应用程序开发框架。

CSDN:目前市场上微信平台主流的都是用php开发的,为什么会造成这一现象呢? 

答:首先,需要说明的微信公众平台开发与具体的语言无关,凡是支持Web开发的语言都可以用于微信公众平台开发,甚至可以说,开发完成的微信公众账号处理程序就是一套Web程序。至于为什么大多数开发者会选择使用PHP开发微信公众账号,我认为主要有以下几点原因:

1)相对而言,Java的学习成本要比PHP高很多,Java语言涉及的面也更广泛。PHP主要用于开发Web应用,而Java可以用于Web应用、桌面应用和手机应用开发。

2)Java的优势在于面向对象的分层架构设计上,更适合开发大型企业应用;而对于中小企业应用,PHP的开发速度更快。

3)几乎所有的虚拟主机都支持PHP+MySQL,但支持Java的却很少;支持Java的虚拟主机要比支持PHP的虚拟主机贵很多。

4)PHP是微信官方推荐语言。微信官方提供的微信公众平台SDK和Demo只有PHP的,没有其他语言的,这使得采用PHP开发微信公众账号有更多示例代码可参考。

5)网络上关于Java、.NET、Ruby等其他语言开发微信公众账号的资料非常少。

CSDN:对于个人开发者来说,提供各种查询功能的公众平台对用户来说没有什么吸引力。那么,是否把公众平台当做用户入口,开发Web App才是正途?类似轻应用那样?但是公众平台又不能调用手机的接口,以后会有这方面的发展趋势吗?

答:首先,我认为微信公众账号就是一种轻应用,不应该说成是“类似轻应用”。其次,微信公众账号支持多种类型的消息,包括文本、图片、语音、视频、音乐和图文。当用户点击文本消息中的网页链接或图文消息后,都会通过微信内置浏览器打开一个网页,通过网页呈现内容,所以,我认为Web开发本就是微信公众账号开发的一部分。最后,微信公众账号是能够调用手机的摄像头、麦克风等设备。理论上,微信APP能够访问的硬件设备、接口,微信公众账号都能访问,这完全取决于未来微信的开放力度。

CSDN:微信平台开发和iOS、Android开发的异同是什么?新手重点应该注意哪些?

答:相对而言,微信公众平台开发要比iOS、Android开发简单,容易上手。iOS开发采用Objective-C语言,Android开发采用Java语言,而微信公众平台开发可选择的语言有很多,例如:Java、PHP、.NET、Ruby、Node.js等。iOS/Android开发的很多时间会放在UI设计布局上,而微信公众平台开发则更专注于功能的实现。新手在接触微信公众平台开发之前,应该打好Web开发基础,挑选使用自己最熟悉擅长的编程语言。

CSDN:在微信上,用户的使用场景对微信开发的影响是什么?