欢迎大家赞助一杯啤酒🍺 我们准备了下酒菜:Formal mathematics/Isabelle/ML, Formal verification/Coq/ACL2, C++/F#/Lisp
RIFE
来自开放百科 - 灰狐
(版本间的差异)
(未显示1个用户的1个中间版本) | |||
第1行: | 第1行: | ||
+ | {{top news}} | ||
+ | {{SeeWikipedia}} | ||
[[Image:95px-Rife-logo.png|right]] | [[Image:95px-Rife-logo.png|right]] | ||
第25行: | 第27行: | ||
==Links== | ==Links== | ||
*http://rifers.org/ | *http://rifers.org/ | ||
+ | |||
+ | {{Comment}} | ||
[[Category:Framework]] | [[Category:Framework]] | ||
[[Category:Java]] | [[Category:Java]] |
2010年9月27日 (一) 04:13的最后版本
您可以在Wikipedia上了解到此条目的英文信息 RIFE Thanks, Wikipedia. |
RIFE:基于 Java 的元编程框架,它通过强大的元模型为基于 CRUD 的应用程序提供了非常好的搭建。
RIFE具有“仓库”的概念,也就是说所有应用层的配置文件都被保存在了里面。
RIFE的仓库里包括:
- 一个用来定义应用程序组件如何互联在一起的“网站“XML文件。
- 一个预先填有8个数据库的“数据源”文件,RIFE直接就可以使用的这些数据库(包括Oracle、PostgreSQL、MySQL和Derby等)。
- 一个支持驻留在内存之中的用户身份验证系统(还提供了一个由数据库支持的系统)的“用户文件”。
- 一个“参与者”文件,你用它来告诉应用程序框架在应用程序运行的时候希望激活哪些子系统(包括“cron”类型的任务调度程序和一个电子邮件查询系统)。
[编辑] 特点
- 无处不在的组件——你用RIFE创建的几乎所有东西都可以被当作组件重新使用。因此这意味着如果创建一个页面、显示一个日历,你可以将这个页面重新用作嵌入式组件放到另一个页面上,你只用在另一个页面的模板中调用这个组件名就行了。光这一个功能就节省了我数百小时重新编写代码的时间,并让我能够为我的应用程序开发一整套通用的GUI元素。
- 数据库保持能力——Hibernate中80%有用的东西都和这有关,而安装中只有5%。一般来说,RIFE允许你在规划Java Beans(一个简单的、带有setter/getting方法的Java类)的时候定义数据,生成一个单独的文件,用以描述需要应用到对象成员的约束(元数据)——例如“用于名必须至少包括6个字符,但不能超过20个”。RIFE会在你的数据库里实例化表格,向你提供一个查询管理器,用来处理透明的管理数据所需要的所有常用函数。
RIFE还有一个CRUD(创建-读取-更新-删除)功能,它能够自动地创建基本的数据管理窗体,后者与Rails上Ruby的“支架”能力类似。
- “无逻辑的”HTML模版——与PHP,甚至是JSP不同,RIFE不会同时混合命令和表示——但是你可以利用编程同时控制表示,方法是改变调用模板的Java代码的模板变量的值(通过“Block”改变模板和“Value”部分来进行更加精细的变化调节)。
- 灵活的内容管理框架——它可以被用来保存任何东西,从PNG图片到视频文件。它会进行版本记录,因此对内容的任何改变都可以被追踪。
- Web继续——这一特性让RIFE应用程序能够支持多个代码执行路径,这样用户就能够在处理表示多个决定路径的窗体和过程时向前。例如,想象一下查询飞机票价,你可能最后会碰到“付款”按钮,并意识到你需要更正前面几页的一个错误;“继续”允许你点击“退回”按钮,而不会丢失你已经在受到影响的页面中输入的所有数据。RIFE的“继续”还提供了一个确保数据不能被多次提交的功能,这样一旦你点击了“付款”按钮,第二次点击它也不会从你的信用卡上两次扣款。
- Web服务——RIFE本身就支持对Web服务的访问,例如基于SOAP和REST的数据服务。
- 容器外测试——Web应用程序的最大一个问题是,要进行调试和错误检查,你必须运行它们。当然,你随后就会碰到与你的代码所赖以运行的应用服务器有关的各种复杂问题,你需要单步调试大量的代码才能够找到真正想要测试或者调试的一小段代码。RIFE让你能够使用标准的Java单元测试工具在服务器之外测试你的应用程序。
- 约束——RIFE具有基于约束的元数据能力,这意味着你能够指定数据结构的参数,框架会自动的使用这些结构来确保输入到系统里的数据符合你指定的参数。这些约束可能会很简单(比如,“用户名字段不能为空,也不能超过20个字符”),或者利用自定义的限制设置得非常复杂。
[编辑] Links
<discussion>characters_max=300</discussion>
分享您的观点