创建服务器脚本解释器需要了解什么?

时间:2013-07-04 14:16:41

标签: delphi compiler-construction pascal server-side-scripting

我对模型开发感兴趣,为网站脚本开发一个新的对象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 个答案:

答案 0 :(得分:2)

现有两种产品:

<强> OXYGENE

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

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

我不知道你是否可以将Oxygene用于你的目的,但至少他们的产品可能会给你一些灵感,并对你自己建造这样的东西的可能性和困难有所了解。

<强> PascalScript

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

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

答案 1 :(得分:1)

写这样的翻译不是小菜一碟:

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

除非您的申请是无国籍的,否则这也是一个关键的功能要求:

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

哦,一个小问题:

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

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

答案 2 :(得分:1)

您正在混合将模板中的语言脚本版本嵌入到该语言的常规Web开发中。

虽然Pascal并不像模板语言那样真正使用,但完全可以进行web开发,例如:使用http://brookframework.org/和几个Delphi组件套件。

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

答案 3 :(得分:1)

不要忘记免费DelphiWebScriptDWS)。

虽然started as a Delphi-like WebScript language,但它是一种通用的Delphi语言,可用作脚本,also has a JIT compiler(虽然没有它,但性能已经非常好)。

主项目在Delphi中编译(因此它仅限Windows),但也有FreePascal DelphiWebScript initiative使其在Linux上运行。

有多个演示Web服务器项目可供选择,因此您可以托管自己的DWS脚本,例如WebServer project based on http.sys version 2,然后有Indy based和{{3 }}。

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

因此,DWS,演示及其周围的生态系统有很多功能(: