运用Ruby纤程进行异步I/O:NeverBlock和Revactor
Ruby 1.9的纤程(Fibers)和非阻塞I/O越来越收到关注了。我们对来自NeverBlock项目的Mohammad A. Ali和来自Revactor项目的Tone Arcieri进行了访谈。
作者 Alexander Olaru译者 张龙 发布于 2008年3月9日 上午6时46分
Flux是一个使用Java编写的商业产品,提供了任务调度、文件传输以及工作流管理能力——它可以独立运行,也可以嵌入式软件组件方式在Java、J2EE和Web Services环境下运行。与Quartz以及其他完成类似功能的开源框架相比,Flux不仅可由开发者使用,还能让不懂技术的用户使用——他们可以通过Web或者桌面界面的方式设计工作流或者通过操作控制台(Operations Console)监视工作流执行情况。Flux通过使用触发器(triggers)、动作(actions)、流程(flows )来提供非常灵活的流程处理设置,而它们又可以组合起来以创建更复杂的流程图:
我们可以通过Flux APIs以编程的方式来建立流程图,也可以通过Web设计器以图形化的方式来建立流程图,在之前的版本中已经存在Web设计器了,相对于已有的桌面设计器(用Swing构建的),它是我们的另一种选择。尽管Flux主要面向Java环境,但是它也可以调用和监控其他语言编写的批处理和可执行代码,这是通过Flux Agents实现的,它支持在远程机器上执行脚本。
在Flux7.7中 ,Web设计器已经得到了增强,可以建立与不同方式的文件传输相关的动作和触发器。在已有的使用SFTP主机的基于密码认证的基础上,又增加了基于证书的认证,以确保B2B文件传输的安全。Web设计器的另一个新特性是运行时的数据映射,它可以让开发者在一个任务和工作流中进行actions间的数据移动。
在与InfoQ的讨论中,Flux的主席David Sims谈到“要使得Web设计器达到桌面设计器的水准,还需要大约6个月的工作量”——他们之间的差别主要在于消息,信号和业务日历。另一个可嵌入到Web应用中的组件——操作控制台——在7.7中已经得到了改进:其可伸缩性更强,现在它可以监控数以千计的任务和流程图。

Sims谈到了Web设计器和操作控制台作为嵌入式组件的一个常见的场景:
典型地,在金融机构、金融软件公司或者其他企业中的Java开发团队对其应用进行扩建并在其应用中嵌入Flux任务、工作流和文件传输能力。然后该企业部署其应用,而IT职员的任务就是监控、控制和使用该应用。
这就是操作控制台的用武之地了。企业的IT职员可以使用它来控制任务、工作流以及文件传输,这些都是企业应用的一个内在部分。
作为一个简单的例子,考虑如下情况:某企业使用Flux引擎作为核心构建了一个基金账户管理软件。他们的Java应用需要初始化、跟踪以及管理基金和账户,但是IT职员需要从他们的角度做一些管理工作。IT职员需要使用Flux操作控制台对系统进行实时调整。
Flux7.7是完全兼容于之前的版本的,并且它不需要对数据库schema做任何改变,在这里数据库是可选的,它可用来对任务/工作流,定义和运行时任务执行信息进行持久化。Sims还与我们分享了Flux的一些技术细节以及新的web组件:
我们已经使用了相当多的JavaScript库和技术(GWT、Dojo、Prototype+Scriptaculous等等),并且我们正在利用支持的ExtJS部件(widgets)向RESTful架构进行迁移。
通过在浏览器中使用XPath直接读取大容量(5MB)的XML工作流,我们已经提高了可伸缩性。这大大降低了浏览器与服务器之间的Ajax通信,因为浏览器完全可以操纵工作流XML,当所有修改完成后,它再将结果发送到服务器端。与更多地使用Ajax请求以在服务器端执行任务的情况相比,这种方式要快90%以上。
与David Sims的交谈以他给出的Flux下一个版本的路线图作为结束:
在今年5/6月份,Flux8.0将会发布。Flux的API也将由从2000年开始一直采用的工厂设计模式转为POJO模型。POJO模型使得Flux可以更容易地集成到其他框架中,最明显的就是Spring。
在Flux8.0中,将会有更多的针对Flux引擎的JavaScript部件、BPM dashboard、流程图(任务/工作流/业务流程)、执行流程图、日志、审计、仓库、代理以及用户管理,用来查询和更新数据库表的新的数据库触发器和动作。
从HSQL升级到Derby。更新到Java 5,尤其是利用泛型来更好地注解使用集合的Flux APIs。根据用户的反馈有可能增加Flux REST API。一般来说,我们每隔四个月就会发布一个新的Flux版本。
在Flux的网站以及产品手册上有关于Flux的更多信息。
查看英文原文: Flux 7.7: Increased Monitoring and Secure FTP CapabilitiesRuby 1.9的纤程(Fibers)和非阻塞I/O越来越收到关注了。我们对来自NeverBlock项目的Mohammad A. Ali和来自Revactor项目的Tone Arcieri进行了访谈。
InfoQ中文站有幸与Google中国的产品经理杨巍先生在一起探讨了OpenSocial的相关话题,包括OpenSocial的初衷、构成要素、实现方式、以及要实现它的技术储备等等。
Ryan Cooper对Amr Elssamadisy的新书发表了评价,并认为书中提供了一种为实施敏捷量身定做的框架。本书并没有给出一种人人可用的敏捷方法,而是为读者提供一些模式和工具,用以找出哪些敏捷实践可以最有效地达到该组织机构的特定目标。
这个由业界主要专家们参加的座谈会探究了在使应用程序具备尽可能好的伸缩性及性能的过程中所面临的挑战和思考过程。
本视频主要对OpenSocial进行了分析,并对实现的方式进行了介绍。其中包括:OpenSocial的开发经验、Container Provider的技术准备、平台的构成要素、具体的规范、以及对未来的展望。
Memcached在大型网站被应用得越来越广泛,但是Java客户端并不多,本文作者基于现有的开源客户端进行了封装优化,并翔实记录了这一过程。
在他们文章的第二部分,作者探讨了动态业务应用的架构并介绍了资源容器的概念。他们示范了如何在JEE之上构建这个架构,以及它如何影响实现生产力。
ClickOnce让WinForms应用程序的部署轻而易举。David Cooksey演示了如何在ASP.NET中编写一个HttpHandler来实现对ClickOnce部署的版本细分。
没有回复
回复