2012-01-25 41 views
2

Aspx頁面。只發送整個對象來更新狀態?

形式

許多領域,我們是代表一個JS對象中的所有領域。

我們是只有更改UI中記錄的狀態爲「0」。 (在UI中)

我們需要在數據庫中保存新的狀態。


問題:

我們應該

1)填充所有字段的對象,通過AJAX發送整個對象服務器和演練在服務器田裏去看看它有改變了?

2)產生變化的狀態一個特殊的命令,並與阿賈克斯將命令發送到服務器?

第一個是更OOP'ed,但我不覺得在發送的所有字段到服務器的任何邏輯 - 只是爲了改變現狀......

附:

這是來自一個我和一個同事

之間的爭論我認爲第二個。他,第一個

+0

第二種方法,當然。 – Sid

回答

1

如果您從CQS/CQRS的角度思考(命令查詢分離/命令查詢職責隔離),您會採用第二種方法(您的方法),因爲您描述的是您的特定命令在您的代碼中發佈和處理。您發送的命令包含告訴您的系統執行某些操作(命令提示音)所需的所有信息。通過這種方式,您的代碼可以執行單一職責,從而提高代碼的可讀性和可維護性。

我會在你的論點中與你同在。

祝你好運!

0

我沒有理由發送一個完整的對象只是爲了傳遞一個值。如果這一切都發生在一段後端代碼中,則該對象已經存在,並且只傳遞引用,這是一回事。既然你是通過網絡傳遞的,那麼發送的數據越小越好。

0

我會創建一個通用處理程序(.ashx),並在用戶決定進行狀態更改時通過Ajax調用它。你只需要傳入對象的id和新的狀態。

OOP擅長很多事情,但快速/輕鬆編輯並不是其中之一。

唯一需要注意的是任何通常由於屬性更改而啓動的次級邏輯。例如,更改狀態是否需要重新驗證整個對象?如果不是,請不要擔心。如果是這樣,請考慮如何簡化它。

0

我會選擇較少工作的替代方案。從架構的角度來看,這並不重要。

0

正如其他地方所建議的那樣,您可以在所討論的頁面上使用通用處理程序(.ashx),Web服務(.asmx)或甚至WebMethod標記的公用方法。在這種情況下,您需要的是簡單的Ajax調用(不要與Microsoft Ajax Toolkit混淆)。

例如參見jQuery's post method。打這樣的電話非常簡單。對於一個經典的webforms項目,我會親自使用ashx或asmx來通過aspx中的WebMethod標籤。對於MVC,還有更多選項(JsonResult)。

我對ASP.Net WebForms的一個嚴重問題是視圖狀態和每個請求上傳輸的數據量。最好有簡單/更輕的處理程序,或者旨在從JS開始的Web服務。

相關問題