写点什么

了解 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:422628
用户头像

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

关注

评论

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

37GAMES Nova(AI-CodeReview)介绍

三七互娱后端技术团队

AI CodeReview

XIAOJUSURVEY的Vue3升级之路

XIAOJUSURVEY

前端 vite Vue 3 VueRouter Pinia

erlang基础 windows系统安装erlang

万里无云万里天

erlang 测试环境

数据分析新贵——DuckDB入门

三七互娱后端技术团队

数据分析 duckdb

2024益普索Ipsos全球人工智能监测报告

财见

modsim32笔记 启动modbus tcp服务

万里无云万里天

Modbus Modbus Tcp modsim

NFTScan 浏览器现已支持 .mint 域名搜索功能!

NFT Research

blockchain NFT NFT\

“算法票友”搭档“技术博主”,他们说算子开发就像玩游戏打怪

Alter

AI 算法 算子

天猫商品评论接口:从申请到应用全攻略

tbapi

天猫商品评论接口 天猫API 天猫评论数据接口 天猫评论数据采集 天猫评论API

win11基础 查看防火墙的状态

万里无云万里天

防火墙 win11

win11基础 查看更改用户账户控制设置

万里无云万里天

win11

英特尔联合国际奥委会打造AI聊天机器人,助力多国运动员迎战巴黎奥运会

E科讯

Go 语言 context 包实践

FunTester

win11基础 查看数据执行保护

万里无云万里天

win11

CX1概念车空气动力学设计,打造典型“美式肌肉车”风格

Altair RapidMiner

人工智能 汽车 仿真 车企数字化 altair

求职季来了,让通义灵码陪你高效备战

阿里云云效

阿里云 云原生 通义灵码

天猫店铺商品数据接口集成指南与实战技巧

tbapi

天猫API接口 天猫店铺所有商品接口 天猫店铺整店商品接口 天猫店铺商品数据采集

kepserver基础 创建opc ua server,进行匿名登录

万里无云万里天

工业控制 kepserver OPCUA

modbus slave基础 查看四个地址范围的占位特点

万里无云万里天

工业控制 Modbus协议

rabbitmq-server基础 mqttfx连接server

万里无云万里天

RabbitMQ IoT mqtt

rabbitmq-server基础 windows安装rabbitmq-server,启用mqtt服务

万里无云万里天

windows RabbitMQ mqtt

win11基础 家庭版升级为专业版的步骤

万里无云万里天

win11

win11基础 组件服务 启动分布式com

万里无云万里天

win11 dcom

怎么在PPT中插入视频?3个PPT常用的使用技巧分享!

彭宏豪95

人工智能 效率工具 PPT AIGC AI生成PPT

从“+AI”到“AI+”,英特尔与生态伙伴共推AI大模型应用落地

E科讯

win11基础 查看本地用户和组

万里无云万里天

win11

win11基础 开启telnet功能

万里无云万里天

win11 Telnet

线上交流会预告!和鲸科技社区合伙人唐铭分享“学科+AI”课程搭建思路

ModelWhale

AI 直播 教学 分享会

求职季来了,让通义灵码陪你高效备战

阿里巴巴云原生

阿里云 云原生 通义灵码

上汽乘用车携手豆包大模型,有效提升“用户之声”的反馈处理效率

新消费日报

win11基础 查看组件服务

万里无云万里天

win11 dcom

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