第8章HyperledgerComposer
客户端接入;
8.1项目简介;
现在的主流项目开发语言,如Java、Php、Golang、Node.js、Python等,都支持Http客户端调用。因此HyperledgerComposer的客户端接入十分简单,甚至让开发者完全感受不到区块链的存在,可以专注于业务。
本章首先从传统项目开发方式讲起,逐步揭秘传统项目和区块链项目开发过程的异同;再演示如何使用不同语言的客户端接入ComposerRestServer。;
8.2传统项目的开发方式;
传统项目开发方式如图8-1所示。;
8.3区块链项目的开发方式;;
8.3.2数据存储分布式开发
数据存储分布式开发方式仅仅是将区块链作为分布式数据库去使用,实际应用还是部署在中心服务器上的。因此该方式和传统开发区别不大,十分简单,在提升数据的安全性方面却有显著效果,开发过程如图8-3所示。;;
HyperledgerComposer适用于该开发方式,后端通过请求调用ComposerRestServer提供的RestfulApi对区块链上的数据进行增删查改等操作。
在了解两种区块链项目的开发方式后,下面进入对HyperledgerComposer客户端接入过程的讲解。HyperledgerComposer客户端的语言包括Java、Php、Golang、Node.js和Python,读者可以用自己熟悉的语言有选择地阅读。;
8.4多语言RestServer客户端接入;
目前流行的Java项目开发框架有Spring(面向切面编程)、SpringMVC(Web项目)、Mybatis(数据访问)、SpringBoot(快速搭建Spring项目)、Dubbo(RPC远程调用)、SpringCloud(微服务)、Netty(高性能NIO)等。
HttpClient是Java最常用的http调用库,并且在Java11的新特性中提供了HttpClientApi。由于Java8是目前企业项目的主流版本,此处使用Apache下的HttpClient来调用RestfulApi,方法如下:;
(1)引入Maven依赖(或者下载jar包),配置代码如下:;
(2)初始化HttpClientBuilder,此处使用连接池管理Http连接,代码如下:;
(3)创建HttpClient,根据接口地址和请求类型创建请求对象。
Get请求方式代码如下:;
Post请求方式代码如下:
Delete请求方式代码如下:;
Put请求方式代码如下:;
(4)发送请求,接受响应,??码如下:;
这里封装了两个常用函数:checkResponse用于判断请求是否返回了指定的状态码,否则抛出异常;responseToJsonString则用于接收RestServer返回的Json格式的字符串。;
8.4.2PHP
PHP有超过20年的历史和巨大的生态圈,该语言因为语法简单灵活而著称,但是其性能相对其他语言较低,因此适用于开发中小型网站项目以及业务层面的应用。
PHP的主流开发框架有ThinkPHP、Yii和Laravel等。其中,Laravel是目前PHP开发最主流的框架,它功能强大,设计思想先进,集合了PHP的优点和特性,但是上手较难。;
PHP常用的http调用方法有file_get_contents函数和curl扩展库。此处使用PHP原生支持的file_get_contents,方法如下:
(1)封装请求参数,代码如下:;
(2)封装请求对象,代码如下:;
(3)发送请求,接收响应,代码如下:
;
(4)将上述过程封装为完整的函数,代码如下:;
(5)调用封装的请求函数,代码如下:;
8.4.3Go语言
Go语言是谷歌为了降低开发软件的复杂度而推出的编程语言,它具有简洁、高效、快速、安全等特点,且天然支持高并发。Go的编译速度极快,编译后Go代码的运行速度能够媲美C语言。
Go语言还支持面向对象,具有闭包、反射等高级功能,学习过Java语言的开发者能够快速上手并投入开发。
Go语言的主流Web开发框架有Beego、Gin、Revel等,这些框架都充分发挥了Go语言天然高性能的优点,能从容地面对高并发的场景。;
使用Go语言提供的net/http模块下的http.NewRequest可以很轻松地进行Http调用,在数据抓取场景下也经常被使用。方法如下:;
(3)发送请求,接收响应状态码和字符串,代码如下:;
8.4.4Node.js
严格来说,Node.js不是一门编程语言,