WebObjects/Web 應用程式/開發/直接連線
預設情況下,Xcode 和 Eclipse/WOLips 都將配置您的應用程式以使用直接連線。當您的 WebObjects 應用程式啟動時,它會在特定埠(由 WOPort 配置選項分配)上監聽。在完整的部署場景中,此埠由 mod_WebObjects 介面卡或 WebObjects cgi-bin 介面卡用於在 Apache 和您的應用程式之間進行通訊。但是,也可以完全在直接連線埠上執行開發(即沒有 Web 伺服器)。在此配置中,一個明顯的區別是所有資源都由直接連線伺服器提供,而不是 Apache 場景,在 Apache 場景中,資源由 Apache 直接提供,您的 WebObjects 應用程式僅處理應用程式請求。
警告- wotaskd 依賴於啟用直接連線,以便介面卡能夠與之通訊。請勿在您的伺服器上全域性停用直接連線。例如,如果您從應用程式伺服器主目錄的 WebObjects.properties 檔案中停用直接連線,您將阻止 wotaskd 對其分配埠上的請求做出響應。
- 配置您的 Apache 使用 mod_WebObjects 或 cgi-bin 介面卡
- 確保 wotaskd 正在執行
- 將 WODirectConnectEnabled 設定為 false
- 設定您的 WebServerResources 資料夾,使其可被 Apache 訪問
- 盈利
我聽說過關於直接連線很糟糕的所有評論,我也多次被它的怪癖所困擾,但我想知道那些避開直接連線的人他們的工作流程是什麼,以及他們如何從中受益(尤其是如果他們使用 Eclipse/WOLips)。
我仍然使用直接連線,主要是因為我已經習慣了工作流程,並且現在已經找到了大多數可能出錯的東西。我喜歡我的所有開發資源都在一個專案中,並且在我使用直接連線時,我似乎在 WOBuilder 中獲得了一些好處。
也許是因為我的大多數專案主要關注資料而不是展示(我只有一些圖形和偶爾的樣式表 - 雖然我開始更多地使用樣式表),而且我在 Windows 和 Mac 之間來回開發(所以指令碼編寫可能會變得很痛苦)。我的應用程式還沒有因為載入圖形的速度而受到影響(更重要的是資料庫訪問的速度)。
這不是我害怕 Web 伺服器,我只是懶惰:) 並且不習慣在“拆分部署”而不是“拆分開發”的情況下進行工作流程。您如何對 Web 資源進行版本控制和管理,這些資源與您的開發資源位於完全不同的位置(您是否在 Eclipse 中使用資原始檔夾,或單獨的專案?或者我還沒有了解到的其他一些不錯的 Eclipse 功能?手動複製?)。您如何處理跨開發/暫存/生產的部署?您需要定製或修改您的專案多少?
我絕對可以在具有大量展示或專門的圖形設計師的網站上看到使用 Web 伺服器的真正好處,但我通常在一個 2-4 名開發人員的小團隊中工作,展示很少。
我確信有一種比我正在使用的更好的工作流程,我很好奇大家認為 WO 的開發和部署最佳實踐是什麼。我錯過了什麼?
首先,這不僅僅是關於影像。它關乎擁有一個真正的 Web 伺服器的功能,以及避免只有在您將應用程式遷移到透過真正的 Web 伺服器執行時才會出現的故障。考慮以下情況:
- 快取,mod_expires 不是您的朋友
- HTTPS
- SSI
- 重寫規則
- 只有在透過 Web 伺服器時才存在的標頭
我確信您還能想到更多差異。我寧願在部署中獲得所有服務並開發,並且在應用程式在生產環境中運行了半天之前就發現出現的故障!我更喜歡我的痛苦是在閒暇時,而不是在驚慌中。而且,至少在 OSX 上,讓 Apache 執行非常容易。
至於工作流程,什麼工作流程?我們從原始碼儲存庫中看到的“專案”是資料夾的層次結構。一個是用於程式碼的,這就是 WO 專案所在的位置。另一個是 DocumentRoot,這就是,嗯,文件根目錄內容所在的位置。其他資料夾用於文件、設計、測試等。可以輕鬆地將每個資料夾檢出到其應該去的位置。如果您的影像大多是靜態的,那麼要做的事情就更少了。如果它們經常發生變化,那麼設計師等可以在他們熟悉的方式下籤入和簽出他們需要的內容,而無需弄清楚像 Eclipse 專案這樣的神秘事物。對本地文件根目錄的影像更新與對工作區的程式碼更新的方式相同。
對於部署,我們有指令碼可以執行所有程式碼的命令列 Ant 構建,將所有各種資源(包括文件根目錄)打包成 tar 檔案,並通常建立一個安裝包。目標伺服器上的另一個指令碼會獲取該包,解壓縮它,並將位複製到它們應該去的位置。我不明白為什麼必須進行拆分安裝會使它更容易。