簡體   English   中英

如何同步服務器端和客戶端代碼?

[英]How do you synchronize server-side and client-side code?

我在軟件工程中一直在學習(和教學)的東西是代碼重復是所有邪惡的根源。 另一方面,我發現很難解釋這個概念應該如何應用於Web應用程序的開發。

請允許我澄清一下......輸入和數據驗證可以是Web應用程序的重要組成部分。 有時這種驗證可能非常復雜。 例如,我在拼圖編輯器上工作,驗證包括檢查操作或移動是否有效。 然后必須檢查非平凡的規則。

當然,驗證必須在服務器端完成,以確保存儲數據的一致性和質量。 但是,必須對客戶端進行驗證以確保順暢的用戶體驗。

在大多數情況下,客戶端和服務器端代碼是用不同的語言編寫的(即javascript / Python),因此驗證代碼必須編寫兩次。 但是,根據我對GWT / Java(雙方都是Java)的唯一體驗,我發現可以重用大部分驗證代碼。 這似乎使一切變得更容易:維護,重構,調試......

所以我的問題是:在客戶端和服務器端語言不同的項目中,如何管理與代碼重復相關的問題?

我通常處理這個問題的方法是在服務器端編寫驗證代碼並通過Web方法公開它(在.NET中,大多數其他語言中存在類似的功能),以便可以從javascript調用它。 因此,您可以從客戶端同步和異步調用單個方法,也可以從服務器端調用。 這並不適用於所有情況,但到目前為止它對我來說非常有效。

通常,很難避免重復生成的代碼,但常見的方法是使用代碼生成器來構建服務器端或客戶端代碼,這樣您只需編寫其中的一半代碼。 最流行的方法是編寫服務器端公共,然后讓代碼生成器為您構建JavaScript代碼。 例如,我們公司使用的語言是Coldfusion, Form-o-matic為我們解決了這個問題。 人們也可以通過編寫可以在服務器端執行的JavaScript來從相反的方向解決問題。 我會尋找一個能夠為你做這個的框架。

一種可能的解決方案是使用DSL在驗證描述文件(以XML或任何其他方式)中抽象實際驗證。 這樣,您只需要以客戶端和服務器語言實現驗證引擎,並將驗證基於同一描述文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM