写点什么

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

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

关注

评论

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

数字货币期权秒合约交易所APP开发与平台搭建全攻略

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 NFT开发 公链开发

35岁嫌老,65嫌年轻,程序员还有路子吗?

高端章鱼哥

大数据时代下会计数字化的思考与建议

EquatorCoco

大数据 低代码 数字化

【YashanDB知识库】单机升级典型问题及应急措施

YashanDB

yashandb 崖山数据库 yashandb知识库

望繁信科技携流程智能解决方案亮相CNDS 2024新能源产业数智峰会

望繁信科技

数字化转型 流程挖掘 流程资产 流程智能 新能源产业

飞猪、去哪儿网接连“出事”,在线旅游平台有多少“坑”?

趣解商业

去哪儿网 飞猪 在线旅游平台

百度联合北京市文化和旅游局搭台 让文旅智能体开发者“唱主角”

Geek_2d6073

AI耳机成智能硬件布局入口产品 科大讯飞无线智能耳机率先突围

科技热闻

阿里巴巴商品详情API返回值:电商精准营销的关键

技术冰糖葫芦

api 网关 API Gateway API 文档 API 测试 pinduoduo API

业界首个AI安全产业图谱发布,移动云实力入选

科技热闻

饿了么基于Flink+Paimon+StarRocks的实时湖仓探索

Apache Flink

大数据 flink 实时计算 StarRocks

c++临时对象导致的生命周期问题

快乐非自愿限量之名

c++

Detailed analysis of IPQ5332 and IPQ5322 WiFi 7 schemes

wifi6-yiyi

WiFi7

数业智能心大陆探索生成式AIGC创新前沿

心大陆多智能体

智能体 AI大模型 心理健康 数字心理

物流数字化:低代码推进供应链数字化进程

不在线第一只蜗牛

低代码 数字化 供应链 物流

链游开发指南:基于Dapp合约的链上游戏开发与源码出售

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

java springboot监听事件和处理事件

快乐非自愿限量之名

Java spring Spring Boot

职场女性的心灵救赎:数业智能心大陆照亮新曙光

心大陆多智能体

智能体 AI大模型 心理健康 数字心理 AI 智能体

吊打面试官!从多维度理解架构

不在线第一只蜗牛

程序员 面试

延迟退休,如何影响程序员?

秃头小帅oi

k8s 中的 Service 简介

EquatorCoco

Java Kubernetes

深度解析 MintRich 独特的价格曲线机制玩法

NFT Research

web3 NFT\

姿态逐渐“亲民” 2024年AI五大趋势备受期待

快乐非自愿限量之名

人工智能

CPP在内网穿透技术的思考

不在线第一只蜗牛

cpp

开发足球直播平台的成败:优化用户体验关键秘诀

软件开发-梦幻运营部

ETL数据集成丨建设BI的关键前提是ETL数据集成?

RestCloud

数据分析 BI ETL 数据集成 企业数据工具

延迟退休,程序员的你准备好了吗?

伤感汤姆布利柏

快手自研Spark向量化引擎正式发布,性能提升200%

快手技术

spark 引擎 大数据 开源

深入浅出 GIF

yuanyxh

js GIF #前端

TikTok云手机解决运营效率低、封号问题

Ogcloud

云手机 tiktok云手机 tiktok运营 TikTok养号 tiktok矩阵

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