成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Hyperledger Fabric周周記:Composer

quietin / 3602人閱讀

摘要:在上周周記的結(jié)尾,我曾經(jīng)說過本周要介紹的開發(fā)和應(yīng)用??稍谕ㄗx完的文檔之后,我立即取消了原定計劃,直接介紹。讓其成為開發(fā)首選的理由只有一個對開發(fā)者友好。將發(fā)布到的暴露成,供外部調(diào)用,完全語言中立。而后者則是為測試而生的。

在上周周記的結(jié)尾,我曾經(jīng)說過本周要介紹Fabric的開發(fā)和應(yīng)用。按照最開始的寫作計劃,我打算講講兩種開發(fā)模式:直接使用Fabric API和利用Composer框架??稍谕ㄗx完Composer的文檔之后,我立即取消了原定計劃,直接介紹Composer。

選擇工具A而不是B一般情況下理由都很直接:簡單易上手。以我個人為例,在翻完Fabric的文檔之后,雖然對于Fabric的架構(gòu)和組件了然于胸,但對于如何開發(fā),其實還是很模糊的。

為什么會這樣?

有兩個原因:

文檔本身給出的開發(fā)范例(fabric-samples)缺乏一個系統(tǒng)性的介紹。所謂系統(tǒng)性,說白了就是教科書性質(zhì)的介紹,由一個簡單的例子開始,層層遞進(jìn),最終讓讀者全盤掌握。就當(dāng)前的文檔來說,這一任務(wù)顯然沒有達(dá)到。

缺乏聚焦,正如這篇Composer幻燈片(第四頁)介紹的,有太多東西要操心了,對于真正需要關(guān)心的東西(業(yè)務(wù)邏輯)反而沒有突出。

Composer恰好非常好的彌補(bǔ)了Fabric文檔中這兩個缺陷,從其文檔構(gòu)成可以很明顯的看出來:

給出Composer的整體性介紹

手把手教會大家如何完成安裝

給出一個Hello World級別的例子

如何進(jìn)行單元測試

如何部署到真實的Fabric環(huán)境

這種方式是我最喜歡的,對于開發(fā)者來講,他能很快建立起整體印象,并且樹立起信心。

當(dāng)然,文檔好并不足以吸引開發(fā)者成為粉絲。讓其成為開發(fā)首選的理由只有一個:對開發(fā)者友好。

Composer的開發(fā)者友好性表現(xiàn)在以下幾個方面。

1. 良好的抽象

Chaincode是Fabric開發(fā)的核心,但看過了例子之后,說真的,很容易讓開發(fā)者打退堂鼓。因為太底層了!讓人有一種回到用Servlet開發(fā)Java Web應(yīng)用的感覺。

Composer在這一點上做得很好,它的Runtime內(nèi)置了通用的Chaincode。使用它開發(fā)根本不會感到Chaincode的存在。而且整個過程幾乎跟你開發(fā)一個普通的CRUD Web應(yīng)用無異!在開發(fā)者看來,他就是在寫普通的JavaScript函數(shù)。

這篇文章給出了兩種方式(Chaincode和Composer)的開發(fā)范例,在結(jié)尾處提到兩者的代碼行差異:

This ±10x reduction in the number of lines of code when Go and Composer solutions are compared is fairly consistent across several samples.

2. 統(tǒng)一的工程化體驗

實際的開發(fā)不是書上的簡單例子,而且涉及多人,如果沒有良好的開發(fā)規(guī)范,很難產(chǎn)生好的結(jié)果。從Fabric文檔中,你無法看出一個區(qū)塊鏈應(yīng)用的項目工程應(yīng)該是什么樣子,只能看到一個個零散的代碼文件。顯然無法滿足工程上的要求。

就一個Fabric區(qū)塊鏈項目來講,它包含:

存儲于賬本上的Asset

操作Asset的Chaincode

訪問Chaincode的Client App

應(yīng)用相關(guān)的權(quán)限和成員

