50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

了解 Nanoko:JavaScript SOA 平台和构建过程

  • 2013-07-11
  • 本文字数:2478 字

    阅读完需:约 8 分钟

Nanoko 是由 Ubidreams 和 Dynamis Technologies 开发的一个 JavaScript 构建过程,它被设计用于提供模块化和可重用性来弥补现有工具的不足,而不是做重复发明的工作。

InfoQ 邀请 Ubiderams 的创建者 Romain Pellerin 就该平台进行了一番深入的分析。

InfoQ**:面向大型客户端应用程序的时候,为什么我要选用 Nanoko而不是 ember.js或者 angular.js**呢?

“Nanoko 并不是一个 MVC 或者 MVVM 框架。与 angular 和 ember 不同,Nanoko 提供了一种构建过程以确保构建过程中的可重复性。它还综合了测试、聚合、压缩和一堆 web 语言,比如 Less 和 CoffeeScript。Nanoko 还提供了一个框架来构建和运行模块应用程序。Nanoko 的主要成果来源于这样的组合:工业化的构建过程和模块化的运行时。

Nanoko 并没有将重点放在以 UI 为中心的体系结构上,而是着力于以服务为导向,努力使开发更加灵活,集成更加容易。”

InfoQ:现在有什么产品级应用使用 Nanoko吗?如果有,请举个例子?

“有的,Ubidreams 为 Remy Cointreau 开发了一个叫“Gourmandise”的跨平台应用程序。这个应用程序是一个移动商品目录,是销售部门会见客户时使用的。除了那个 iPad 应用程序外,还有一个 web 应用程序(CMS)也是使用 Nanoko 栈开发的。这个 CMS 可以在任何浏览器上运行(包括 IE8)。

有趣的事实:这两个应用程序的(JavaScript)源代码有 80% 是相同的,只在 UI 上有些差异。之所以会这样是因为它们使用了 Nanoko 提供的架构样式。”

InfoQ**:Nanoko是什么架构的变种?MVC,MVM****,MVVM还是其他的?我查阅了 FAQ,据说 Nanoko**与现有 MV*框架是互补的。

“Nanoko 的定位不是推倒重来。事实上,许多 JavaScript 库正在做惊人的工作。因此,你可以自由选择你的模式和相关的库。然后将它们封装为一个或多个 Nanoko 组件。这些组件之间通过松耦合的方式进行交互,与 web 服务比较接近(不过没有负载)。

Nanoko 简化了体系架构的构建过程。比方说,Ubidreams 曾用的 MVC 模式有如下特征:

  • 模型基于服务器返回的 JSON 数据结构而构造。
  • 视图是使用 Enyo 和 Twitter Bootstrap 组件实现的。这些组件可用与否取决于设备 / 浏览器的特性。
  • 控制器仅仅是 Nanoko 的某种组件(事实上是 h-ubu 式的组件),负责管理模型和视图之间的链接。它也是依赖于服务。
  • 服务是可重用的功能(比如安全,网络任务和调度),它也是 Nanoko 的组件并通过控制器来使用。”

InfoQ:如果 Nanoko是补充性的,那么就其本身而言,与其说是一个框架,倒不如看做以离散的模块化的方式来组织你的应用程序的方法,这么说有道理吗?

“是的,这是对 Nanoko 优点很好的评价。与 angular.js 和 backbone.js 这类的框架相比,它更像是一个平台。很明显这种引用取决于你对“框架”的定义。无论如何,将 Nanoko 看做构建基于模块 / 组件应用程序的平台可能更容易一些。”

InfoQ:Nanoko并不是一个框架,这点你同意吗?请解释一下原因。

“我同意这个观点。Nanoko 让你能弥合各种不同的技术。这么做是因为,Nanoko 旨在提升开发的工业化水平和效率。”

InfoQ**:Maven如何与 Nanoko交互?为什么 Maven比 Grunt更好?**

“Maven 是在 Nanoko 工业强度的持续构建 / 交付链的核心。我们对 Maven 或爱或恨。事实上,Maven 已经彻底的改进了 Java 软件构建的方式。我们认为,Maven 的严格性和它的各种规范为 web 开发的工业化铺平了道路。就像 Ant 在几年前为 Java 所做的一样,Grunt 也提供了很大的自由性。然而,没有严格定义的生命周期、强大的依赖项管理和企业产品库,这样的工业化生产就算是不混乱,那也是很艰难的。

使用 Maven 也意味着后端系统和 web 端应用程序也要使用同样的构建系统。这是非常重要的因素。此外,两者的依赖性会变得很简单:只是一个 Maven 依赖。

更不用说发布流程和文档管理也是将 Maven 作为 Nanoko 平台的基石。”

InfoQ**:请解释下 Nanoko和 J2EE应用程序开发如何交互?这个服务器端技术如何与 Nanoko**相互兼容?

“Nanoko 并不是说被绑定到 JavaEE 或者其他后端技术。不过 Nanoko 栈与这些技术相互整合是肯定的。Nanoko 提倡以服务为导向,它的特征都体现在‘服务’上。后台服务器仅仅是提供 RESTful 或者 web 服务。所以在 Nanoko 中实现这些服务就像馅饼一样简单:一个提供了非常相似的服务接口的组件。其他组件仅仅是依赖于这个组件访问服务器的功能罢了。”

