基于Curl的RIA系统开发入门(二)

3.     与服务器端的联动
 
3.1 系统构成概念

Curl是客户端语言,构建Web应用程序时有必要和服务器端进行联动。1是系统构成的概念。
   
    Curl和服务器端的通信使用http/https协议。对Web服务器没有特别的要求,可以和现有的服务器技术通用。比如说IIS/ASP/ASP.NETApache+Tomcat/JSP+Servlet等组合来构建系统。至于,服务器端语言,PHPPerlCGI以及Coldfusion都可以使用。通信方法可以使用getpost。一般来说,查询数据使用get(上传量少),上传数据使用post

 

下面以从数据库取得数据为例进行说明:

Curl向相应的服务器端程序发出http请求;

② 服务器端程序根据请求从中抽取参数,组装好SQL命令后,向数据库发出SQL命令;

③ 服务器端程序对取出的数据进行加工,以一定的格式 (XMLCSV)返回给Curl

Curl取得服务器端传来的数据,进行处理后,以图形、表格或者富文本等形式将结果传送到浏览器。

 

 

图1 服务器端联动概念

 

3.2 服务器端的设定

将开发好的Curl应用程序进行WEB公开时,需要对服务器端进行以下设置。

(1) 许可证密钥(License Key)

   
许可证密钥是对可以运行Curl应用程序的网站域名进行加密的一个序列文件或二进制文件。即,没有许可证密钥的服务器无法提供Curl服务。Curl提供用于测试的本地(localhost)许可证密钥。从版本3到版本6的本地许可证密钥可从http://www.curlap.com/download/local/ 下载。版本3及版本4的本地许可证密钥可在Surge Lab的的安装目录C:/Program Files/Curl Corporation/Surge/4/etc C:/Program Files/Curl Corporation/Surge/5/etc 中找到。这里,C:/Program Files/Curl Corporation/Surge下的4为文本35为文本4, 以次类推。每个版本都应有相应版本的许可证密钥文件。其文件名分别是curl-license-3.scurlcurl-license-4.dat, curl-license-5.dat 。版本5和版本6共用curl-license-5.dat文件。实际运用时需要购买正式的许可证密钥。Curl还提供为期两个月的临时许可证密钥以及无偿配置许可证密钥,这两种许可证密钥均要向curl公司提出申请。curl-license-3.scurl等许可证密钥通常放在WEB服务器目录中Curl程序的最高目录下。比如, 使用IIS时,要将其放在c:/Inetpub/wwwroot下面的Curl程序最高等级目录里。许可证密钥放在WEB服务器的根目录也可以。

 

 (2)访问限制

    访问限制以文件形式设定。文件名是curl-access.txt。这个文件通常放在WEB服务器的根目录以及需要限制内容的地方。这是为了信息保密而采取的安全措施的一环。如要从没有curl-access.txt许可的服务器执行curl应用程序,则在执行中应用程序会发生SecurityException中断。另外,如果没有设定curl-access.txt,则等于全部不许可。那么,无论从哪个网站执行Curl应用小程序,都会发生同样的SecurityException错误。一般公开的网站需要设定像List 3所示构成的文件。

List 3  curl-access.txt

# curl-access.txt for an Internet Web site
version: 2.0
allow-all:

 

 (3)MIME类型

需要在WEB服务器添加以下MIME类型:

.curl     text/vnd.curl

.scurl    text/vnd.curl

.mcurl    text/vnd.curl

.dcurl    application/vnd.curl.dcurl

.pcurl    application/vnd.curl.pcurl

 

 (4)程序包

    Cur程序包(启动程序、包等)也需要在服务器端配置。通常最高执行程序的名字是start.curl,构成目录可以是任意的 ,只要能通过浏览器访问即可。

 

3.3 XML进行数据通信

设定好服务器后要开始考虑服务的构建。Curl和服务器之间的数据通信形式是没有明确规定的。但常见的应当是CSVXML。这里介绍被业界视为标准的XML形式。一般来说,XML数据是服务器脚本程序从数据库中抽取数据后加工而成的。Curl应用程序在接收到XML数据后,要使用SAX2简易解析器进行解析,然后通过可视化处理显示到浏览器。服务器端程序由CGIServlets和诸如PHPPerl等各种脚本语言构成,这里以PHPJSP为例加以说明。

 

3.3.1 PHP编写服务器端程序

List 4是用PHP编写的例子query.phpQuery.php中将插入List 5所示的xml_maker.php Query.php进行从http请求抽取参数,生成SQL请求以及和数据库(ODBC)连接等处理。xml_maker.php则从数据库中抽取检索到的Record,将其加工成List6所示格式的XML数据后返回给客户端 (print)

List 4  query.php

<?php

header( "Cache-Control: no-cache" );

header( "Content-type: text/xml" );

include ("xml_maker.php");

$data_source = "ODBC Data";       //数据库

$region = $HTTP_GET_VARS['para1'];  //参数=region

$year = $HTTP_GET_VARS['para2’];    //参数=year

//生成SQL

$sql = "select * from staff where region = '$para1' and year = '$para2'";

$ini_level = error_reporting(0);

//建立连接

if (($connect = odbc_connect ($data_source, "", "")) != 0) {

  $len = strlen($sql);

  print query_results_xml ($connect, $sql);

  odbc_close($connect); //关闭连接

} else {

  $err_str = "Could not connect to database: ";

  $err_str .= $data_source;

  print "<Fault message = '$err_str'/>";

}

error_reporting($ini_level);

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值