aardio 用户接触 Web 开发的相对比较多,在 aardio 中开发桌面软件,应用 Web 技术,HTML 等等非常普遍, 所以大家切换到网站开发应当是轻车熟路,不会有太大的难度,现在很多软件应用都是基于服务端接口,几乎每一个软件都要与服务端接口互动,不仅仅是桌面软件,例如一些手机应用,客户端是HTML5,服务端是REST接口,这种模式是未来的方向,所以应用领域还是比较广的。
实际上在 aardio 中开发网站应用非常简单,大家可以把网站理解为控制台程序,
只不过取代 console.log 的是 response.write
函数。一句 aardio 代码
response.write("hello")
就输出一个最简单的网页了。
aardio 直接支持与 PHP 类似的语言级模板语法,可以 html,aardio 代码混合生成页面,非常方便。
首先请在主菜单中点击新建工程。
在工程向导中点选【网站程序】,创建网站工程。默认的 main.aardio 中包含一个在本地启动 Web服务器的代码( 不需要安装IIS这些,直接用aardio实现的Web服务器)
创建一个Web服务器非常简单,几句代码就可以了,如下:
import wsock.tcp.simpleHttpServer;
var app = wsock.tcp.simpleHttpServer("127.0.0.1",8081);
app.run(
function(response,request){
}
);
上面的代码在本地IP 127.0.0.1启动一个Web服务器,监听连接的端口为 8081,
用户每一次连接都自动回调 函数 function(response,request,session){ }
每一个 aardio 创建的 Web 服务器应用都应该遵守相同的调用约定,使用相同的回调函数格式,并创建相同的 response
,request
对象,无论是创建本地服务器,还是在IIS等Web服务器上创建FastCGI模块,网站应用程序的入口是一致的。
在 aardio 代码中可直接支持 HTML 模板语法。
aardio 代码如果以 HTML 代码开始,或以 <?
标记开始则自动启用模板语法。启用模板语法以后,aardio 代码必须置于 <? ..... ?>
内部。aardio 代码可以是纯 aardio 代码,也可以是纯 HTML,或者是 HTML、aardio 相互混合的模板代码。
请参考: aardio 模板语法
使用 aardio 编写的网站应用中最重要的几个对象:
在 aardio 中所有 HTTP 服务端实现都支持兼容的 request,response,session 对象,这些对象的接口与用法是一样的。
关于这几个对象的详细说明请参考 fastcgi.client 库 文档。
可以使用 aardio 标准库中的 wsock.tcp.simpleHttpServer 或 wsock.tcp.asynHttpServer 启动微型 HTTP 服务端。这几个服务端非常小并且不依赖外部文件,可以方便地嵌入到程序中,可以作为网页界面的嵌入后端使用。
wsock.tcp.simpleHttpServer 是多线程 HTTP 服务端,不依赖消息循环。在界面线程中可以调用 wsock.tcp.simpleHttpServer.startUrl("/")
创建一个单实例(多次调用不会重复创建线程)的 HTTP 服务器线程(自动分配空闲端口,在界面线程退出时自动退出),并且返回参数指定路径的 HTTP 访问地址。
而 wsock.tcp.asynHttpServer 则是单线程异步的 HTTP 服务端,只能用于界面线程。
在使用 web.view 创建的网页程序 中,只要简单地调用 import wsock.tcp.simpleHttpServer
或者 import wsock.tcp.asynHttpServer
就可以自动创建 HTTP 服务端并且 wb.go 函数可自动参数中基于应用程序根目录访问的路径转换为 HTTP 地址,例如:
import web.view;
var theView = web.view(mainForm);
import wsock.tcp.simpleHttpServer;
theView.go("\web\index.html");
在 aardio 工程向导中选择 『 网页界面 / web.view 』 中的任何工程模板都可以创建包含以上代码的完整示例工程。
在 IIS 这样的服务端中可通过 FastCGI 加载 aardio 编写的 FastCGI 服务端,就可以支持 aardio 编写的网站程序,下面我们介绍具体步骤。
首先请在主菜单中点击新建工程。
在工程向导中点选【CGI 服务端】,创建 CGI 服务端工程。
CGI 服务端应先生成 EXE 文件、并在 Web 服务器上注册为 FastCGI 模块才能使用, IIS 服务器可通过在代码中 import fastcgi.iisInstall 自动注册 FastCGI 模块。
以 Win2008 ,IIS7 为例:
桌面右键点【计算机】,弹出菜单中点【管理】,【添加角色/添加IIS】
右键点【Web服务器(IIS)】,弹出菜单中点【添加角色服务】,确认已添加【CGI】
然后打开IIS,到指定的网站点击【处理程序映射】,添加【处理程序映射】 后缀名设为:*.aardio ( 如果设为 *,取消勾选请求限制到文件或目录则处理所有URL ) 模块选:FastCgiModule 可执行文件:选中使用本工程生成的 aardio-cgi.exe
在资源管理器右键点击 aardio-cgi.exe 所在目录,在目录属性中点【安全】, 添加IUSR,IIS_USER用户组,允许读取和执行、列出目录、写入权限。
右键点击网站所在目录,在目录属性中点【安全】,添加IUSR,IIS_USER用户组, 允许读取和执行、列出目录、写入权限。
如果是64位系统,请在应用程序池属性中设置"启用32位的应用程序"为 True
如果用新版aardio编写的代码,在旧版编译的CGI.EXE中运行报错,那么把旧版CGI.EXE重新编译一次就可以。
import导入的库,在一个进程中只会加载一次, 如果网站引用了修改的库,应当杀除CGI.EXE进程重启动,如果在服务器上编译CGI.EXE,此工程会在发布后自动执行此操作。工程内的发布前触发器,.build\default.init.aardio 会在每次发布前停止已运行的CGI进程,这个操作需要管理权限如果在本机上安装IIS测试,本机测试建议以管理权限启动aardio开发环境
如果是64位系统,请在应用程序池属性中设置"启用32位的应用程序"为True
CGI.EXE 内部错误可请查看"CGI.EXE目录/config"下面生成的日志文件。网页代码发生500内部错误,可查看"网站目录/config"下面生成的日志文件。使用localhost绑定并访问要测试的网站也可以查看500错误的详细信息。
注意在编写网站时,有必要请输出日志文件来排查错误