当前位置:主页 > 游戏服务器 > 安全管理 >

消息队列_主从数据库_学生机

消息队列_主从数据库_学生机

这篇博文在我的脑海里转悠了一段时间,因为我一直在用SAPUI5深入研究Fiori应用程序开发的深度。我之所以犹豫不决地在这里发表我的想法,部分原因是因为我发现很难找到一套商定的用于单页应用程序(SPA)应用程序开发的最佳实践/设计模式(基于SAPUI5或其他)。因此,我不确定这些感知到的差距是否真的存在,或者我只是太努力地将服务器端开发概念映射到SPA/客户端模型。不管怎样,下面列出了我最近在使用SAPUI5构建更复杂的企业风格应用程序时遇到的更突出的差距。我期待着从社区得到关于这些想法的反馈。

回到我作为计算机科学本科生的日子里,我一直用ACID模型来思考事务。正如您可能知道的,ACID事务具有以下特点:

现在,备受关注的新事务模型是基本事务模型(基本可用、软状态、最终一致性)。简单地说,基本事务对事务处理持更乐观的看法,有效地假设大多数事务将隐式地独立运行,并且最终将获得一致性。这个概念在NoSQL领域变得流行起来,在NoSQL领域,可用性和性能比保证的一致性更理想。而且,对于许多类型的应用程序,这是大多数用户都愿意接受的合理权衡。

然而,既然我们谈论的是在SAP空间中构建应用程序,我想说的是,在很多情况下,基本事务模型根本不适用于企业应用程序。例如,我们公司使用一家相当著名的SaaS提供商(而非SAP)来管理我们的顾问时间表。在这里,我们已经能够识别多个地方,其中两个或多个用户可以覆盖同一段数据,而任何一个用户都没有意识到。试想一下,如果SAP用户长期以来一直依赖于经典GUI事务的坚如磐石的一致性,他们会如何为这种情况辩护呢!

虽然这篇文章看起来像是对基本交易模式的控诉,但这不是我在这里的意图。我认为它肯定有许多类型的应用程序的地方。在开发复杂的CRUD应用程序时,我看到的问题是,维护一致性的责任落在应用程序开发人员身上。

要正确看待这一点,请考虑前面提到的时间表应用程序。如果SaaS供应商愿意,他们可以通过RESTfulAPI使用etag等来跟踪时间表的更改。在这种情况下,返利怎么使用,如果两个用户访问同一个时间表,并且他们都尝试进行更新,在覆盖第一个用户的更改之前,系统可能会提醒第二个用户他们的数据已过时。这一切都是非常可行的,例如,人工智能软件下载,返利app怎么用,sapgateway甚至使使用OData服务生成etag变得非常容易。我看到的挑战是,UI层必须承担很多责任,a)跟踪更改,b)找出在发生冲突时要做什么。例如,在示例场景中,系统是否必须重新获取更新的时间表,并以某种方式尝试合并第二个用户的更改?这一切在匆忙中变得非常混乱。在我看来,最好是在前门加上一把锁,一开始决不允许两个或更多的用户进入这种混乱状态。

话虽如此,我对社区的开放性问题是:引入某种提供锁资源访问的RESTful服务(例如,在AS ABAP上排队锁)有意义吗?在这里,我们的想法是使用这个服务来实现逻辑锁,以保护资源不受并发访问等。当然,这样做的缺点是处理自动锁清除由于某种原因而失败的情况,而您最终会得到无效的锁。这个问题可能比您目前看到的Web dynproabap或BSPs等服务器端应用程序更为明显,但还有什么替代方案呢?在客户端SPA应用程序中是否有处理并发访问问题的最佳实践?

随着SAPUI5库的成熟,我们已经看到路由的概念扩展/演变成相当强大的东西。然而,到目前为止,我看到的例子都隐含地假设用户可以访问SPA应用程序中定义的任何路由。现在,部分原因可能是因为fiori1-1-3原则(例如,1个用户,1个场景,3个屏幕)暗示应用程序不需要资源级别限制,但我认为用例仍然存在。在服务器端模型中,我们可以很容易地限制对特定页面的访问,甚至限制这些页面中的内容?我们是否实现RESTful服务来执行授权检查并将其集成到路由器/控制器逻辑中?还有别的吗?

我经常遇到一些用例,其中要求有条件地显示/隐藏和/或启用/禁用字段。在这些场景中,这种规则通常是动态的,可能涉及一些相当复杂的业务逻辑。按照"发现变化并封装它"的古老格言,我认为很明显我们需要以某种方式抽象这个功能。问题是在哪里?

在服务器端模型中,这种逻辑通常集中存在于模型层的业务对象中。例如,我最近对构建在业务对象处理框架(businessobjectprocessingframework,BOPF)之上的webdynpro/FPM应用程序进行了大量的工作。在这里,BOPF对象模型定义了可以很容易地绑定到UI元素的节点级属性。在运行时,用户输入通过服务器往返与共享内存中的BO实例保持同步,大数据数据库,因此属性更新可以集中进行,而不需要UI/视图层中的任何自定义逻辑。从用户体验的角度来看,缺点是用户必须进行服务器往返,才能进行某些用户界面更新。

猜你喜欢

微信公众号