作者:莫庭胤               时间:2012-03-01 

前些天晚上在找一个可以在iosandroidWindows系统下面能够方便传输文件的解决方案,发现dropboxwww.dropbox.com)确实可以实现跨系统的同步,它的机制是有一个中心服务器,每个客户端都可以请求服务器上传文件和下载文件,以及修改服务器的目录结构,作为PC端的服务器会自动同步所有的修改到PC端的文件夹(这个有点类似svn),而且也具有版本管理。

 

上面只是介绍这款产品的相关功能,但从这些功能出发思考,做一个跨平台的产品其架构是如何实现的呢?而且还有不少的第三方应用与之可以集成,证明其集成能力还是很好的。

 

查看了官方网站的api说明,除了sdk以外还有一个restl api,这个名词如果做过电商行业或者有了解过社交应用的应该不陌生,在infoQ网站也有一本这样的书RESTful Web Services Cookbook-cn,具体的可以通过google了解,关于restful的学习不是本文重点。

 

 

 Restfule API的发展已基本蔓延到整个互联网,国外的facebooktwitter,甚至国内的新浪微博所提供的都有rest api。那为什么需要api呢?道理很简单,就是方便第三方应用的介入,让第三方系统能够访问系统的一些关键业务点或者业务处理。而且作为api的角度出发,它必须是与平台无关性的,这样才能满足不同平台不同开发语言的应用集成。  

 

验证rest api的开发效果,我对dropbox 提供的rest api进行了开发,开发的过程中发现了一授权的处理,这个其实与单点登录类似,联想到我们的v9开发平台用授权的方式处理比单点登录貌似更加有说服力。授权完后,或者一个token,通过token调用不同的url进行访问,使用的是httpWebRequest的方式。

 

 

整个开发过程最大的障碍在于学习这个api涉及的方法的输入输出,但作为一般的开发人员基本上能胜任。

使用api的好处是解耦了平台与语言的关联,用.net或者java,至于是C#还是VB这个对api没有任何一点影响,api所关注的是你必须提交所指定的参数,我把处理的结果返回给你,中间用什么处理,怎么处理也不需要你管太多了。

 

这里联想一下v9的开发平台,是以wcf发布的服务接口,则必须使用sdk开发而且还必须是.Net平台的。作为一个开发平台,有必要把所有与业务无关的工作与处理都封装成api,避免业务过度关注业务无关的实现的问题,而且api的规划不应该是完全开放,还是有必要针对性或者是通用性的规划。如果是与平台无关性,那作为其他应用、系统的的集成就更简单方便了,毕竟很多企业都具有一个研发部分,可以进行这类的集成开发,很多企业的核心业务不是1-2个月可以帮之实现的。

 

使用api的好处是解耦了平台与语言的关联,用.net或者java,至于是C#还是VB这个对api没有任何一点影响,api所关注的是你必须提交所指定的参数,我把处理的结果返回给你,中间用什么处理,怎么处理也不需要你管太多了。

 

 这里联想一下v9的开发平台,是以wcf发布的服务接口,则必须使用sdk开发而且还必须是.Net平台的。作为一个开发平台,有必要把所有与业务无关的工作与处理都封装成api,避免业务过度关注业务无关的实现的问题,而且api的规划不应该是完全开放,还是有必要针对性或者是通用性的规划。如果是与平台无关性,那作为其他应用、系统的的集成就更简单方便了,毕竟很多企业都具有一个研发部分,可以进行这类的集成开发,很多企业的核心业务不是1-2个月可以帮之实现的。然后我们的ipad、iphone、android版本其实也是可以一个服务器一套API解决三个平台上的应用,还可以给第三方应用作为集成。

 

本文只是通过一个实例来阐述一个集成设计的思路,并不一点是用rest才能做到好的集成,当然如果rest api滥用又会引发其他的问题。