Delphi 创建服务器脚本解释器需要知道什么?

Delphi 创建服务器脚本解释器需要知道什么?,delphi,compiler-construction,pascal,server-side-scripting,Delphi,Compiler Construction,Pascal,Server Side Scripting,我对模型感兴趣,为网站脚本开发一个新的对象pascal解释器。 我们有PHP,Pearl,Java,Javabeans。。。但Pascal并不是web开发人员的选择 由于Delphi只在基于Windows的服务器上工作 我想做以下事情: <input name="ClientName" value="<?pas write(ClintObj.Name); ?>"> 现有两种产品: 氧基因 您可以查看,以前称为Delphi Prism,以前称为Rejects Chrome

我对模型感兴趣,为网站脚本开发一个新的对象pascal解释器。 我们有PHP,Pearl,Java,Javabeans。。。但Pascal并不是web开发人员的选择

由于Delphi只在基于Windows的服务器上工作

我想做以下事情:

<input name="ClientName" value="<?pas write(ClintObj.Name); ?>">
现有两种产品:

氧基因

您可以查看,以前称为Delphi Prism,以前称为Rejects Chrome

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

我不知道你是否可以使用Oxygene来达到你的目的,但至少他们的产品可能会给你一些灵感,让你洞察自己建造这样的东西的可能性和困难

PascalScript

也许您可以使用,也可以通过重新对象。它是一个脚本解释器。因此,您可以将其嵌入到服务器应用程序中。例如,如果您创建了一个嵌入PascalScript的ISAPI应用程序,那么您所需要做的就是向脚本公开一些“write”方法,以允许它写入输出。应用程序需要做的就是将输出输出到ISS,然后完成basis服务器端Pascal脚本编写。之后,您可以向脚本公开更多方便的函数,使其更有用

PascalScript既可以在Delphi中使用,也可以在FreePascal中使用,因此您也可以在Linux中使用它。

两个现有产品:

氧基因

您可以查看,以前称为Delphi Prism,以前称为Rejects Chrome

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

我不知道你是否可以使用Oxygene来达到你的目的,但至少他们的产品可能会给你一些灵感,让你洞察自己建造这样的东西的可能性和困难

PascalScript

也许您可以使用,也可以通过重新对象。它是一个脚本解释器。因此,您可以将其嵌入到服务器应用程序中。例如,如果您创建了一个嵌入PascalScript的ISAPI应用程序,那么您所需要做的就是向脚本公开一些“write”方法,以允许它写入输出。应用程序需要做的就是将输出输出到ISS,然后完成basis服务器端Pascal脚本编写。之后,您可以向脚本公开更多方便的函数,使其更有用


PascalScript既可以在Delphi中使用,也可以在FreePascal中使用,因此您可以让它在Linux中工作。

编写这样的解释器不是件容易的事:

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

  • 网站的不同用户需要各自的数据(状态),因此您的代码需要具有会话意识(有状态)
哦,一个小问题:

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

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

编写这样的翻译不是一件容易的事:

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

  • 网站的不同用户需要各自的数据(状态),因此您的代码需要具有会话意识(有状态)
哦,一个小问题:

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

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

您将在模板中嵌入一种语言的脚本版本与该语言的通用web开发相混合

虽然Pascal并没有像模板语言那样被广泛使用,但是进行Web开发是完全可能的,例如,使用和几个Delphi组件套件


一些Delphi选项也支持Apache,并且在过去支持Kylix。我使用webhub有一段时间了。

您将在模板中嵌入一种语言的脚本版本与该语言中的常规web开发相混合

虽然Pascal并没有像模板语言那样被广泛使用,但是进行Web开发是完全可能的,例如,使用和几个Delphi组件套件


一些Delphi选项也支持Apache,并且在过去支持Kylix。我使用webhub有一段时间了。

别忘了免费的
DelphiWebScript
()

不过,它是一种通用的类似于Delphi的语言,可以用作脚本(尽管没有它,性能已经很好了)
<input name="ClientName" value="<?pas @ClintObj.GetName; ?>">
<?pas
    System.Writeln('<html><head>...');
?>