ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 数据库 >> SQLite >> B/S技术开发桌面应用

B/S技术开发桌面应用(4/6)

来源:网络整理     时间:2016-03-11     关键词:

本篇文章主要介绍了"B/S技术开发桌面应用",主要涉及到方面的内容,对于SQLite感兴趣的同学可以参考一下: B/S技术开发桌面应用随着HTML5规范的越来越完善,其功能也越来越强大,用来构建界面的代价远远小于传统桌面程序。笔者从事web开发多年,对B/S开发技术积累比...

%APPDATA%\npm\node_modules\node-gyp\src\win_delay_load_hook.c with the one at https://github.com/nwjs/nw.js/blob/nw13/tools/win_delay_load_hook.c

Before 0.13.0, the V8 version and Node ABI in NW.js is different from official Node.js. To use native Node.js modules with NW.js, you have to rebuild the modules with one of following tools.

到此客户端大局已定,我仅面临着最后一个问题,即VB的控件不是dll,而是ocx,大家知道dll是没有界面的,但是ocx是有界面的,将有界面的ocx当成普通的Activex dll,使用CLSIDFromProgID(OLESTR("myCom.GetRes"),&clsid)强行创建的后果就是控制台程序在win7运行正在,在xp运行失败,直接闪退,原因应该是找不到宿主窗口。

这个问题也困扰了我一天,最终国外一篇文章有说道:

http://www.codeproject.com/script/Articles/ArticleVersion.aspx?aid=51&av=36826

通过走IDispatch接口创建com组件,可以在xp成功运行,具体原理未深究,感觉绕过了宿主窗口检测。

客户端到此结束,一个增强型的chromium浏览器诞生。

2、服务端

服务器端是一个标准J2EE War包,那么如何在本地发布,我有以下两个方向的尝试

(1)使用php改写项目

大家知道,自PHP5.4之后 PHP内置了一个Web 服务器,php -S localhost:8080即可启动,个人测试及小网站不必依赖于Apache或者Nginx。

参见 http://yuankeqiang.lofter.com/post/8de51_b36213

此种方法的有点显而易见,php环境运行小,只有十几兆,jre环境太笨重。但是看着war里密密麻麻的.java和.jsp文件我放弃了,改写工作量太大。

(2)选择tomcat embeded还是jetty

还是抱java的大腿吧,毕竟那个war包我可以不用动它了,内置一个servlet容器去运行它吧,tomcat embeded、jetty都不错,jetty稍微小那么一点点,我就选了jetty。另外如果你不想基于现有war包添加servlet或者filter那么可以在启动jetty的时候直接添加,参见:

http://blog.chenlb.com/2012/05/embed-jetty-http-servlet-jsp.html

服务器改动不大,比较困难的问题是服务器程序打包。java程序跨平台的代价就是,它必须依赖jre。传统的做法是用exe4j将jar打成exe,并且把同目录下的jre文件夹当成依赖目录,一并发送给用户。我一直以来都是这么做的,主要问题是jre文件太多,太大,本次项目寻求新的解决方法。

(1)直接将java代码编译成本地代码

①开源项目GCJ

https://gcc.gnu.org/java/

编译环境要求多,蛮复杂,没仔细研究

②Excelsior JET

http://www.excelsiorjet.com/

看视频应该很好用,但是收费,预算足的可以考虑

(2)一种巧妙地桥接方式

C#在推出的时候,借鉴了java语言的设计思路,因此很多C#的类和java的类是相似的。ikvm.net就是这样诞生的,他将java代码的类映射到.net上面的类,从而实现让java代码运行在.net framework上面,将你的jar包编译为dll程序集。

参见

http://www.ikvm.net/

相关图片

相关文章