Domino 8 在万众瞩目中已正式发布,其除了在邮件、服务器管理灵活性、性能改进、安全性增强等方面有了长足的进步之外,在软件设计中赋予系统更多的开放性和互操作性。面对业界流行的 SOA、Web 2.0 等新技术,Domino 8 是融入这些流行的趋势中,还是停步观望;特别对于 Domino 开发人员来说,所使用的平台和技术是否有广泛的前景且值得深入呢?

答案是积极的,Domino 8 在程序设计方面有巨大的增强,特别在 Web 程序设计方面,表现为:

  1. Domino 8 既作为 Web 服务的使用者,又作为 Web 服务的消费者,这意味着 Domino 8 应用程序将能够调用驻留其它平台的 Web 服务;
  2. 对 DB2 备选数据存储的通用支持,这方面涉及的查询视图等期待的功能,现都可用在 Web 程序中;
  3. 在互联网上所熟悉的 Blog、Wiki、RSS、ATOM、Ajax、XML、JSON、Mashup 等概念或技术都可以在 Domino 8 上得到体验实现,其 @Formula、LotusScript. Language 都在这些方面有所加强。

对于 Ajax 的讨论和在 Domino 上实现的方法,已经有多篇文章涉及,感兴趣的读者可以参考相关资源。本文将通过一组 Domino 8 技术来构建一个示例 Mashup 应用,这组技术包括 JavaScript、Ajax、@Formula、JSON 和 Google 地图 API。本文不会详细介绍 JSON 和 Mashup,也不会介绍详细介绍 Domino 的设计方法,本文的读者需要对 Domino 开发有一定的经验。

JSON 介绍

JSON(JavaScript. Object Notation)是一种更轻、更友好的 Web services 客户端的格式引起了 Web 服务供应商的注意。

XML——这种用于表示客户端与服务器间数据交换有效负载的格式,这种标记语言已经在广阔的软件应用领域中占据了主导地位。XML 与生俱来的语言无关性使之在软件架构师心目中占据着独特的地位,但即便最著名的 XML 权威也不得不承认:在某些环境中,XML 的使用已经超出了它自身能力的极限。很多 Web 应用程序更新通常是通过 REST 风格 Web services 获得 XML 数据,一旦被用户的浏览器接收到,就需要整合到 HTML 页面的总体布局之中,我们处理 XML 数据通常是使用 DOM 实现的,采用 DOM 的复杂性源于其基于函数的根,这使得对数据树的简单修改或访问都需要进行无数次方法调用。此外,众所周知,DOM 在各种浏览器中的实现细节不尽相同,这一过程带来更为复杂的编程模式,其跨浏览器兼容性出现问题的可能性也大大增加。显而易见:如何使一种标记语言轻松地集成到 HTML 页面中以满足简便开发的要求?问题的答案就是:利用所有主流浏览器中的一种通用组件——JavaScript. 引擎。

让我们通过一个 Domino 视图数据,说明 XML 和 JSON 展现的不同结构,我们在服务器上建立一个名为 Mashupdemo 数据库,在该数据库中我们创建一个名为 homedata 表单,其作用为输入人员的地理位置信息,然后创建一个展现信息的视图 vHomedata:

图 1. 创建数据表单和标准视图

我们通过以下的 Domino URL 命令

http://hostname/map/mashuodemo.nsf/vHomedata?ReadViewEntries&Count=1

访问 vHomedata 视图,获得一行数据的 XML 输出:

<?xml version="1.0" encoding="UTF-8" ?>
<viewentries toplevelentries="4"><viewentry position="1" unid="175C4B37CAFA54164825732C002EFB9D" noteid="97A" siblings="4"><entrydata columnnumber="0" name="locationx"><number>24.55</number> </entrydata><entrydata columnnumber="1" name="locationy"><number>116.1</number> </entrydata><entrydata columnnumber="2" name="dname"><text>John</text> </entrydata></viewentry>
</viewentries>

这是大家比较熟悉的 Domino XML 格式数据,通过 Domino URL 命令ReadViewEntries输出视图 vHomedata 为 XML 格式,里面内容包括每行数据的位置(viewentry position="1"),文档标识符(unid="175C4B37CAFA54164825732C002EFB9D"),列的位置和列值(<entrydata columnnumber="2" name="dname">)、数据类型和值(<text>Samon</text>),我们在解析它的时候一般用 DOM。Domino 8 扩展了ReadViewEntries命令的功能,其中加入了Outputformat=JSON这个参数,使视图数据可以输出为 JSON 这种格式,例如通过以下的 Domino URL 命令:

http://hostname/map/mashuodemo.nsf/vHomedata?ReadViewEntries&outputformat=JSON&Count=1

此命令把视图 vHomedata 第一行数据输出成 JSON 格式的文件,内容为:

{"@toplevelentries": "4","viewentry":[{"@position": "1","@unid": "175C4B37CAFA54164825732C002EFB9D","@noteid": "97A","@siblings": "4","entrydata": [{"@columnnumber": "0","@name": "locationx","number": {"0": "24.55"}},{"@columnnumber": "1","@name": "locationy","number": {"0": "116.1"}},{"@columnnumber": "2","@name": "dname","text": {"0": "John"}}
]}]}

我们可以看出 XML 格式数据:

<entrydata columnnumber="2" name="dname"><text>John</text>
</entrydata>

