0

我对模型感兴趣,可以为网站脚本开发一个新的对象 pascal 解释器。我们有 PHP、Pearl、Java、Javabeans……但没有 Pascal 作为 Web 开发人员的选择。

由于 Delphi 仅适用于基于 Windows 的服务器...

我想做这样的事情:

<input name="ClientName" value="<?pas write(ClintObj.Name); ?>">

或者

<input name="ClientName" value="<?pas @ClintObj.GetName; ?>">

不仅作为模板,而且就像 PHP 一样,我可以将其与 MVC 框架一起使用,甚至可以创建一个:

<?pas
    System.Writeln('<html><head>...');
?>

我应该从哪里开始?

或者它已经完成了,我找不到它?(对于 Linux)

4

4 回答 4

2

两种现有产品:

氧气

您可以查看Oxygene,以前称为 Delphi Prism,以前称为 RemObjects Chrome。

他们找到了一种将 Pascal 风格的语言编译为 Java 的方法。不是将 Pascal 代码转换为 Java 代码,而是实际将其编译为在 Java 运行时引擎中运行的字节码。除此之外,它们还可以编译到 .NET 运行时。

我不知道您是否可以将 Oxygene 用于您的目的,但至少他们的产品可能会给您一些灵感和一些关于自己构建类似东西的可能性和困难的见解。

帕斯卡脚本

也许您可以使用PascalScript,也可以使用 RemObjects。它是一个脚本解释器。因此,您可以将其嵌入到服务器应用程序中。例如,如果您创建一个嵌入 PascalScript 的 ISAPI 应用程序,您需要做的就是向脚本公开一些“写入”方法以允许其写入输出。应用程序需要做的就是将该输出输出到 ISS,然后您的基础服务器端 Pascal 脚本就完成了。之后,您可以向脚本公开更多便利功能以使其更有用。

PascalScript 可以在 Delphi 和 FreePascal 中使用,所以也许你也可以让它在 Linux 中工作。

于 2013-07-04T14:35:20.307 回答
1

不要忘记免费DelphiWebScriptDWS)。

虽然一开始是一个类似 Delphi 的 WebScript 语言,但它是一种通用的类似 Delphi 的语言,可以用作脚本,并且还有一个 JIT 编译器(虽然没有它,性能已经很好)。

主要项目在 Delphi 中编译(因此它仅适用于 Windows),但有一个FreePascal DelphiWebScript 计划使其也可以在 Linux 上运行。

有多个演示 Web 服务器项目可供选择,因此您可以托管自己的 DWS 脚本,例如基于 http.sys 版本 2的WebServer 项目,然后有基于 Indy和基于Synopse的项目。

开发工具Smart Mobile Studio使用DWS将表单和基于 Pascal 的源代码编译成 HTML5 和 JavaScript,然后从 Web 服务器提供它以在任何兼容 HTML5/JavaScript 的浏览器(包括移动浏览器)中运行。

所以 DWS、demo 和围绕它的生态系统有很大的力量(:

于 2013-07-05T07:58:08.510 回答
1

写这样一个解释器可不是小菜一碟:

  • 您的脚本文件需要被解析,包含的 Pascal 代码编译/检查语法错误
  • 由于此编译阶段将是一项消耗 CPU 的任务,因此必须缓存生成的目标代码以获得更好的性能
  • 也许您不想在服务器上使用/安装 FPC 或 Delphi 编译器,那么您的语言将仅限于您的编译器可以支持的语言
  • 如果不同的脚本部分需要交换信息或访问全局数据(如数据库),则生成的代码需要访问“共享数据”

除非您的应用程序是无状态的,否则这也是一个关键的功能要求:

  • 网站的不同用户需要他们单独的数据(状态),因此您的代码需要是会话感知的(有状态的)

哦,一个小问题:

  • 应用程序不应为恶意客户端暴露任何漏洞,请参阅 OWASP

所以我想这将是一个漫长的周末;-)

于 2013-07-04T14:49:13.587 回答
1

您将在模板中嵌入一种语言的脚本版本与使用该语言的一般 Web 开发相结合。

虽然 Pascal 并没有真正用作模板语言,但进行 web 开发是完全可能的,例如使用http://brookframework.org/和几个 Delphi 组件套件。

一些 Delphi 选项也支持 Apache,过去也支持 Kylix。我使用了来自http://www.href.com的webhub一段时间。

于 2013-07-04T19:58:25.957 回答