我正在评估使用Delphi(ISAPI/CGI/...)编写Web应用程序的可能性。 我仍然看不到足够的理由使用Delphi而不是“传统”的Web开发框架。 如果您在这个特定领域有经验,请分享您的意见。 您会推荐Delphi而不是PHP / Rails / ASP / ...吗? 您知道有哪些使用Delphi编写的Web应用程序吗?(不是Web服务)
如果你使用 Delphi 开发 Web 应用程序,你将获得以下优势: 性能比其他脚本语言更快。 可以重用已有的 Delphi 代码。 使用优秀的 IDE。 可以使用自己喜欢的编程语言(Delphi)。 如果使用 Intraweb,可以获得内置的 Ajax 支持,无需深入了解 Web 或 JavaScript 即可提高生产力。 但是也存在不足之处: 部署不容易,需要使用 ISAPI 和 IIS,且很少有 Hosting 公司提供 ISAPI 支持。 只支持 Windows 平台(如果使用 FreePascal 可能会有其他选择)。 没有框架或库可帮助您在此方面进行开发。 文档非常缺乏,大部分文章都很老旧。 与 WebBroker 相比,使用它并不够高效,其他解决方案如 Asp.Net 更加优秀。 即使使用 Intraweb,相对于其他解决方案,它也更加高效,但是不够灵活,因为它会对 Web 方面做出一定程度的封装。 顺便提一下,Shareit 已经用基于 Delphi 和 Intraweb 的新版本取代了他们原本使用 PHP 构建的 Web 应用程序。
一个原因可能是,您的模型、业务逻辑或数据访问层是用Delphi编写的,而你需要在Web应用程序中使用。虽然,您可以通过其他编程语言来使用模型、业务逻辑或数据访问层,例如dll调用、COM、REST或SOAP。但这不再是使用Delphi开发Web应用程序的原因。另一个原因可能是,开发人员很擅长Delphi,对其他语言掌握较少。使用编译语言也比使用解释语言如php、rails和asp更具有性能优势。
Delphi有很多优点,但其Web应用程序能力并不是其中之一。这恰恰是因为它生成本地编译代码的缘故。以下是其中的一些原因: 如果您无法控制服务器(比如由ISP托管),那么几乎不可能安装本地编译代码。脚本语言被几乎所有我所知道的Web主机所接受。 使用从ISAPI应用程序调用DLL时会出现某些特殊情况。例如,当您使用LoadLibrary加载库时,当前文件夹是C:\ Windows \ System32,如果您调用了预期DLL在当前文件夹中驻留的现有代码,则这可能很方便。 IIS的新版本还具有一些安全功能,这使得它们不方便。有一个“应用程序保护”设置必须设置为最低设置,并且必须单独启用所有已批准的ISAPI扩展名。在与他人共享的服务器上,存在许多潜在的灾难风险。 Delphi Prism可以提供更多,因为它可以执行完整的.NET相关技术,包括MVC和Silverlight。我已经用C#做了所有我的Web服务,如果我必须开始一个新的Web项目,Delphi Prism或Visual C#将是我的选择。
多年来,我成功地使用Delphi创建ISAPI dll部署了几个商业应用程序。选择Delphi的原因很简单。我们是一个Delphi工作室,选择Delphi作为引擎可以大大减少编码时间,在浏览器端使用一些客户端Javascript。大部分所需功能都需要处理对后端数据库的调用,这些调用需要保持加密以减少机器人的可能曝光。如果您决定采用这种方法,我强烈建议使用idDebugger工具进行调试。它真的可以减轻痛苦。