java - 您如何在您的 Web 应用程序中实现客户特定的差异?

标签 java jsf jakarta-ee web-applications architecture

我们有一个基于 Seam 2 的 web 应用程序,带有通常的用户登录和几个 View ,这些 View 具有与本地数据库和 web 服务交互的处理程序类。

现在,我们需要实现客户特定的差异 - 所以用例基本相同,但例如客户 A 想要表单上的更多字段,客户 B 需要不同的 Web 服务调用,而客户 C 需要另一个不同的角色访问权限。

我知道我的问题不是很具体 - 但我正在寻找如何处理这种情况的一般想法,而不必维护应用程序的不同单独版本或在 XHTML 或 java 代码中有很多 ifs获得不同的行为。

既然我猜这是一个常见的场景 - 你如何处理它?<​​/p>

最佳答案

字段

如果业务案例相同并且字段不会直接影响它,您可能只是选择加入用户或公司设置。所以只是一个修改布局的复选框。您应该注意的困难是必填字段的验证。因为这可能因您的客户而异。

更进一步,您可以使用灵活的字段和所有类似的东西,但这会直接变得非常复杂。如果您不需要,请不要去那里。

ACL

ACL 可以变得足够灵活以支持每个客户的不同设置,这应该不是什么大问题。

网络服务

另一个 web 服务:如果它是另一个 web 服务,但它返回相同的信息,您可以只实现一个接口(interface)。这样您就可以根据客户灵活切换。好处是您的应用程序不知道它实际上是哪个 web 服务,但它理解接口(interface)。更多相关信息:解耦是关键词。

这还会生成一个可测试的软件片段,让您在未来进一步开发时不会遇到太多麻烦。

知道什么时候停止

如果自定义太远,请了解该在何处停止。不要遇到太多困难,当客户想要一个客户软件时,它应该在某个时间点成为一个。另请参阅:http://gettingreal.37signals.com/ch05_Start_With_No.php这是非常相关的,你不能用一个标准的软件来满足每个人。会有很多隐藏费用:http://gettingreal.37signals.com/ch05_Hidden_Costs.php

认为这给出了一个很好的概述。如果您需要更多详细信息,可以将此问题分开,因为这三个问题中的每一个都有其自身的问题。

关于java - 您如何在您的 Web 应用程序中实现客户特定的差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9110645/

相关文章:

java - 创建一个新线程是否有刷新缓存的副作用?

spring - 如何将 Spring Boot 与带有嵌入式 Tomcat 的 JSF 2.2 集成

java - 用户界面 :include dependent on viewParam

Eclipse 中的 Java EE 模块依赖项页面缺少项目

java - 创建没有 Vaadin 插件的 Vaadin 项目

java - IllegalArgumentException 返回对象声明中给定的值

java - 在运行时编辑 JavaFX CSS

java - 如何使用 JTextArea 和 Append

java - Apache HTTP Server 背后的 Glassfish Server Webservice

html - 用 Java 中的 HTML 实体替换字符