2013-07-04 138 views
0

我對模型感興趣開發一個新的對象用於網站腳本的pascal解釋器。 我們有PHP,Pearl,Java,Javabeans ......但不是Pascal作爲Web開發者的選項。創建服務器腳本解釋器需要了解什麼?

由於德爾福僅在基於Windows的服務器協同工作......

我願做這樣的事情:

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

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

不只是作爲一個模板,但就像PHP一樣,我可以使用MVC框架,甚至創建一個:

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

我應該從哪裏開始?

或者它已經完成,我找不到它? (對於Linux)

+1

這只是我的愛帕斯卡 – PSyLoCKe

+0

又見http://stackoverflow.com/questions/3870893/is - 模板引擎就像速度或自由標記爲德爾菲 – mjn

+0

對不起,但它不是我在尋找。我假裝用它來建立動態網站。 – PSyLoCKe

回答

1

你混合嵌入模板語言的腳本版本用該語言進行一般網絡開發。

雖然Pascal並沒有真正用作模板語言,但完全可以使用Web開發,例如,與http://brookframework.org/和幾個德爾福組件套件。

一些Delphi選項也支持Apache,並在過去支持Kylix。我使用了http://www.href.com的webhub一段時間。

+0

我會試試這個布魯克:) – PSyLoCKe

2

兩個現有產品:

OXYGENE

您可以檢查出Oxygene,前身爲德爾福棱鏡,原名的RemObjects鉻。

他們已經找到了一種將Pascal風格語言編譯爲Java的方法。不會將Pascal代碼轉換爲Java代碼,而是將其編譯爲在Java運行時引擎中運行的字節碼。除此之外,他們也可以編譯到.NET運行時。

我不知道你是否可以使用氧氣爲你的目的,但至少他們的產品可能會給你一些靈感和一些建立這樣的自己的可能性和困難的一些洞察力。

PascalScript

也許你可以使用的RemObjects PascalScript,也。它是一個腳本解釋器。所以你可以將它嵌入到服務器應用程序中。例如,如果你創建了一個嵌入了PascalScript的ISAPI應用程序,你需要做的就是向腳本公開一些'write'方法以允許它寫輸出。所有應用程序需要做的就是將輸出輸出到ISS,並完成基礎服務器端的Pascal腳本。之後,您可以將更多便利功能暴露給腳本,使其更有用。

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

+0

它將如何幫助生成網站腳本?Java不是JavaScript。 – mjn

+0

這是關於服務器端腳本的,不一定是Javascript,只是說你可以使用這樣的技術,你也可以從頭開始建立一個腳本引擎,或者你可以使用[Pa scalScript](http://www.remobjects.com/ps.aspx)也可以通過RemObjects。不,我不屬於。 :D – GolezTrol

+0

網站腳本編寫的要求非常具體,因爲HTML頁面可能包含數十個用於所有各種頁面元素的小型腳本部分,並且使用Pascal進行邏輯和演示混合操作會很快變得脆弱。真實世界的網絡框架OTOH是專門爲解決這個問題而設計的,它支持靈活且易於理解的網頁組成。 – mjn

1

寫這樣的解釋是不是小菜一碟:

  • 腳本文件需要有解析,所包含的Pascal代碼編譯/檢查語法錯誤
  • ,因爲這編譯階段將是一個CPU消耗任務,產生的目標代碼將不得不被緩存以獲得更好的性能
  • 也許您不想在服務器上使用/安裝FPC或Delphi編譯器,那麼您的語言將僅限於您的編譯器可以支持的內容
  • 生成的代碼需要訪問「共享數據」,如果不同的腳本部分需要交換信息或訪問全局數據(如數據庫)

也是一個關鍵的功能要求,除非你的應用是無狀態:

  • 不同該網站的用戶需要自己獨立的數據(狀態),那麼你的代碼需要會話感知的(狀態)

哦,一個小問題:

  • 的應用程序不應該暴露的惡意客戶端的任何vulnerabilites,見OWASP

所以我想這將是一個漫長的週末;-)

+2

嬰兒的步驟。您可以從支持單個文件開始,PHP 0.1也可能不支持APC緩存。第一個版本不一定要快,也沒有很多功能。數據很少共享,也在PHP中。兩個單獨的腳本不能訪問其他數據庫連接。根據定義,HTTP是無狀態的,會話只是PHP中的一個技巧。而且,一旦你的解釋器啓動並運行,使用會話cookie構建狀態支持將變得微不足道。 :D如果你可以在服務器上保存一個pas文件並運行它,這將是非常酷的。 :) – GolezTrol

+0

這是我的夢想! – PSyLoCKe

+0

而且很酷。我希望你會成功,儘管這條路將是漫長而滑溜的。 ;) – GolezTrol

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 basedSynopse based的。

開發工具Smart Mobile Studiousing DWS編譯形式和基於帕斯卡爾源代碼轉換爲HTML5和JavaScript,然後從Web服務器使用在任何HTML5/JavaScript的瀏覽器兼容(包括移動的)運行。

所以在DWS,演示了大量的電能和生態系統圍繞它(!

+0

我會試試這個短信,並回復給你! – PSyLoCKe