Java中复杂的数据驱动的Web应用程序 – 技术决策
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java中复杂的数据驱动的Web应用程序 – 技术决策,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4728字,纯文字阅读大概需要7分钟。
内容图文
![Java中复杂的数据驱动的Web应用程序 – 技术决策](/upload/InfoBanner/zyjiaocheng/719/0860619772d84cd6b3e3097810538ab5.jpg)
亲爱的Stack Overflow社区,
我是一名Java程序员,负责构建复杂的,数据驱动的Web应用程序(SaaS),我正在寻找可以使用的技术.我已经做出了一些决定,我相信我已经足够精通使用我已经决定的技术来构建应用程序(我绝对不会说它会是完美的,只是它会起作用).但是,我想让我的工作变得更轻松,这就是我需要你帮助的原因.
项目简要说明
后端
该应用程序将大量数据驱动,这意味着所有内容都将存储在自我描述的数据库中.这意味着数据库本身将完全用元数据描述,应用程序将不知道它读取和写入的数据.可能不会有任何常规实体(就JPA @Entity而言),因为应用程序不会知道数据的结构;它将从元数据中获取它.只有元数据才具有预定的结构.简单地说,元数据是应用程序的alpha-omega,因为它将告诉应用程序WHEN和WHAT显示以及如何显示它.
应用程序可能会利用存储过程对数据执行一些低级任务,例如自动审计,记录和转换为用户语言,因此很可能消除使用ORM框架的任何可能性,因为不会有简单的CRUD操作.因此,JDBC似乎是我唯一的选择(不是吗?).
前端
UI将是“愚蠢的”,因为它不知道它显示什么数据(当然,在某种程度上).它将只知道如何根据它将从数据库中获取的元数据来显示它.将根据当前应用程序的状态创建所有UI控件(如菜单项,按钮等),UI将不知道控件的作用.这意味着单击菜单项或按钮只会将关联操作的标识符发送到后端,服务器将决定要执行的操作.
我的目标
我的主要目标是让应用程序尽可能轻量级,并尽可能减少依赖关系.因为应用程序将非常复杂,我想避免任何繁重的框架,因为我很有可能需要自定义其许多功能.
我已经决定了什么
只有当您认为它们对我的应用程序完全不可行时,请反对以下决定,因为我已经使用这些技术实现了一些核心功能:
> Tomcat,Guice DI,AOP(AspectJ)上的Servlet
我相信所有这些技术都足够轻巧,我不需要学习J2EE.
>前端带有GIN-jection的GWT
对我来说似乎是最好的选择,因为我对Java和Swing非常熟悉,并且不想编写任何Javascript,PHP或学习新语言. GIN是Guice的小兄弟,我将在客户端和服务器上使用相同的语法和原则.
> MSSQL RDBMS
这实际上是公司管理层的要求,因为我更愿意使用开源解决方案.对我来说太糟糕了..
> Maven 2
我想没有人可以反对这个:)
我需要帮助的是什么
>数据库通信
我认为ORM被排除了(是吗?)所以我需要使用JDBC.你认为Spring JDBC是轻量级的还是足够灵活的吗?我经常需要“盲目地”从数据库中读取数据,将其映射到某个通用实体(因为我不会假设任何预先确定的结构),然后使用一些通用DTO将数据与元数据一起发送给客户端它是什么数据以及如何显示它.或者您知道其他选择吗?或者我应该自己这样做?
>客户端/服务器通信
GWT及其GWT-RPC机制似乎不太适合发送我需要的通用数据.虽然我确信使用GWT-RPC是可行的,但还有其他选择吗?但我绝对想要使用GWT.
>安全
你知道任何可以帮助我的安全库/框架吗?我知道Spring-security的存在;你认为它对我的使用是否足够灵活,或者我自己更好地实现它?另外,Spring的IoC是Spring框架中不可或缺的一部分,还是我能够继续使用Guice?
>您认为其他任何有用的东西?
我非常感谢任何建议和建议,因为我不敢尝试自己做出这样的决定.如果您需要更多信息,请询问我.
先感谢您!
球菌
解决方法:
UI框架及其对客户端/服务器通信的影响
你说任何UI动作都会使后端(可能是数据库)变得棘手.这意味着无论如何UI交互都会有点慢,而且需要往返服务器.
GWT特别适合尽可能避免往返服务器并在客户端执行所有UI工作.在此模型中,只有从客户端传输到服务器的信息才是真实数据,而不是UI元数据. GWT将完成这项工作,但你将使用一个稍微低级的工具,无论如何都要进行优化所需的优化……
像ZK或Vaadin这样的框架似乎更适合您想要做的事情.客户端具有带有丰富UI的漂亮小部件,但您可以从服务器端操作UI.框架为您管理客户端/服务器通信(不需要REST,RPC或javascript).这些框架的主要限制是可扩展性,所有这些都是常见的.但是因为你的要求无论如何强加了这种讨厌的行为,你真的可以从它们提供的抽象中受益,它们在你的情况下是不会花钱的.
我试过GWT和Zk为我的公司做一些概念验证.我们选择了GWT,因为它很难被嵌入任何现有的用户界面并对你所做的事情进行微调……特别是尽量避免使用rountrip到服务器.但是ZK在开发时间方面确实更容易,更快捷.
副作用是完全解决您的客户端/服务器通信问题,使框架以优化的方式执行它(Zk能够在将多个UI事件发送到服务器之前智能地重新组合几个UI事件).
DB和ORM
对于数据库设计,我倾向于认为在数据库中使用细粒度的东西会使它非常慢.如果每个小部件是数据库中的一行或多行,则必须执行许多查找才能执行最简单的操作.
问题是如果你的UI只是有点几十个元素(一些按钮,复选框,标签和小部件)的复杂,合成一个屏幕将需要很多对数据库的请求.仅渲染一个页面可能非常慢,可伸缩性非常糟糕.
我知道这是因为我在一些通用的bug跟踪系统上工作的类似(但更简单)的要求比你的要多,我们确实遇到了这个问题.
所以我会尝试用一些模板或XML格式来描述UI.也许你不会向用户显示这些数据,为它提供一个很好的抽象,但是你不会只为一个屏幕执行很多查询,而是将整个屏幕保存为一个blob.
一个非常愚蠢和基本的实现是在您的数据库中存储HTML / CSS / PNG文件并根据需要加载它,用户负责手动制作这些HTML文件.当然这对用户来说太糟糕了.这就是为什么你需要一个漂亮而精致的编辑器UI编辑器,它可以处理你自己的中间格式.另一个愚蠢的实现将是某种维基模板.这不是你需要的,你需要更多.但你有这个想法,我会朝那个方向寻求……
对于维护和调试来说,这对于一些文件的整个UI描述来说要容易得多,要理解什么是真正实现的,而不是在首选的SQL编辑器中读取大量的标签数据.用户可以使用导出/导入格式轻松进行版本,备份或实验.
安全
我会手动说…因为你有一个由用户生成的通用UI,所以安全性似乎也是通用的,并且依赖于数据库内容.
希望它有所帮助……
内容总结
以上是互联网集市为您收集整理的Java中复杂的数据驱动的Web应用程序 – 技术决策全部内容,希望文章能够帮你解决Java中复杂的数据驱动的Web应用程序 – 技术决策所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。