Composer非常完美地給出了解決方案,將整個開發(fā)過程分成3部分,每一部分都有對應(yīng)的命令行工具,提供統(tǒng)一的開發(fā)體驗:

Business Network,業(yè)務(wù)邏輯,其中包括以下組件:

asset model,存儲于賬本上的Asset,其過程跟設(shè)計數(shù)據(jù)庫的表沒什么兩樣。

transaction function,對應(yīng)Chaincode中的各個方法,但對于開發(fā)者來講完全透明。

acl文件,權(quán)限定義。

query,命名查詢,供transaction function調(diào)用。

Rest Server

將發(fā)布到Fabric的Business Network暴露成Restful API,供外部調(diào)用,完全語言中立。

Client App

嚴(yán)格來講,這一步并非必要,因為既然上面已經(jīng)有了語言中立的API,理論上可以用任何框架來開發(fā)相應(yīng)的Client APP。但Composer提供了一個基于Angular的模板幫助加速這一過程。

怎么樣,這個過程是不是非常眼熟?通過開發(fā)框架固化的開發(fā)過程可以讓開發(fā)人員更快的上手,并且統(tǒng)一在相同的“big picture”之下。并且,上述的各個組件對于有經(jīng)驗的開發(fā)者并不陌生,有助于快速理解。

大家可以在文檔中的這個例子中看到完整的過程。

3. 內(nèi)建測試的支持

即便是水平再爛的開發(fā),他也希望能驗證一下自己寫的東西才好意思交出去。然而,對于Fabric應(yīng)用來講,這可不是件容易的事情,因為部署太繁瑣了。

Composer再次拯救了開發(fā)!

Composer內(nèi)置的runtime為測試提供了良好的支持,由于良好的抽象,這個runtime既可以是實際的Fabric,也可以是一個內(nèi)置的Node.js進(jìn)程。而后者則是為測試而生的。更好的是,這一切完全對開發(fā)者透明,開發(fā)的上層代碼完全不需要改動。

對于上進(jìn)心更強(qiáng),想要實現(xiàn)自動化測試的同學(xué),這里有一個例子可以參考。

4. 便捷的CLI工具

相比起Fabric零散的命令集合,Composer提供了便捷的CLI,統(tǒng)一了開發(fā)、管理和運營任務(wù)。開發(fā)者可以利用它方便的實現(xiàn):

應(yīng)用打包和部署

應(yīng)用腳手架生成

環(huán)境管理

讓開發(fā)更加聚焦于手頭的任務(wù),而不是為了準(zhǔn)備工作而分散太多精力。

前面說了Composer的那么多好處,接下來說說Composer的局限性。就目前的文檔來看,我沒有看到如何用它來開發(fā)System Chaincode的例子。而且,我懷疑當(dāng)前的版本并不支持。因此,假如你像要開發(fā)的System Chaincode,Composer可能并不能滿足你的需要。而這一任務(wù)應(yīng)該算不上一個大眾型任務(wù)。

或許你會奇怪,為什么我沒有展示一個實際的例子來證明我說的這些好處。這只能怪Composer的文檔寫得太好了,基本是傻瓜式教程,按照它的步驟,基本不會出現(xiàn)什么問題。既然是這樣,干嘛還要花時間在這個上面呢?

說到底,本文的目的只有一個:用Composer來開發(fā)未來的Fabric應(yīng)用,不要再自虐了!同時,最新一期的Thoughtworks雷達(dá)也將其列為“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.

最后,請大家記?。杭词笴omposer降低了開發(fā)的門檻,但還是要記得認(rèn)真學(xué)習(xí)Fabric文檔喲!

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/24124.html

