oracle adf_Oracle ADF和Oracle Jet一起工作。 建筑模式

oracle adf

在本文中,我将考虑在Oracle ADF和Oracle Jet的组合之上实现应用程序的各种体系结构模式。 练习ADF的组织可能会考虑将Oracle Jet合并到现有项目中,以刷新外观并使其具有现代感和响应能力,并以新方式实施新功能。 它可能会考虑将Oracle Jet用于全新的项目,以及显然用于与移动设备的混合应用程序开发相关的项目。

Oracle Jet与UI有关,仅与客户端有关。 因此,无论如何,服务器端都必须实现一些东西。 显然,许多组织将决定使用ADF来重用其在ADF中的知识,经验,实施和投资。 这是很合理的。 因此,让我们看一下在将Oracle Jet与Oracle ADF相结合时我们有哪些选择。

第一个,最明显和最受欢迎的选择是将Oracle Jet置于ADF BC之上。 因此,Web或混合移动应用程序的客户端是通过Jet实现的,而服务器端是作为Rest服务公开的ADF BC。 借助JDeveloper 12.2.x,您只需单击几下鼠标,即可将ADF BC作为Rest服务公开。

oracle adf公开adf

这种方法的优点是非常简单的体系结构。 简单的东西就有机会工作更长的时间。 另一个非常有价值的好处是,我们正在重用我们的资源,我们的知识和ADF经验,如果正确地实现了现有的ADF应用程序,那么我们将重用业务逻辑实现的最关键部分。

但是,我们必须了解,在ADF应用程序中完美运行的ADF BC商业服务对于Jet应用程序可能没有用。 这是为什么? 主要原因是我们更改了状态管理模型。 我们从经典的ADF有状态行为转换为REST无状态模型。 此外,在Jet Web和Hybrid应用程序中,UI设计更有可能会有所不同。

因此,我们需要创建新的ADF BC服务,以支持无状态模型并为新UI的方便提供服务。

好消息是我们不必从头开始构建所有内容。 如果以正确的方式构建了现有的ADF BC模型,则我们可以重用其核心部分,包括实体和在实体级别实现的业务逻辑。

因此,我们可以将整个ADF BC模型拆分为包含实体,实用程序和共享AM的核心部分,以及包含特定AM和VO并为ADF应用程序和Jet应用程序提供服务的外观部分。

重新考虑了我们的ADF BC并准备好为ADF和Jet应用程序提供服务后,我们现在可以将Jet功能集成到现有的ADF项目中。 常见的架构方法是

为了使用ADF来实现系统的某些页面,一些页面是通过Jet来实现的,还有一个移动混合应用程序也可以通过Oracle Jet来实现。

这种方法的优点是我们将事物分开保存。 看起来不同的应用程序在共同的业务模型之上运行。 每个应用程序都引入了自己的UI,适用于为其实现的用例。 此外,它们为整个系统提供了不同的入口点。 我们可以通过常规的ADF页面访问它,可以与移动设备一起使用,也可以从Jet网页访问它,而Jet网页又可以轻松地集成到任何父级网页中,例如门户网站应用程序。

但是这种优势可能会变成一种劣势,因为对于每个进入点,我们都应该考虑身份验证,内部化,本地化等。

这种方法将更多的运行组件带入了整个系统结构,因此CI,CD,自动化测试和环境在这里变得更加复杂。

另一个明显的选择是将Jet内容集成到ADF页面中,以便从用户角度看它看起来像一个页面,但在幕后却是两个不同Web应用程序的混合。

这个选项不是我的最爱,我会避免使用。 因为基本上,您在这里要做的是在同一页面上混合两个Web应用程序。 这意味着将有两个具有不同事务的不同会话,因此会有独立的实体缓存和用户上下文。

Jet内容不参与JSF生命周期,因此整个页面以两种不同的方式提交。 ADF更喜欢拥有整个页面,因此诸如响应式几何管理和“拖放”之类的出色功能将不适用于Jet内容。

