uniguid 开发模式跟之前基于delphi7的CBX开发有些相似,不过,相对应该更简洁了许多,它们共通的地方就是:开发web应用与桌面应用在程序编辑调试上没有太大区别,这对于习惯了桌面开发的程序员更舒服。当然在某些方面CBX的约束似乎要少一点。
程序发布上,CBX是基于容器的概念,直接将编译好的页面注册到服务器容器上。相对而言,uniguid的程序发布更类似intraweb——其中一种模式就是独立exe模式,这种模式对于喜欢单打的程序员尤为喜欢,不需要去关心web服务器的架设调试,尤其适合我这种业余的懒人。
最开始,其实并没有想到程序发布问题。程序在编辑、调试、访问测试等一系列操作中似乎顺利得很。但是在随后的应用发布——程序从开发端迁移到应用服务器时就出现问题。
原本在开发时可以随意折腾的系统,发布到应用服务器,调试的时候浏览器一直处于“loading”状态。随后通过查阅资料,原来需要在应用服务器部署环境。道理大概知晓一点,但是实际操作上远没那么简单。无论怎么样始终客户端浏览器一直处于“loading”状态。
后来按照网上的高手指点,在ServerModule模块BeforeInit初始化事件里加入
procedure TUniServerModule.UniGUIServerModuleBeforeInit(Sender: TObject);
begin
Self.ExtRoot := 'ext-7.2.0'; //指定EXT路径
Self.UniRoot := 'uni-1.90.0'; //指定uni路径
Self.UniMobileRoot := 'unim-1.90.0'; //指定unim路径
Self.unipackagesRoot := 'unipackages-7.2.0'; //指定unipackages路径
end;
最开始在开发端测试通过,可是迁移到应用服务器还是状况依旧,没奈何采用了最笨的办法,将开发端上相关文件夹复制到了应用服务器,调试通过。后面经过测试,一直正常。
然,某天由于添加了新功能,对ServerModule模块作了微调,重新编译后,在开发端上调试没问题,但是将新程序发布到服务器上,久违的Loading....再现!反复调试都不得其解。问题点当然还是在环境配置上,纳闷的是反复推敲更新的内容也没发现问题所在,甚至用原来的代码覆盖重新编译,问题依旧。索性将代码改作如下:
begin
Self.ExtRoot := 'ext'; //指定EXT路径
Self.UniRoot := 'uni'; //指定uni路径
Self.UniMobileRoot := 'unim'; //指定unim路径
Self.unipackagesRoot := 'unipackages'; //指定unipackages路径
end;
问题依旧,无意间发现了原来uniguid其实很好的为开发者提供了一个人性化的东西——服务器程序调试日志,就在程序相同的目录下的log目录里。日志文件记录了服务程序从启动到关闭期间的运行事件,其中最大的帮助就是错误信息提示。依据错误提示,只是修改了环境配置里2个文件夹名,问题就解决了。
不清楚之前的高手为何只是简单地指出要在初始化模块指定环境信息,却没有指出实际上根据日志就就可以调试清楚。
授人以鱼不若授人以渔,且把小心得分享给如同自己一般的业余爱好者。