用嵌入式Web服务器来管理你的应用程序

ZDNet软件频道 时间:2002-12-09 作者:BUILDER.COM |  我要评论()
本文关键词:embedded
当离家工作时,我需要对我的小SOHO发送程序做些修改,以便它允许其它应用程序访问。在这个过程中,我认识到嵌入式服务器(embedded server)对远端应用程序的价值是多么的重要。

我开发了许多处理数据收集或者类似的需要访问远端机器并登陆信息的程序,事实证明对这种应用程序来说,调试发行(debugging issues)并跟踪统计(tracking statistics)是极其重要的一项工作。尽管logging带来了一系列的好处,但是它是一种离线过程,你的确可以在记录(log)文件改变时看到该文件,但是这需要具体的远程访问运行该代码的服务器器。

当离家工作时,我需要对我的小SOHO发送程序做些修改,以便它允许其它应用程序访问。在这个过程中,我认识到嵌入式服务器(embedded server)对远端应用程序的价值是多么的重要。由于我的SOHO发送程序需要Web服务器,我决定写一个小的Web服务器,它可以显示状态信息并管理应用程序。

自己创建还是购买

如同开发其它项目一样,我始评估购买(或者下载)已存在模块的可行性。我研究了小Web服务器,发现已存在了若干种。然而,我需要是功能(footprint)比较精干易于整合到现有应用程序中的Web服务器。我在调研中没有发现符合我上述需要的代码。现在已经有了几种用Java写的小Web服务器产品,但是大多都是用来处理磁盘中的Web页面的。处理页面的功能不是我的应用程序的主要需求,所以我决定自己开发Web服务器。

设计的需要

首先,我希望它可以同时处理多个请求。尽管它是小的程序实现,但是甚至远端应用的小Web服务器都可以处理少量用户的情况。Java使得多线程处理变得简单而又功能强大,所以这个要求(同时处理多个请求的要求)是情理之中的事。同时,我还希望Web服务器展现一种简单的添加新请求handler(如添加新页)的方法——尽管磁盘上不会有多少个物理页面。

我决定让这个Web服务器的体系为请求——回应结构,这和Java Servlet的规范类似。我甚至决定实现Servlet的请求——回应对象所用到方法的一个子集,这样对需要在Web服务器中添加功能的开发者来说显得更加熟悉些。现在总结一下我对嵌入式Web服务器的要求:大小限于20KB之内、允许同时有多个请求、提供写附加请求处理器的API。

组成

图A是我的嵌入式Web服务器的组成图:

图A

Web服务器类框图

正如你在图A中所见,这个嵌入式服务器只用了不多的几个类。主类创建了socket并用WebServerProcessor对象建立了若干线程。WebServerProcessor对象实际处理每一个客户请求。Web服务器用一个属性文件来配置客户处理器的个数,客户处理器(handler)用来例化。这个属性文件同时还用来建立用来回应URL路径的请求处理器,如/logs。

为了回应客户,你必须建立一个处理器来寻找客户请求的URL。我在本设计中简化了这个工作——只有一个直接匹配URL工作。例如,为了回应/logs可能返回一个处理器,如果客户键入http://yourserver/logs,他/她的请求会被传递到这个/log的处理器。


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134