我应该将我的WebBroker项目移植到Indy

时间:2011-09-23 14:36:06

标签: delphi

很久以前,我使用Delphi 2007和WebBroker(TWebModule)开始了一些“Web应用程序”。当时我假设您需要一个Web服务器,如Apache或Microsoft IIS,以便创建任何类型的网站。此外,我不使用大多数Apache功能(除了虚拟服务器,所以我可以在一个IP地址和SSL上有多个域)。所以对我来说,Apache只是一个额外的层,使调试变得困难。

现在输入Indy(TIdHTTPServer)。如果我理解正确,Indy是一个网络服务器。因此,通过使用Indy,我不再需要使用Apache或其他一些网络服务器。这是对的吗?

在Indy环境中,我是否有任何支持虚拟服务器的问题?那么SSL呢?我搜索了文献,从我可以看到它完全支持SSL证书。

我现在正在将一些应用程序从WebBroker移植到Indy。这主要是在我的代码中用请求:TWebRequest 替换 ARequestInfo:TIdHTTPRequestInfo ,并使用响应:TWebResponse 引用 AResponseInfo:TIdHTTPResponseInfo

无论如何在Indy中使用 TWebModule 架构,这样我就不需要进行所有这些重写了吗?

最后还有什么我需要关注的吗?我的目标是让Apache脱离循环。

3 个答案:

答案 0 :(得分:3)

是的,你可以使用Indy的TidHTTPServer作为网络服务器,但它比IIS或Apache低得多。没有虚拟服务器的概念 - 您必须自己实现。

Indy也通过OpenSSL dll支持SSL。

我想你最关心的问题是与安全有关......有数百万的网站运行Apache或IIS,有很多人致力于在这些平台上找到漏洞,有很多人在修复他们出现时的一些缺陷。对于Indy来说并非如此......有一两个人在新闻组中回应你发现的错误。 (特别是一个人,他也可能在这里回答你的问题。)

现在,我使用Indy HTTP服务器(以及SecureBlackBox SSL支持),我发现它非常适合我的目的。

答案 1 :(得分:2)

Indy HTTP服务器调用WinSock API,并且能够实现:

  • 完整的HTTP / 1.1服务器;
  • 完整的HTTPS服务器(使用OpenSSL库或其他第三方,如SecureBlackBox)。

AFAIK您可以使用Indy发布Web模块。 见http://www.2p.cz/files/2p.cz/downloads/howto/indy_soap_web_services_in_delphi.pdf

您还可以使用其他服务器,例如directly the kernel-mode http.sys server,例如由ISS和.Net WCF使用,并且已知非常稳定和高效(它绕过WinSock API)。当然,如果需要,它将提供HTTPS conent。它自Windows XP SP2以来一直在标准版本中提供,因此在Vista和Seven中可用。使用此组件将允许Microsoft为您完成所有调试工作,并将使用主机操作系统进行更新。我在我们的客户端 - 服务器ORM中使用它,或直接替换已弃用的DCOM连接,在客户端具有非常好的速度和稳定性。

答案 2 :(得分:2)

关于虚拟服务器 - HTTP 1.1规范要求客户端发送Host请求标头,以便虚拟服务器知道哪个域专门用于处理多个域具有相同IP的情况。 TIdHTTPRequestInfo具有该值的Host属性。实际上,TIdHTTPServer在内部验证以确保HTTP 1.1请求在触发任何Host事件之前具有OnCommand...标头。