相關(guān)文章

  • Hyperledger Fabric記:起源

    摘要:作為系列的新篇章,我選擇從超級賬本的開始。為什么選擇超級賬本作為起點我在之前的文章中曾說過會從超級賬本入手開始區(qū)塊鏈的學(xué)習(xí)和實踐,同時也給出了個人的理由。檢查事務(wù)提議的響應(yīng)。為了降低區(qū)塊鏈應(yīng)用的開發(fā)難度,超級賬本項目又引入了。 本著以教帶學(xué),Learning by Doing的想法,我于上周加入了Bob組織的HiBlock區(qū)塊鏈技術(shù)布道群。這個群可不太好混,群規(guī)要求每個成員必需每周有輸...

    hatlonely 評論0 收藏0
  • Hyperledger FabricHyperledger Fabric模型)

    摘要:資產(chǎn)在中表示為鍵值對的集合,狀態(tài)更改記錄為通道分類帳上的交易,資產(chǎn)可以用二進(jìn)制和或格式表示。分類帳由區(qū)塊鏈鏈組成,用于以塊的形式存儲不可變的順序記錄,以及用于維護(hù)當(dāng)前狀態(tài)的狀態(tài)數(shù)據(jù)庫。 Hyperledger Fabric模型 本節(jié)概述了編入Hyperledger Fabric的關(guān)鍵設(shè)計特性,實現(xiàn)了對全面但可定制的企業(yè)區(qū)塊鏈解決方案的承諾: 資產(chǎn) - 資產(chǎn)定義為可以通過網(wǎng)絡(luò)交換幾乎任...

    W_BinaryTree 評論0 收藏0
  • 聯(lián)盟鏈初識以及Fabric環(huán)境搭建流程

    摘要:本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接聯(lián)盟鏈初識以及環(huán)境搭建流程原文已更新,請讀者前往原文閱讀這篇文章首先簡單介紹了聯(lián)盟鏈?zhǔn)鞘裁?,再詳?xì)的介紹了環(huán)境搭建的整個流程。 本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接:聯(lián)盟鏈初識以及Fabric環(huán)境搭建流程原文已更新,請讀者前往原文閱讀 這篇文章首先簡單介紹了聯(lián)盟鏈?zhǔn)鞘裁?,再詳?xì)的介紹了Fabric環(huán)境搭建的整個流程。 區(qū)塊鏈分類: 以參與方式分類,區(qū)...

    CoffeX 評論0 收藏0
  • Fabric學(xué)習(xí)筆記(七) - fabric-sdk-java End2endIT運行

    摘要:目的因最熟悉故最后還是拿做突破口學(xué)習(xí)本文只運行功能以后具體在分析運行環(huán)境網(wǎng)絡(luò)遠(yuǎn)程本地遠(yuǎn)程下載運行網(wǎng)絡(luò)核查網(wǎng)絡(luò)是否啟動成功這一步我遇到的問題是未啟動成功原因在于中這 目的 因最熟悉java,故最后還是拿java做突破口學(xué)習(xí)sdk,本文只運行demo,sdk功能以后具體在分析. 運行環(huán)境 Fabric網(wǎng)絡(luò) 遠(yuǎn)程Centos Fabric-sdk-java 本地MacOs Intellij...

    mzlogin 評論0 收藏0
  • Hyperledger Fabric(目錄)

    摘要:企業(yè)區(qū)塊鏈平臺企業(yè)級許可的分布式分類賬平臺,為廣泛的行業(yè)用例提供模塊化和多功能性。這些節(jié)點通過應(yīng)用已經(jīng)由共識協(xié)議驗證的交易來維護(hù)分類帳的副本,該交易被分組為包括將每個塊綁定到前一個塊的散列的塊中。 企業(yè)區(qū)塊鏈平臺 企業(yè)級許可的分布式分類賬平臺,為廣泛的行業(yè)用例提供模塊化和多功能性。 介紹 一般而言,區(qū)塊鏈?zhǔn)且粋€不可變的交易分類賬,維護(hù)在一個分布式對等節(jié)點網(wǎng)絡(luò)中。這些節(jié)點通過應(yīng)用已經(jīng)由共...

    trigkit4 評論0 收藏0

發(fā)表評論

0條評論

quietin

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<