软件开发人员如何在互联网计算机上更好地构建
互联网计算机简化了软件体系结构和开发经验本身,使开发人员可以专注于开发出色的产品。
正如DFINITY的创始人兼首席科学家Dominic Williams在互联网计算机的钨版本的发布中说的那样,开发人员能够仅“编写和部署代码”到平台。
为了向更广泛的社区展示这些开发人员并与刚刚起步的开发人员分享宝贵的见解,启动活动包括由DFINITY开发人员合作伙伴计划负责人Alexa Smith主持的关于在互联网计算机上进行构建的小组讨论。
她与DFINITY的高级软件工程师Enzo Haussecker以及活动中展示的去中心化、可扩展的视频共享应用CanCan背后的主要开发人员之一以及区块链领域的两位资深人士David Phan和Rick Porter一起加入了会议。
他俩都是ORIGYN项目的软件工程师,ORIGYN项目是一个致力于为互联网计算机构建解决方案的团队。
Haussecker在一开始就说:“开发人员可以真正地专注于他们在哪里增值。”总结了互联网计算机的简单性。
“开发人员并没有真正通过复制、故障转移和数据库管理来增加价值,长期以来,这些只是我们在软件开发中必须处理的事情。许多开发人员都在寻找的平台之一是免费获得所有这些东西的平台,他们可以真正专注于他们的业务逻辑。”
Software Canisters
Canisters,计算单元既可以由代码又可以由状态组成,并且可以编译成WebAssembly模块,从而使这种简化成为可能。
将代码和状态编译到容器中之后,可以将容器部署在互联网计算机平台上并通过网络进行访问。
Porter将使用容器与微服务架构进行了比较,在微服务架构中,容器具有自己的独立功能或服务,开发人员可以通过容器间的通信将它们“串在一起”以创建应用程序。
他说:“您可以将整个应用程序放入一个单独的容器中,并通过该过程完全对其进行管理,或者您可以开始将其分解为各个组成部分。”
他举了一个例子,说明了容器架构和互联网计算机如何使传统的三层软件架构(由表示层/UI、业务逻辑层以及数据访问或持久层组成)真正发挥作用。
ORIGYN正在建立一个市场,Porter解释了如何通过容器本身来管理、分类和访问数据,方法是将创建、读取、更新、删除(CRUD)功能直接构建到业务逻辑中,而不是使用集中式数据库或对象关系映射(ORM)。
容器,其代码以及它们之间的调用可以无缝地重新创建传统三层系统的所有元素。
在UI主题上,Phan谈到了如何特别简化前端开发。
他拥有使用其它区块链平台(例如以太坊)构建去中心化应用程序的经验,并且他逐步了解了与启动和运行前端相关的一些复杂性以及所涉及的所有各种系统和集成。
其中包括使用JavaScript和web3.js与以太坊提供商Geth或Infura进行对话,然后存储在IPFS或Swarm之类的文件中。
相比之下,当使用DFINITY Canister SDK启动新项目时,开发人员将获得webpack,并可以使用他们选择的任何JavaScript或TypeScript框架(包括Vue和React)来开发前端。
访问前端就像导入前端容器模块,进行编译以及在传统浏览器中查看一样容易。
可扩展性和旧式集成
讨论以及围绕钨的整个讨论的主要主题是可扩展性,这是在分散空间中众所周知的问题。
Haussecker强调说,可扩展性不应由开发人员负担,而应由平台本身提供。
从开发人员的角度来看,关于CanCan的最值得注意的事情之一是,如何将光滑的前端与后端完全分开。
这种体系结构允许DFINITY团队以不同的语言交换和测试多个可伸缩性解决方案。
Haussecker讨论了为CanCan考虑的几种可扩展性解决方案,包括分布式哈希表(DHT)和DFINITY内部解决方案“ BigMap”。
该解决方案是在Rust和Motoko中开发的,Rust和Motoko是一种针对互联网计算机进行了高度优化的新语言。
在一切都可以在互联网计算机上运行之前,近期的开发人员很可能需要将其集成到现有系统中,以创建出色的消费产品和企业平台。
Phan举了一个使用“互联网计算机协议(ICP)邮件程序”弥合集中式和分散式世界的示例,该概念验证使Motoko开发人员可以将自定义电子邮件发送到FIFO队列容器。
然后,使用外部工作程序将这些消息推送到旧系统。
Phan完成了构建此过程的三个简单步骤,包括使用Vessel软件包管理器在Motoko中开发通用队列,将在每个应用程序中部署一个队列容器的Web界面以及定期从队列中获取消息的后端工作程序,以及处理它们。
在用户层也可以看到架构和开发过程中的这些简化。
Porter解释说,对于像他和Phan这样的工程师,他们都有为企业客户构建PoC和原型的经验,因此互联网计算机大大减少了他们的交付时间,并因此缩短了客户实现价值的时间。
通过消除与托管、文件存储、服务器和数据库等相关的复杂性,他们可以专注于业务逻辑和UX,以证明新解决方案的价值并展示关键功能。
Porter说:“所有这些东西对于DFINITY都是开箱即用的。如果我们需要某种前端,我们需要传统的三层体系结构应用程序,现在您只需生成项目,就已经完成了20%或30%。这一切都是关于设计数据类型和创建接口(通常是某种简单的CRUD内容或PoC),然后构建该前端。因此,它超级快。”
开发人员资源
小组提到了可供开始在互联网计算机上进行构建的开发人员可用的资源。
DFINITY的开发者论坛是一个宝贵而友好的起点,Haussecker还建议从简单的教程开始,逐步开发更复杂的应用程序。
Phan和Porter发现,引用GitHub上的DFINITY Examples存储库,DFINITY团队成员的副项目(例如Enzo的QR代码生成器)和Motoko基础库(这是最近开源的)非常有价值。
Phan还对DFINITY高级工程师Hans Larsen的“互联网上的黑客”视频系列非常赞赏。
Haussecker讨论了6月份DFINITY内部的Tungsten Hackathon产生的一些令人兴奋的项目,您可以进一步了解更多信息。
关于有一天可能会在互联网计算机上发布的其它软件和服务,Porter提到他希望看到在该平台上构建的“Shopify”,用户可以在该平台上列出要出售的商品(实物和数字商品)并定制自己的商店。
Phan说,他希望看到一个“开放的Uber”,以减少用户和驾驶员的费用。
这一切皆有可能,互联网计算机为开发人员提供了真正革命性的空间。
最好的部分是,随着该平台在2020年晚些时候全面公开发布,DFINITY的开发者社区还有更多东西可以使用。
现在通过dfinity.org/tungsten申请访问互联网计算机的钨版本。
加入我们的开发人员社区,并在forum.dfinity.org上开始构建。
作者:DFINITY(Medium)
翻译:Catherine
重新启动互联网:分散网络上的Andreessen Horowitz的Chris Dixon
进Dfinity官方社群,请添加小助手微信:
comiocn
长按关注
Dfinity官方微信
给你第一手资讯和项目信息
更可随时答疑解惑