2010-09-15 28 views
0

有沒有辦法在Web瀏覽器中而不是在Web應用程序(rails)中執行後端代碼(ruby)?在Web瀏覽器中執行後端代碼而不是在Web應用程序中執行的方法?

原因我不知道爲什麼所有的代碼應該在服務器上執行,是不是壞的體系結構。

就像SVN的概念一樣,它非常依賴服務器,而不是像Git那樣擁有更多的分佈式架構,每個客戶端都執行後端代碼。以這種方式,它將釋放來自Web服務器的性能負載,並且它可以處理更多的客戶端,因爲今天的計算機在客戶端相當可行。

客戶端將通過後端服務器與數據庫進行通信,但後端將不包含所有應用程序代碼,僅用於通信部分。客戶端上的服務器代碼將被編譯。

這不是一個更好的解決性能負載問題的方法嗎?

回答

3

我認爲使用Adobe Flex etc/Silverlight構建的RIA應用程序正在朝着這個方向發展。如果你想在客戶端而不是服務器上做很多事情,你應該看看其中的一些。

但是,一直存在着構建應用程序的舊客戶端 - 服務器範例。 VB6,Powerbuilder,Oracle2K等技術以及WPF/Windows Forms/Oracle Forms等目前的頭像都提供了在客戶端執行更多操作的方法,而不是在服務器上執行所有操作。另外,將所有應用程序邏輯(除數據庫通信邏輯之外)移動到客戶端意味着您將回到粗體客戶端的工作方式 - 與瘦客戶端模型相比,它有其優點,但也有其缺點的Web應用程序。

胖客戶端應用程序的部署/升級;支持多客戶端操作系統/不同的客戶端環境,這可能會使您的應用程序性能變得不可預測,這只是一些問題,爲什麼首先要將胖客戶端遷移到瘦客戶端。儘管ClickOnce等技術有助於部署,但這些問題仍然存在 - 即使在今天也是如此。

因此,根據您的需要選擇厚/瘦客戶端是一種折衷。

1

安全。

如果這是一個電子商務應用程序,那麼您絕對不希望客戶端運行後端代碼,因爲一些不擇手段的人可能會修改金融交易。控制數據並確保其全部駐留在服務器上時的安全性(考慮健康記錄)要容易得多。

另一個例子是表單驗證。雖然客戶端代碼可以執行輸入驗證,但它位於客戶端上的事實意味着它可以被繞過。這就是服務器在處理之前(應該)驗證所有用戶輸入的原因,即使客戶端代碼已經執行驗證。

+0

如果您將所有內容編譯爲機器代碼,是不是代碼安全?那麼代碼是不可讀的,不能被修改? – 2010-09-15 05:48:14

+0

@ajsie:不會。即使它被編譯成某種形式的字節碼,也會有人會將其解密並找出它的功能。另外,有人可以使用工具來監控網絡流量並反向設計正在發送的數據。 – 2010-09-15 19:26:55

1

在客戶端運行代碼的一個問題是您需要更加小心安全問題。服務器是一個已知/受控制的環境,並且可以在部署應用程序之前進行充分測試。如果您公開發布應用程序,那麼您永遠不會知道客戶端計算機的配置將如何,因此您可能需要滿足不同的配置,並且您的代碼更容易受到濫用,無論是意外還是惡意。

3

你不能在瀏覽器中運行Ruby代碼,但你可以將一些東西卸載到它。 Javascript和Flash可能是客戶端腳本最常用的語言。客戶端工作的侷限主要是關於安全性和數據。爲了安全起見,許多事情都必須在服務器端完成。通常你的服務器與客戶端的連接要比數據存儲更好,所以在服務器上工作通常更有效率。

使用沉重的JavaScript /客戶端腳本的最常見原因是響應能力 - 並不是說​​您已將CPU密集型工作交給客戶端,但客戶端的感知響應性顯然會好得多他們不必擊中服務器來執行操作。

相關問題