在上周周记的结尾,我曾经说过本周要介绍Fabric的开发和应用。按照最开始的写做计划,我打算讲讲两种开发模式:直接使用Fabric API和利用Composer框架。可在通读完Composer的文档以后,我当即取消了原定计划,直接介绍Composer。html
选择工具A而不是B通常状况下理由都很直接:简单易上手。以我我的为例,在翻完Fabric的文档以后,虽然对于Fabric的架构和组件了然于胸,但对于如何开发,其实仍是很模糊的。git
为何会这样?github
有两个缘由:数据库
Composer刚好很是好的弥补了Fabric文档中这两个缺陷,从其文档构成能够很明显的看出来:架构
这种方式是我最喜欢的,对于开发者来说,他能很快创建起总体印象,而且树立起信心。composer
固然,文档好并不足以吸引开发者成为粉丝。让其成为开发首选的理由只有一个:对开发者友好。框架
Composer的开发者友好性表如今如下几个方面。ide
1. 良好的抽象函数
Chaincode是Fabric开发的核心,但看过了例子以后,说真的,很容易让开发者打退堂鼓。由于太底层了!让人有一种回到用Servlet开发Java Web应用的感受。工具
Composer在这一点上作得很好,它的Runtime内置了通用的Chaincode。使用它开发根本不会感到Chaincode的存在。并且整个过程几乎跟你开发一个普通的CRUD Web应用无异!在开发者看来,他就是在写普通的JavaScript函数。
这篇文章给出了两种方式(Chaincode和Composer)的开发范例,在结尾处提到二者的代码行差别:
This ±10x reduction in the number of lines of code when Go and Composer solutions are compared is fairly consistent across several samples.
2. 统一的工程化体验
实际的开发不是书上的简单例子,并且涉及多人,若是没有良好的开发规范,很难产生好的结果。从Fabric文档中,你没法看出一个区块链应用的项目工程应该是什么样子,只能看到一个个零散的代码文件。显然没法知足工程上的要求。
就一个Fabric区块链项目来说,它包含:
Composer很是完美地给出了解决方案,将整个开发过程分红3部分,每一部分都有对应的命令行工具,提供统一的开发体验:
Business Network,业务逻辑,其中包括如下组件:
Rest Server
Client App
怎么样,这个过程是否是很是眼熟?经过开发框架固化的开发过程可让开发人员更快的上手,而且统一在相同的“big picture”之下。而且,上述的各个组件对于有经验的开发者并不陌生,有助于快速理解。
你们能够在文档中的这个例子中看到完整的过程。
3. 内建测试的支持
即使是水平再烂的开发,他也但愿能验证一下本身写的东西才好意思交出去。然而,对于Fabric应用来说,这可不是件容易的事情,由于部署太繁琐了。
Composer再次拯救了开发!
Composer内置的runtime为测试提供了良好的支持,因为良好的抽象,这个runtime既能够是实际的Fabric,也能够是一个内置的Node.js进程。然后者则是为测试而生的。更好的是,这一切彻底对开发者透明,开发的上层代码彻底不须要改动。
对于上进心更强,想要实现自动化测试的同窗,这里有一个例子能够参考。
4. 便捷的CLI工具
相比起Fabric零散的命令集合,Composer提供了便捷的CLI,统一了开发、管理和运营任务。开发者能够利用它方便的实现:
让开发更加聚焦于手头的任务,而不是为了准备工做而分散太多精力。
前面说了Composer的那么多好处,接下来讲说Composer的局限性。就目前的文档来看,我没有看到如何用它来开发System Chaincode的例子。并且,我怀疑当前的版本并不支持。所以,假如你像要开发的System Chaincode,Composer可能并不能知足你的须要。而这一任务应该算不上一个大众型任务。
或许你会奇怪,为何我没有展现一个实际的例子来证实我说的这些好处。这只能怪Composer的文档写得太好了,基本是傻瓜式教程,按照它的步骤,基本不会出现什么问题。既然是这样,干吗还要花时间在这个上面呢?
说到底,本文的目的只有一个:用Composer来开发将来的Fabric应用,不要再自虐了!同时,最新一期的Thoughtworks雷达也将其列为“TRIAL”并给出了下面的评语:
... However, the programming abstraction of chaincode is relatively low level given it manipulates the state of the ledger directly. Moreover, it always takes a lot of time to set up infrastructure before writing the first line of blockchain code. Hyperledger Composer, which builds on top of Fabric, accelerates the process of turning ideas into software. Composer provides DSLs to model business assets, define access control and build a business network. By using Composer you could quickly validate your idea through a browser without setting up any infrastructure.
最后,请你们记住:即便Composer下降了开发的门槛,但仍是要记得认真学习Fabric文档哟!