我认为,在非常特殊的情况下,当我们需要在页面上显示某些内容形式时,这种方法才有意义。 例如,如果我们的页面是门户或仪表板的一种,它在一个地方收集来自不同来源的数据。 在这种情况下,可以在类似页面和常规Jet应用程序中使用相同的Jet组件。

当我们通过远程任务流调用将ADF内容集成到Jet页面时,同样的考虑也针对相反的方法。 该技术很有意义,但是当我们想重用Jet中未实现的现有ADF功能时,仅应在特定的用例中使用该技术。 至少目前还没有。 这种方法不应用作构建我们的应用程序的标准工具。

最重要的是,Oracle ADF和Oracle JET可以完美地协同工作,对于具有扎实的ADF背景的组织来说,这是一个不错的选择。 唯一的选择就是明智地选择将这两个完全不同的工具结合在一起的体系结构方法。

而已

翻译自: https://www.javacodegeeks.com/2018/05/oracle-adf-jet-architecture-patterns.html

oracle adf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/333498.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SVN 批量添加文件到版本库的命令脚本

svn status | grep "?" | awk {print 2} | while read line;do svn add{line};done;svn status 该命令用于查看文件信息,其中 M 代表修改,? 代表未知(即需要添加的文件);grep "?" 查找包含 ? …

php 打包下载网络图片,PHP实现图片批量打包下载功能

