2016年8月27日,HDG华为开发者汇的第五站在苏州这座拥有2500多年悠久历史的古城成功举行。此次技术沙龙与之前几站稍有不同,除了几位来自华为的专家带来的精彩演讲外,在最后还设置了《为何加入开发者社区?社区大牛经验谈》圆桌论坛环节,邀请了微软软件工程师 Colin Su 与猿生态创始人CEO晋剑两位大牛一起探讨。
华为开发者社区高级工程师张志礼首次揭秘了华为API可视化调用产品的开放 API的形式和调用方式,并现场演示了一个应用程序如何可视化的调用及编排华为 API、自动生成对应的调用代码及最终运行。
华为开发者社区高级工程师张志礼
现场实录如下:
大家上午好,我叫张志礼,我是2006年毕业,毕业之后在苏州(01:43),我相信现场估计有一些人应该知道,待过。我在那边待了6年,主要是做java的开发,后来到华为,也是做java的开发。最近我对前端技术特别感兴趣,我写JS大概是七八年前了,那时候JS已经作为标准加入java里面了,现在已经完全不一样了,因为前端发展的空间广,所以我真的是有非常大的愿望把前端的东西学习一下。
我想了解一下现场有多少人还在写代码的,可以示意一下吗。非常好,这么多人。我这个会技术方面一点,希望有兴趣的或者有问题的中间可以随时打断我。前面我们一直在说华为的开放性,通过API来做,我们先看一下华为的API开放性的主要有哪些。我这边列的主要的,不是详细的罗列,是主要的开放形态。我们首先看一下当前比较多的是Restful,我们现在提前端,货币是服务微服务化之后,我们会特别强调各个组建和系统之间的交互,通过什么交互,其实就是通过一种很多系统产生Restful接口的形式,所以Restful接口现在是非常多的开放形式。再一个是SOPA接口,我相信很多人也看到过,会看到一些SOPA排名榜,我一开始看到这个东西的时候是什么东西,看都看不到。后来我们详细了解SOPA协议之后就知道是做的接口交互的东西。现在SOPA接口用的相对来说少了,趋势是用的越来越少了。这两种是协议性的东西,换句话说我要调用华为这些接口,就要考虑在系统中根据这些接口的定义,来实现客户端,来调用这些接口。下面这种SDK包,这种是我们做了更多的构成,方便开发者,我们把这些协议的东西实现,通过不同的语言实现,提供SDK包,你直接把SDK包引用到里面就可以调用API了。举个例子,用C向语言来说,我们会发布C向语言包,我们会提供DAL库,你在工具里面下载我们的SDK包之后,这个DAL库原则上是怎么样,直接可以引用到API。而不需要关心每个接口的细节,比如说到B接口,你只需要用我们的密码,而不需要关注它是用哪种形式,这个就是可以带来开发效率的提升。
我们所有这些业务的提供,产品的提供,提供这些API接口,大家都有看到,如果大家对每个生态圈里面的每个接口,每个业务的接口比较感兴趣,可以点出来看。刚才有同学说他比较感兴趣大数据和云计算,这个我们可以看云计算这一块的东西,提供了更多的支持。
这个是我今天要讲的可视化,API这个东西我们传统的都是要么去现场,要么通过DL数据去引用。我们今天提出一个新的概念叫可视化,这个可视化我要强调一下它的目的,可能不是用于实际的项目开发,它的主要产品是帮大家来快速了解这个东西,这个API是什么意思,是个什么东西,通过这个东西,可视化的东西快速的帮你了解我们接口的意义,这就是我们可视化调研的目的。
先看一下可视化,可视化的东西主要核心的是强调用图形化的东西影像,或者一个什么东西来传达一个消息,传达一个信息。这个信息就是我们需要花时间去理解,但是通过这个东西能快速的帮助我们了解这个东西,这就是可视化的目的和含义。这边举一个简单的例子,当初很早的时候我们都是用计算机,那时候计算机还不是很普及的时候,都是很黑底百字,黑底的DOS窗口。
我们华为这边开发者为什么要做可视化的东西,我刚才提到可视化就是帮大家快速的了解产品,我们的API是怎样的,怎么调用,这就是我们做的可视化的目的,就是希望这个东西快速帮助大家了解华为的产品,它的调用结果,它有什么作用。下面看一下可视化产品是什么样的,我们现在在做的东西是结合了华为的视频监控的产品来做的,视频监控,现在百度上基本上每个接口都会有一张屏,这种智能化的设备,监控视频的方式,使得苏州的犯罪率,不叫犯罪率统计,我不知道有多少人记得,估计在10年多之前,苏州边远地方街上抢包的是很多的,现在基本上很难见到了。因为现在街上到处都是摄像头,我们可以根据智能的东西,很快能定位到他去什么地方,为破案带来相当大的帮助,视频监控会有这样的作用。如果你想了解这个东西,有些API我们提供了开放的接口,来调用这些视频。
我们现在来看一下调用情况,这里我延伸一下。下面切到很多人比较熟悉的界面,运营出来的是这样的,我让它运营起来,跑起来,给大家看一下这是什么东西。我们可视化这边,左边我把可视化呈现的效果放在这里,右边我会把一些每个API可以看得到的东西,如果你想要调这个API,要做的事情很简单。比如我们要调某个API,肯定会有一系列的组合逻辑。第一步有可能就是你要初始化这个软件,也就是说我们要调用初始化的接口。点了这个以后,你可以拖一下,拖到这边来,这个接口就会出现。拖上来之后,这样自然会想到释放这个拖到这边。因为你要调用服务器的资源,下一你要登录,我们把登录窗口拖到这边。登录的时候会有一些服务器的信息,包括通信的IP地址,或者通信通常会有一个协议端口,我们会把端口放在这边,还有常用的密码,不同的接口有不同的形式,通过这些信息就可以完成登录的工作。下一个登录的时候,最后会出来,写出来的时候我先把接口接好了,不然的话我放上之后还要再回过来。
下面我们要看视频了,要看画面,就是把看视频的放在这边。浏览的时候还有一个参数,因为有很多的摄像头。浏览完之后,我们可能需要调整,就是你可能看着看着,根据现场某些场景,你要做调整。大家如果看不出来,我放一下小的视频给大家看一下效果。这个效果出来了,我们就可以看到视频在播放,现在执行的是浏览,这边是停止。这就是完整的通过API拖拽的方式,来体现API到底是一个什么样的动作,可以帮助我们来了解情况。这个摄像头是转的,上下左右转的,这些都是控制摄像头的转动。当然这个东西你要个控制它,肯定要有很多的经验,有可能是汇报错误,当然也有可能是不报,但是你看不到效果。
我们可以让它做一个摄像头转动工作,如果不停的转动会一直转动。这个地方因为你不知道什么情况,它跟着一直在转,挺累的。我们下面再看一下,现在是往左转,这是一个左转的。其实我们还可以做一个更严密的事情,我刚才只用到了这里面,就是本身的API。但是可视化的东西是一个编程的概念,我们基本用到的循环、函数,在这里面都可以用得到。这时候我们可以做一个动作,我可以做一个复循环,可以重复来控制机器,循环一下。这个时候两个事情要做的,我们可以让他住的更远一点,他走了之后他又转,这样会更有意思一点,我们略微加一个组合,让它右转。这个时候开始左转,这个时候开始右转。我们可以想到这个动作有可能有很多地方有问题,如果形象一点的讲,这个摆头摇头的动,我们根据通常的规则,最佳实践的时候会把它抽象出来,会成为一个方型的函数或者方法,这个一定是支持的,我们可以把这个做出来,把这个当成一个函数。我把这些摆动的放到一个函数里面去,我把它命名一下。
这个时候定义了这个函数之后,函数里面的东西我们就可以定义了,我们再来看一下,应该是跟刚才一样的效果。它已经在动了,但是由于网络的原因效果不明显,卡的有点严重。如果网络流畅的话,大家可以感受到通过这个东西,改变这些组合,来改变接口。同时可以利用函数来做这个东西。我们作为资深级研究的话没有问题,如果刚开始关注,对于我们的系统还没有了解。但是如果你家里有一个小孩,或者是培训机构,大家可以拖一拖。
我们再看一下,这些接口来说不知道是什么意思,你如果点右键,我们会有一个帮助,我们这些接口都是在线化的,就是关于我们在线网站的东西,你可以看到接口的功能。我现在看到的这个版本或比较老,我们最近新的版本马上上线,会做一些说明,对于系统的东西大家后面可以看一下。在这里通过帮助可以看得到。还有这些服务器的端口号,这是一个变量,这个时候我就要看刚刚大家提到的一个概念,华为提供了一个远程实验室,我们把华为的一些产品设备,放在远程实验室里面,布好了环境,开发者在开发的时候没有环境,或者做项目设备还没有到位,这个时候我们就可以借助远程实验室来进行调测。这个东西怎么过去的呢?刚才视频里面主要说的就是远程实验室,一个帅哥通过远程实验室,很快的可以教他了。当然这个是我们华为的说法,这个东西从现实来说,能快速的帮助我们了解这些东西。我们可以看一下,这个东西怎么做,怎么样去获取这些环境信息。
大家看一下这个地方,developer·huawei·com/cn 是我们华为开发者社区官网地址。进来之后第一个就提到了我们API开放,环境开放里面大家可以看一下,就是不同的领域,有你关心的领域可以点进去看看,或者你感兴趣的这些文档都在那里,这是开放者里面。现在我回到远程实验室里面,我刚才说的是远程实验室。点进去,在这里我们可以看到远程实验室。这个时候你要进入实验室,如果你还不是我们华为开发者的时候,因为这个是需要登录的,为什么需要登录呢,这个东西不是谁都可以用的,因为我们是在做一个管控,因为我们需要知道谁在用这个东西,可能会通过他们的反馈改进我们的服务。而且如果不做控制的话,从安全方面来讲也是完全不靠谱的事情,会被人家曝光的。如果是第一次用户,可能需要麻烦大家注册一下,注册成为我们开发者社区的会员。
注册成功之后要登录,登录之后就可以来到这个平台。这个页面里面展示的是我们现在目前华为向开发者提供了什么环境信息,刚才用的就是监控的信息,在这里。右侧这边是有分类的,我直接就跳到这里了。你进来之后可以看到一个含量信息,在这边直接可以点击。我们的资源供给是有限的,所以需要大家来预约一下,你需要什么时段来用这个资源来调测你的程序,你提前需要预约一下。这个网络有点不行,(26:13),出来之后你可以选择用个什么方向的东西,用多长时间。预约之后,我们的系统会到你的邮箱里面告诉你,你会拿到我们整个环境的用户名密码,这个用户名密码是帮助你接入远程实验室的,远程实验室环境的信息是在这边,这边是环境里面设备的IP,设备的断口号,这边有教你怎么通过OTT接入信息,这就是我们远程实验室的基本情况。
作为开发者,我们要保持一颗好奇的信,这个东西虽然看起来挺有意思,但是我们一定会好奇这个东西怎么做的,这个东西是怎么实现的。我跟大家讲一下它主要的一些实现步骤,刚才我们看到的是产生这个页面。刚才看到的我们是基于整个的架构,基于java体系的,虽然现在这个东西已经渐渐出局,被取代了,但是因为这个业务的需要,我还是要用了它。最外面的是Swing,大家都知道Swing不依赖操作系统任何东西,它是轻的。但是我们看4.0的东西,又是一个重的东西,重的东西java里面不得不用SWDE,SWDE真正的意见是调用操作系统的。所以那些东西称之为重的方式。
最早java是不擅长做这些视频的输出、解码这些东西,它真正的解码、传输其实用的是我们视频传送业务的C++的SDK包,基于那些东西,我们通过打包的方式给java调用。那是左边的。右边整个大的一块是javaFX,我不知道有多少人了解javaFX,java还没有被甲骨文收购之前,已经在做这个项目了。当时就是因为他们觉得Swing不能有好的、大的突破,老是效果不太好,于是他们又开发了FX这个项目。这个项目的目的不光说不是取代的,但实际上它就是用来取代Swing的。
这里为什么会提的用javaFX,因为javaFX里面有一个软件谈了web引擎,这个web引擎目前它支持H5的特性。为什么要支持H5,是因为我们这一块其实是web的东西,这个东西是通过这些来受限的,GS,H5受限。
右边这个是一个纯的可视页面,我点起来的为什么左边的java的东西和C++的东西能够动起来,它能反馈到那边。就是因为web引擎,它是支持GS和java之间的关联互动,这是其中的一个原因。反过来GS能调到java,java也能调到GS,这个就形成了GS和java之间的和谐调度。这就是现在形成的整个的思路。
下面还有一类,我们也是刚刚开始尝试做这个东西,看能不能帮助开发者快速的了解我们的一些业务接口。这些东西大家看我们的界面就可以知道。刚才前面讲到US的内容还有一定的差距,这是我们要努力的方向。另外我们希望能够得到真正使用者,在座的各位如果能用到,希望能够提供什么东西,也希望大家提些意见,有什么东西有什么想法,有什么可以交流的,我希望大家可以提些意见。不提问也没什么关系,我们可以私下交流。这个东西有一个小的调研,小的编程的人士。
我就讲到这里,下面大家有没有一些问题可以交流。