InfoQ**:Nanoko与 node.js和 require.js**的区别在哪里?

“首先,Nanoko 与 require.js 和 node.js 是相互兼容的。实际上,它是很推崇它们的。你可以将 Nanoko 看做一种建立和绑定 require 或者 node 的模块的方式。

使用面向服务时,模块的交互是通过预定义的服务完成的(在 Nanoko 中名为合约)。这种松散的耦合允许模块被替换(甚至是在运行的时候)。你能很快地体会到这种模式的益处:根据平台和运行时的上下文选择使用 / 停用各模块、模块的异步开发和相对更方便的检测等等。”

InfoQ:为何你要将 Nanoko开源呢?它将遵循何种协议?

“Nanoko 是多家公司(Ubidreams、dynamis-technologies、Grenoble University 等等)协作努力的结果,这些公司都将开源作为他们的核心价值之一。所以将 Nanoko 的源代码开放对我们来说是很自然的事情。与各位创始人协商后,我们选择可 OW2 联盟,因为我们相当认同 OW2 的价值观。

Nanoko 的源码遵循 Apache License 2.0 协议,在商业应用上没有任何障碍。完全版的代码库可以在 GitHub 上找到。发行版已经公布在 Maven Central 中,因而 Nanoko 的组件使用起来非常方便。”

InfoQ:这个项目由哪里领导?

“领导该项目的机构在法国的拉罗谢尔(Ubidreams HQ)和和格勒诺布尔城(Dynamis technologies HQ)。Nanoko 参加了 OW2 开源联盟来提高国际知名度。在 OW2 和它所有成员的大力支持下,Nanoko 的未来一片光明。”

查看英文原文 Meet Nanoko: a Javascript SOA Platform and Build Process


感谢崔康对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2013-07-11 21:422580
用户头像

发布了 21 篇内容, 共 75918 次阅读, 收获喜欢 1 次。

关注

评论

发布
暂无评论
发现更多内容

开讲啦!0基础也能玩转飞桨开源社区

飞桨PaddlePaddle

人工智能 百度飞桨 开源活动

穿上App外衣,保持Web灵魂——PWA温故

互联网工科生

App PWA #web

软件测试/测试开发丨Python 类的继承常见问题

测试人

Python 程序员 软件测试 自动化测试 测试开发

常见的负载均衡策略有哪些?

王磊

Java面试题

纯干货!一文get昇腾Ascend C编程入门全部知识点

华为云开发者联盟

人工智能 华为云 昇腾 华为云开发者联盟 企业号9月PK榜

技术思维和管理思维

老张

技术思维 管理思维

国内首个政务领域 Web 引擎 SIG 成立!龙蜥联合儒特科技打造全新一代 Web 架构

OpenAnolis小助手

开源 Web 操作系统 龙蜥社区 龙蜥sig

GaoNeng:我是如何为OpenTiny贡献新组件的?

OpenTiny社区

开源 前端 UI组件库

【玩转鲲鹏DevKit系列】何如快速迁移有源码应用

华为云开发者联盟

开发 华为云 鲲鹏 华为云开发者联盟 企业号9月PK榜

字节跳动技术面试官,帮你考前划重点,还有面试真题哦

字节跳动技术范儿

字节跳动 面试 校招 字节跳动面经

开源可观测数据采集工具 Vector 已内置 GreptimeDB 支持

Greptime 格睿科技

数据库 vector Sink 可观测 Greptime

没有苹果开发者账号能否创建ios证书-最新

驶向高效运营,StarRocks 助力蔚来汽车数据分析再升级

StarRocks

数据库 大数据 数据仓库 数据湖

Paimon+StarRocks 湖仓一体数据分析方案

Apache Flink

大数据 flink 实时计算

深入解读 MongoDB CDC 的设计与实现

Apache Flink

大数据 flink 实时计算

8月《中国数据库行业分析报告》已发布,聚焦数据仓库、首发【全球数据仓库产业图谱】

墨天轮

数据库 数据仓库 Apaache Doris 国产数据库 snowflake

低代码概念——初步认识低代码

互联网工科生

低代码 企业级应用程序开发 JNPF

可不能忽视的五个 HTTP 请求要点

Liam

程序员 前端 后端 HTTP API

常用MySQL 查询语句大全

小魏写代码

MySQL :MySQL 数据库

GO语言的map使用

李爽

clean code #go

构建一体化云原生安全防护体系,天翼云红盾护航企业云上安全!

天翼云开发者社区

云计算 网络安全

释放多云应用价值,天翼云打造一站式数据库多云管理平台

天翼云开发者社区

数据库 云平台

Bartender 4 for Mac最新免激活中文

胖墩儿不胖y

Mac软件 菜单栏管理工具

程序员一年中最佳跳槽时间是什么时候?

程序员小毕

程序员 架构师 java面试 跳槽 金九银十

了解Nanoko:JavaScript SOA平台和构建过程_SOA_Tim Heckel_InfoQ精选文章