|
|
1
5
我想说这取决于你的需要和期望。如果您编写的是一个自定义纯HTTP服务器,甚至可能支持ISAPI等,或者您编写的是高度专业化的HTTP服务器/代理服务器等,这是一个很大的区别。这只会缩小专门任务的范围。例如,我有这样专门的代理和专门的ISAPI模块处理框架。我想说的好处不多。所以优点是:
缺点:
我的判决是这样的。如果您只需要一个普通的HTTP服务器来提供一些内容,并且您将在内部、一个或几个服务器上托管这些内容,那么就使用Apache。如果您正在制作一段专门的HTTP处理代码,那么它将被大量安装,并且您需要控制,然后开发自己的代码。相信我这是值得的。我现在很高兴,所以当我们决定做同样的事情时,我回到了过去。现在我有很多笔记本电脑安装的软件非常复杂,我无法想象必须在每台笔记本电脑上安装Apache。然后根据需要配置它。 Indy(有着所有的麻烦和怪癖)已经被证明是一个非常稳定的开箱即用的Web服务器。ICS在这里可能是一样的,但是我还没有用它来做这个,所以我不能说。设置IndyHTTP服务器非常简单。 只有我的两分钱;) |
|
|
2
4
“独立的Web服务器”是指嵌入到应用程序中吗?我从来没有使用过Indy,但是我已经使用了一些Java应用程序。 Jetty 图书馆。与应用服务器的Apache/IIS代理相比,这一点的主要优势在于更容易部署和配置,因为Web服务与应用程序紧密集成,无需额外安装。 但是,如果您有现有的应用程序,并且允许将此新应用程序部署到相同的环境中,我敢肯定您的系统管理员会希望您使用现有的应用程序服务器。没有人喜欢额外的操作复杂性,即使它对您来说稍微容易构建。向应用服务器添加另一个应用程序是很简单的。 其他考虑因素包括: 安全性:网络配置、日志文件、访问控制等都将具有与Apache/IIS系统不同的实现,而不同通常意味着更差的安全性。简单的事情,比如您的系统管理员用Apache/IIS理解的SSL身份验证,在嵌入式Web服务器上会有不同的工作方式。 性能:嵌入式服务器可能效率更高,但可扩展性更低。您的编码决策会极大地影响这一点,而且对于嵌入式服务器,很容易将其搞砸。 开发:我发现嵌入式服务器更容易工作,因为我可以用简单的Java应用程序代替Web应用程序来运行它们,例如Eclipse Java视图,而不是带有Tomcat集成的J2EE视图。 我知道这是从Java的观点回答的,但是我希望一般的想法适用于Delphi。 |
|
|
3
3
IIS和Apache是很好理解的HTTP服务器。 拥有自己的HTTP服务器的唯一优势是简化部署,如果应用程序的服务器端部分将以独占方式托管在您的公司中,那么这可能不是一个优势。 另一个优势是性能,您可以通过定制的HTTP服务器实现更高的吞吐量和更好的响应时间。但除了易于部署和性能,我看不到其他任何优势。 但是也有很多缺点
|
|
|
4
1
我通常是独立开发的,因此我获得了更好的调试经验,然后部署为ISAPIDLL。 |
|
|
5
1
我也曾有过几次想知道这一点。 我也在研究一些iInternetProtocol实现,使InternetExplorer能够使用其他的URL模式。 所以我不久前开始了一个开源项目: http://xxm.sourceforge.net/ 它使您能够在ISAPI扩展、独立服务器之间自由切换,也许更晚一些。(一个Apache模块和一个Firefox协议处理程序正在开发中。) Delphi代码和HTML与其他Web脚本语言一样被合并到同一个源文件中,但是使用(快速)Delphi编译器构建用于运行网站的库。 |
|
|
6
1
我已经编写了几个应用程序来实现IndyHTTP堆栈并提供Web服务。这既简单又复杂。当您开始处理线程时,复杂性就出现了,因为您需要知道Indy是如何为HTTP请求创建线程的。因此,将它与服务器代码集成可能需要一些考虑,特别是当服务器连接到数据源或某种类型的公共控件时。 此外,您还需要管理所有的安全性、对文件的访问,以及一个普通的Web服务器将自己做的其他几乎所有事情。这就是你可能会失败的地方,因为印地的例子有限。 我已经说过,我发现Indy10HTTP服务器非常健壮,如果您针对特定的需求,比如仅仅根据您的应用程序正在做的事情来提供XML,那么它可以很好地工作。您可以完全控制服务器正在做什么,并且可以选择不同的部署模式-Windows服务、独立应用程序等… 如果您有一个设计良好的线程安全应用程序,那么在它上面实现HTTP就如同将IndyHTTP服务器组件放到表单或单元上一样简单。不需要为Web内容复制任何代码。 |
|
|
7
0
我总是专注于ISAPI和使用 IDDebugger 用于调试此进程。这将为您提供两个方面的最佳选择,即针对最终部署的同一版本进行调试。不幸的是,我没有为Apache开发,因此无法说明它的易开发性。 因为我使用了这个方法,所以我不必担心独立版本和未同步的ISAPI版本之间的更改,并且可以很容易地将客户版本放到我的测试环境中,复制任何特定的行为,然后使用修复程序对该行为进行测试,并绝对确保它在部署到现场时可以工作。 有太多的事情需要担心,甚至考虑使用面向互联网的独立Web服务器。最好将这种担忧(以及多年的经验)交给IIS/Apache。 |