在 Domino 8 中转换 JSON 格式数据,表现为

{"@columnnumber": "2","@name": "dname","text": {"0": "John"}
}

在语法层面上,JSON 与其他格式的区别在于分隔数据的字符,JSON 中的分隔符限于单引号、小括号、中括号、大括号、冒号和逗号。乍看上去,使用 JSON 的数据分隔符的优点可能并不那么明显,但它们简化了数据访问。使用这些数据分隔符时, JavaScript. 引擎对数据结构(如字符串、数组、对象)的内部表示恰好与这些符号相同,那我们访问 JSON 中数据就可以使用类似语法:homedata@dname[0]

利用 Domino V8 新特性开发 Mashup 应用(转载)相关推荐

  1. Microsoft Tech Summit 2018 课程简述:利用 Windows 新特性开发出更好的手绘视频应用...

    概述 Microsoft Tech Summit 2018 微软技术暨生态大会将于10月24日至27日在上海世博中心举行,这也会是国内举办的最后一届 Tech Summit,2019 年开始会以 Mi ...

  2. 百度开发者大会-《用HTML5新特性开发移动App》PPT分享

    今天百度开发者大会,移动互联网分论坛,我的主题演讲<用HTML5新特性开发移动App>PPT分享如下. 完整PPT可在Slideshare观看,或者在百度开放云平台上下载到.

  3. ASP.NET 3.5 新特性开发向导实践(附项目源码下载)

    ASP.NET 3.5 新特性开发向导实践(附项目源码下载) 本篇文章将演示ASP.NET 3.5 部分新功能.新特性,包括LINQ.ListView控件.LinqDataSource.DataPag ...

  4. 利用CSS 的新特性 contain,提高渲染性能

    contain 是什么? contain 属性允许开发者声明当前元素和它的内容尽可能的独立于 DOM 树的其他部分.这使得浏览器在重新计算布局.样式.绘图.大小或这四项的组合时,只影响到有限的 DOM ...

  5. Java SE 6 新特性: JMX 与系统管理(转载)-asp.net关注

    前言 在 Java 程序的运行过程中,对 JVM 和系统的监测一直是 Java 开发人员在开发过程所需要的.一直以来,Java 开发人员必须通过一些底层的 JVM API,比如 JVMPI 和 JVM ...

  6. java 8 详解_java8新特性详解(转载)

    1.Lambda演变过程 @Data @ToString @NoArgsConstructor @AllArgsConstructorpublic classStudent {//名字 private ...

  7. Android4.0新特性 中文翻译

    转自http://www.eoeandroid.com/thread-103300-1-1.html android4.0 SDK发布有一段时间了,在eoe上找到了翻译过的新特性说明,特转载 Andr ...

  8. Android 4.0新特性(中文)

    Android 4.0新特性(中文) 转自http://www.eoeandroid.com/thread-103300-1-1.html android4.0 SDK发布有一段时间了,在eoe上找到 ...

  9. 技术前沿资讯-Apache Flink 1.14 新特性介绍

    一.简介 1.14 新版本原本规划有 35 个比较重要的新特性以及优化工作,目前已经有 26 个工作完成:5 个任务不确定是否能准时完成:另外 4 个特性由于时间或者本身设计上的原因,会放到后续版本完 ...

最新文章

  1. 蚂蚁金服提新概率图模型GLN,正确率提升8.2%,具备可解释性 | NeurIPS 2019
  2. * ngIf和* ngFor在同一元素上导致错误
  3. 小程序判断数组的index是否为空_微信小程序之购物车功能(仅学习)
  4. 【Arduino】Nano功能引脚 PWM IIC UART 中断
  5. 当随机不够随机:一个在线扑克游戏的教训
  6. r软件 image画出来的图是颠倒的_如何用Python抠图?试试scikitimage
  7. CCF201609-2 火车购票
  8. 如何运行python代码
  9. redis远程链接(NOAUTH Authentication required)
  10. python解析原理_Python 中 -m 的典型用法、原理解析与发展演变
  11. MySQL 磁盘满了,怎么办??
  12. 从心理学角度看,如何提高招聘面试的准确率?
  13. oracle技术之让数据库变快的10个建议
  14. matlab设计调度方法,基于Matlab的BP神经网络在公交车辆调度中的应用
  15. 缺省的linux系统中,linux缺省的文件系统是
  16. win10命令提示符怎么打开_win10死机出现蓝屏代码SYSTEM_PTE_MISUSE怎么解决
  17. TPLINK TL-AP1300I-PoE功能失常导致网络故障一例
  18. 第一章 略说中医的学习与研究(4)
  19. 国外推广必备:国际知名APP网站APP论坛列表
  20. CICS事务网关-CTG原理及操作

热门文章

  1. Expression Blend实例中文教程(13) - 控件模板快速入门ControlTemplates
  2. 21种代码的“坏味道”
  3. LeetCode 538. 把二叉搜索树转换为累加树
  4. GoLang的逃逸分析
  5. 关于使用 Python 析构函数的正确姿势
  6. 巨星陨落,光芒永存—回顾霍金对人工智能的思考
  7. Zookeeper的默认选举
  8. vue瀑布流demo_面试加分企业级Vue瀑布流
  9. 5 高可靠,构建RabbitMQ集群架构
  10. 安装SBT环境运行Scala项目