
Adobe AIR对话应用程序还符合Adobe AIR新安全模型,这可确保从服务器进行通讯。
图1. 处理与Ajax有关的任务以及本地数据库缓存的两个AIR页面
在Rails新安全模型中,root.html页面禁止运行解释JSON代码所必需的eval命令。这可防止JSON代码诱骗客户机运行Adobe AIR方法,以至对客户机器造成损害。
ui.html页面可运行eval命令,以解释来自服务器的JSON响应。但它不能直接访问Adobe AIR接口。在root.html和ui.html这两个页面之间有一个特殊“桥梁”,当它下载了新消息时,ui.html页面就能通知 root.html页面。这种更小型、更安全的“桥梁”就是使客户机免受恶意代码侵害的机制。
对整个对话系统有了基本理解后,接下来将着手创建Rails服务器后台应用程序。
创建Rails服务器
要创建Rails应用程序,首先选择Macintosh中很好用的Locomotive应用程序。在Windows平台中,可使用Instant Rails。这些套装应用程序都拥有创建Rails应用程序所需的一切功能。它们的界面很简单,如图2所示,其中将显示机器中的所有应用程序,并可创建新 应用程序。
图2. Locomotive界面
我要求Locomotive创建名为chat的新应用程序。然后利用chat应用程序中的上下文菜单在主页面中加载浏览器,如图3所示。
图3. Rails加载页面
好了,一切就绪。现在要创建数据库和对话模型了。首先创建三个MySQL数据库:chat_development、chat_test和chat_production。然后利用Rails生成器创建名为messages的新模型。
然后编辑生成的001_create_messages.rb文件,并添加要在表格中显示的数据列,如清单1所示。
清单 1. 001_create_messages.rb
class CreateMessages <ActiveRecord::Migration
def self.up
create_table :messages do |t|
t.column :user, :string
t.column :posted, :datetime
t.column :message, :string
end
end
def self.down
drop_table :messages
end
end
我添加了三列:用户名字段、消息提交日期和时间字段以及消息正文字段。如果想使用其他对话主题扩展本例,只需在此处添加其他表格并在控制器中增加新方法。
我还对models目录下的message.rb文件进行了必要的修改,如清单2所示。
清单 2. message.rb
class Message <ActiveRecord::Base
end
瞧瞧,我没进行任何修改。Rails的功能难道不齐全吗?
接着要创建对话控制器,Adobe AIR对话应用程序将利用该控制器发送新消息并选择新消息。清单3就是该控制器的代码。
清单 3. chat_controller.rb
class ChatController <ApplicationController
scaffold :message
def post
msg = Message.new
msg.user = params[:user]
msg.message = params[:message]
msg.posted = DateTime.now
msg.save
render( :text =>{ :id =>msg.id }.to_json )
end
def getall
render( :text =>Message.find(:all).to_json )
end
def getsince
msgs = Message.find( :all, :conditions =>[ "id >?", params[:id ] ] )
render( :text =>msgs.to_json )
end
end
在代码开始部分,调用了经典的Rails scaffolding方法,以在浏览器中显示这些消息。Adobe AIR应用程序开始运行后,就可删除该方法。我还添加了新的post方法,它使用“user”和“message”两个参数,然后将新消息的提交日期设为当日。
getall方法返回一个JSON数组,数组中包含消息表中的所有数据。getsince方法也返回消息的JSON数组,其中只包含在指定id之后创建的消息。这样可提高Adobe AIR应用程序中的选择效率。
为测试该控制器,我在Rails应用程序中打开对话控制器。结果如图4所示。
图4. scaffolding列表界面
由于此时的数据库中没有任何消息,因此列表为空。单击New message链接添加消息,这将打开数据输入表单,如图5所示。
图5.使用scaffolding创建新消息
在其中输入示例消息并单击Create,这将返回如图6所示的列表。
图5.创建消息后的列表
该列表显示我有了一条新记录。很好,这表示数据库连接运行正常。但Adobe AIR应用程序不会使用该接口,因此要测试JSON接口。首先是getall方法,我在浏览器中修改URL,使其指向getall动作,就是这样!JSON返回了该条记录,如图7所示。
图 1-7.JSON getall动作
效果真不错。在导出JSON数据时,to_json方法的确非常方便。
接下来测试post方法,Adobe AIR应用程序将利用该方法提交对话消息。只要在URL中输入post动作,并指定“user”和“message”作为URL参数,就可测试该方法。
post动作返回以JSON编码的新建记录的id值,如图8所示。
图8. 消息提交动作产生的JSON响应
最后测试getsince动作。它与getall类似,但使用id参数,并且只返回id值大于指定值的消息。这里我将id指定为0,这将返回所有消息。可以看到返回了两条记录,一条是利用scaffolding添加的消息,另一条是刚刚提交的消息。
图9就是getsince动作的结果。
图9. getsince动作的JSON响应
以上就是对话示例的服务器部分。认真地讲,Ruby实现这种功能需要多少行代码?也许15行以上。真疯狂!而Rails绝不会让我失望。
AdobeIntegratedRuntime(AIR)是一个跨 *** 作系统的运行时,利用现有的Web开发技术(Flash,Flex,HTML,JavaScript,Ajax)来构建富Internet应用程序并部署为桌面应用程。
AIR支持现有的Web技术如Flash,Flex,HTML,JavaScript和AJAX,可以用最熟练的技术来开发所见过的最具用户体验的RIA程序:
1、基于Flash或Flex:应用程序根内容(理解为容器)为Flash/Flex(SWF)•基于Flash或Flex的HTML或PDF。应用程序的根内容为基于Flash/Flex(SWF)的HTML(HTML,JS,CSS)或PDF;
2、基于HTML,应用程序根内容为HTML,JS,CSS•基于HTML的Flash/Flex或PDF,应用程序根内容为基于HTML的Flash/Flex(SWF)或PDF用户使用AIR应用程序的方式和传统桌面程序是一样的,当运行时环境安装好后,AIR程序就可以其他桌面程序一样运行了;
3、开发AIR应用程序不必做额外的跨平台工作,节省了时间,因为跨平台的工作AIR都帮我们做好了(只要其他平台能支持AIR);
4、比起Web技术及其设计模式,AIR应用程序开发迅速,她允许将Web开发技术搬到桌面上来而不用另外去学习桌面程序开发技术或复杂的底层代码,这比起低级语言如C和C++更容易学习,且不用去处理每个 *** 作系统复杂的底层APIs。
扩展资料:
Adobeair是知名软件公司Adobe旗下的产品之一。AdobeIntegratedRuntime允许你利用现有的web开发技能(包括Flash,Flex,HTML,JavaScript,Ajax)优势,建立和配置跨平台(或跨 *** 作系统)的桌面RIA(InternetApplications)应用。
“奥多比整合运行库”是针对网络与桌面应用的结合所开发出来的技术,可以不必经由浏览器而对网络上的云端程式做控制。2.7以后的版本不再支持桌面Linux *** 作系统。
参考资料:Adobeair-百度百科Adobe AIR 是针对网络与桌面应用的结合所开发出来的技术,可以不必经由浏览器开发客户端程序。
对于用户来说,Adobe AIR 实现的跨平台应用,使其不再受限于不同的 *** 作系统,在桌面上即可体验丰富的互联网应用,并且是比以往更低的资源占用、更快的运行速度和顺畅的动画表现。
家里的电脑用不着Adobe AIR这个软件。
扩展资料
Adobe AIR特点
1、本地运行:类似桌面应用程序。
2、跨平台:类似Java技术,在不同的 *** 作系统上有对应的虚拟机支持,已经有windows、mac、linux。
3、开发是基于现有的web技术,对于开发人员,不需要学习C、C++、Java之类的底层开发语言,不需要学习具体 *** 作系统底层API的开发;这降低了开发门槛,使现有的做Web开发的技术人员,依赖其原本就很熟悉的开发模式,稍加训练就可以开发良好丰富的富客户端应用。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)