上次遇到一个需要打包下载批量图片的问题,找了一下发现这个好方法,记录一下。首先新建一个zipfile打包类:class zipfile {var $datasec array ();var $ctrl_dir array ();var $eof_ctrl_dir "\x50\x4b\x05\x06\x00\x00\x00\x00"…

tomee_OpenLiberty:注入错误,适用于TomEE和Wildfly

tomee当我在此博客上工作时,遇到此错误: [INFO ] DSRA8203I: Database product name : MySQL [INFO ] DSRA8204I: Database product version : 8.0.11 [INFO ] DSRA8205I: JDBC driver name : MySQL Connector/J [INFO ] DSRA8206I: JDBC …

Subversion(SVN)/TortoiseSVN 的分支合并方法

文章目录方法一方法二方法一 我改变主干分(trunk 分支)支本地的内容然后提交我在 RB 分支中进行其他更改并提交在主干的工作副本中,我使用 TortoiseSVN 从 RB 分支合并到主干分支,选择 Merge a range of revisions --> all re…

php 即时到账,paypal即时到账php实现代码

http://paypal.ebay.cn/integrationcenter/list__resource_2.html中文php开发简介:http://www.paypal-china.org/wangzhai/197.html以下是ecshop中paypal的支付代码这段代码是向paypal支付接口提交的{{{ //商家注册的邮箱}}}以下是官方提供的,接受到payp…

destroy 方法_线程方法destroy()和stop(Throwable)在JDK 11中删除

destroy 方法DrDeprecator (Stuart Marks)在core-libs-dev OpenJDK邮件列表上的消息“ RFR(s):8204243:remove Thread.destroy()和Thread.stop(Throwable) ”…

SVN 版本库管理实践

SVN 版本库中应该有两种划分体系,一是按产品划分,每个产品业务系统都按主干、分支结构划分;另外按项目划分。 项目分支归集暂时不能识别为产品的软件模块或补丁,项目分支的最初代码从产品分支体系中分支创建。当项目分支中的部分模…

java获取文件夹 路径,Java获取文件的路径

本文记录的是如何获取资源文件的路径.先看看我设置的文件目录结构,如下图所示:___Java Build Path的设置如下图所示, 主要看build project之后的文件输出目录:___在Java中有两种方式可以获取到文件的路径,通过下面的测试代码看看它们的不同:12345String …

java 示例_功能Java示例 第4部分–首选不变性

java 示例这是称为“ Functional Java by Example”的系列文章的第4部分。 在上一部分中,我们讨论了一些副作用,并且我想进一步详细说明如何通过将不可变性引入代码中来防止意外地对数据进行操作。 如果您是第一次来,最好是从头开始阅读。 …

SVN merge(合并) 的三种方式

文章目录一、合并一个范围的版本(Merge a range of revisions)二、复兴合并(Reintegrate a branch)三、合并两个不同的树(Merge two different trees)四、实例五、总结合并的工作是 把主干或者分支上合并范…

php主机安装v2,RackTables 安装教程Installation GuideV2

RackTables安装教程 V1.01.准备一份Ubuntu 12.04.01 LTS的 ISO (系统最好用Ubuntu的版本,简单实用)。2.安装操作系统, 功能选中OPENSSH SERVER (开启SSH)和 LAMP SERVER ,注意在LAMP安装过程中会提示MySQL的ROOT密码,这个密码很重要&#xff…

java延时执行_Java谓词的延迟执行

java延时执行在先前的文章“ 用Java的供应商延迟执行 ”和“ Java的消费者延迟执行 “,我看着很容易地通过推迟标准Java API接受,分别在Java执行供应商 S和消费者秒。 在本文中,我将对标准JDK提供的API如何通过标准功能接口Predicate允许延迟…

Mac 如何彻底删除/卸载程序

卸载某些应用程序后会留下一些预置文件和缓存等,一般这些文件没有潜在坏处,不过有些文件的存在也会导致无法正常安装新版本,你可以删除它们来彻底跟该应用程序说拜拜。这些文件通常位于以下路径: ~/Library/Application Support/…

air java,Java Bean

1.Java Bean 简介Java Bean (也称为Bean) 是一个遵循特定写法的Java类,只不过这个类需要遵循一些编码的约定,通常具有如下特点:1).它是一个公开的(public)类;2).它有一个默认的构造方法,也就是不带参数的构造方法(在实…

如何理解Java的类变量、成员变量、常量、类属性、实例属性、字段(field)、成员方法、类方法

文章目录变量相关概念变量/常量类变量/静态变量成员变量/实例变量类属性/实例属性/对象属性什么是 field成员变量和类变量的区别两个变量的生命周期不同访问方式不同数据存储位置不同方法相关概念示例代码判断题变量相关概念 变量/常量 所谓变量就是指可以改变的数据量&#…

无处不再的广告_我的机器人现在无处可去。 无家可归。 无服务器。

无处不再的广告我通常会关注各种网站-最新出版物,热门新报价,限时游戏和竞赛等。 其中大多数不提供“干净”的通知系统,例如RSS feed。 因此,我经常不得不刮擦他们HTML才能达到我的需求。 这意味着我经常需要运行一些自定义的字…

java service实例,javaweb后端实例 service

service的作用1.将前端需要的业务代码封装成接口2.将do数据封装为vo3.水平有限只知道这些下面展示的代码为将do封装为vopublic class StationService { private StationDao stationDao new StationDao(); public List listSLByYear(int year) { //创建vo链表 List list new L…

前端 JS 如何在一个页面中局部加载其它页面的数据

一个页面很大&#xff0c;可以分成多个部分&#xff0c;先把小部分的 jsp 写好之后&#xff0c;再在主页面中通过 Struts 2 标签或 ajax 请求来引入其它的 jsp 显示信息。 通过 jQuery 函数来加载其它页面的数据 <script> $(function () {$("#new").load(&qu…

switch字符串jdk_应用新的JDK 11字符串方法

switch字符串jdk在“ 使用JDK 11的Java字符串上的新方法 ”和“ String&#xff03;repeat即将加入Java&#xff1f; ”&#xff0c;我讨论了JDK 11引入Java String的六种新方法。 可用的早期访问JDK 11构建已经包含了这些新方法&#xff0c;在这篇文章中&#xff0c;我将使用…

aws lambda使用_使用AWS Lambda的CloudWatch事件通知

aws lambda使用CloudWatchEvents的主要用例是跟踪整个AWS基础架构中的更改。 当前&#xff0c;它支持跨Auto Scaling组&#xff0c;EC2&#xff0c;EBS和其他各种事件发出的事件。 为了对这些事件进行有意义的处理&#xff0c;我们需要一种消耗它们的方法。 AWS使用术语“ targ…