当前位置: 首页 > 工具软件 > Appweb > 使用案例 >

appweb初探

孔运良
2023-12-01

1、Appweb is the fastest embedded web server. It offers breakthrough performance and unmatched security. Appweb serves pages fast at native speed using the innovative ESP web framework.

ESP:其实和html类似,appweb的创新东西,但考虑其他Web server不一定能支持,就先不去学习了。


2、当前版本6.0.0,原以为代码很庞大,下来一看也还好,相比goAhead多出来了个Memory Allocator,方便加速。

     官方文档还是对5.*.*版本,Appweb 4 and 5 are substantially compatible,不知道appweb6会怎么样?


3、编译和运行

方法一、Visual stuido编译和运行

1、用VS2013直接双击编译,正常。

2、运行,出错,弹出提示找不到“prep.exe”程序。

两种解决方法:A、可以不管他,单独工程执行。B、直接把这个libprep子工程删除(因为内部没有源码,所以无法编译出prep.exe文件)

3、单独运行appweb(控制台方式),错误,提示

Loaded 'C:\Windows\System32\ntdll.dll'. Symbols loaded.
Loaded 'C:\Windows\System32\kernel32.dll'. Symbols loaded.等信息

可以忽视他,因为我们不需要对这些文件进行动态调试。

再继续运行,还是提示错误。

解决方法:把appweb.conf和appweb文件COPY到\build\windows-x86-default\目录下。注意不是\build\windows-x86-default\bin\目录下哦。

4、单独运行appwebMonitor(界面方式),错误,全是弹出对话框"appmonitor"信息。

1、修改 mpLib.c中的mprError为PUBLIC void mprError(cchar *head,cchar *format, ...);这样可以显示具体问题所在。

2、继续弹出,问题定位到appwebMonitor.c文件中startService()函数的问题,查资料发现win7后不能使用    mgr = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);OpenService(mgr, app->serviceName, SERVICE_ALL_ACCESS);

需要进行修改 ,详见https://msdn.microsoft.com/en-us/library/windows/desktop/ms684330(v=vs.85).aspx。


方法二、makeme工具编译和运行

双击安装,安装cmd命令到appweb6.0.0目录下,运行me,出错,提示需要安装Visual stuido。如果这样我还不如用直接VS算了。

安装Visual stuido后,运行me configure,再运行me,最后运行me run程序就可以工作了。

程序运行调用的WEB目前其实是在appweb6.0.0/src/server下的,appweb.conf也调用该目录下的文件。


4、测试action

Visual stuido编译环境,因为例子比较简单,打算直接添加到原程序appweb.c文件中。

把httpDefineAction("/action/myaction", myaction);copy到httpSetInfoLevel(0);后,不管怎么试都不能成功。

后来想到直接采用action例子中的main函数代码,果然一试验就OK了,

在IE中输入:网址/action/myaction,推送出新的页面。

具体原因以后分析。


5、测试handler;

makeme工具

1、切换到sample/simple-handler目前下,运行me编译,出错。

2、根据提示信息增加一些库文件,最肯爹的竟然appweb6.0.0该源码下没有testme.dll/lib文件,怎么办?

3、下载makeme源码,用VS编译,生成很多库文件其中就有libtestme.lib,COPY并重命名成testme.lib,OK。

这里需要对源码进行修改 ,在maSimpleHanlderInit()函数前需要加上“_declspec(dllexport)”字符,具体原因请查MSDN。

4、在me命令编译,me run命令运行,其实这里是不能用me run命令运行的,会提示cannot open */*/git for config directives。

5、在appweb6.0.0根目录下,copy生成的库文件和appweb.conf/src/server下。

6、运行,会提示cannot load module simpleHandler,cannot find funciton "httpsimpleHandlerInit" ,能运行成功,就不去理他,如果在

程序里加上该代码,就会出现cannot add handler simpleHandler,Error with directive "AddHandler",导致程序无法运行,问题更严重。

7、测试,OK,能推送hello world新的页面。



 类似资料: