我目前正在開發一個使用ASP.NET MVC的應用程序,現在我需要創建一個接口(網頁),它將允許用戶從一組不同的對象中挑選並選擇他們想要的對象用作構建更復雜對象的構建塊。Web應用程序允許用戶選取用作構建塊的對象嗎?
我的問題應該是通用的,但是爲了提供實際的例子,我們假設應用程序允許用戶設計傢俱,比如衣櫃,櫥櫃等等。所以,我創建了C#類傢俱設計的基本組成部分,如基本形狀(加在一起形成一個盒子的木頭等),門,門把手,抽屜等。每個類都有一些共同的屬性(寬度,高度,長度)和一些具體的屬性,但都來自一個名爲FurnitureItem的基礎類,所以有辦法讓它們「連接」在一起,並互換。例如,可以在衣櫃中使用不同類型的門......如SimpleDoor,SlidingDoor等。設計傢俱的用戶必須選擇適用於當前傢俱的極其類型的門對象。此外,還有其他物品,例如分隔板,擱板,抽屜等。最終的模型當然是例如完全定製的模塊化設計的衣櫃或廚櫃。
問題是,雖然我可以輕鬆實例化所需的所有對象,並使用C#將它們連接在一起,形成一個完整的傢俱項目,但我需要爲用戶提供一種使用Web界面的方法。這意味着,他們可能會有某種工具箱或工具欄,並選擇(也許拖放)項目到設計面板,在Web界面中......所以,在瀏覽器中,我無法實現C#類的實現。 ..如果我將選定的項目發佈到服務器(表單帖子或使用ajax),我需要重建用戶以前已選擇的對象的整個集合,所以我可以適應新添加的項目。並計算它的尺寸等,然後最終返回完整的修改後的對象集合...
我試圖想出不同的緩存方法,或者在用戶仍在設計時保存這些對象(添加和刪除項目),因爲可能會有很多往返於服務器,因爲正確計算尺寸(包含對象的寬度,高度等)是通過我的C#類的方法在服務器上完成的。這將是很好,也許是存儲對象的設計當前會話對象或每個用戶的緩存對象...即使這樣我需要能夠提供某種類型的ID添加到對象和被添加到,以父母所有者的方式,所以我可以正確識別新實例將連接到的服務器中的對象實例。
我知道這在某種程度上令人困惑......但我希望這能給出我面臨的問題的一個想法......換句話說,我需要在服務器中保留一組互相連接的對象,因爲它們負責計算和應用一些約束,同時允許用戶通過Web界面操縱這些對象中的每一個,以及它們如何連接,添加和刪除它們。所以最後,整個事情可以堅持在數據庫中。理想情況下,我甚至希望給用戶一個視覺表示或反饋,以便他們可以看到他們正在設計什麼樣的東西...
最後,問題更多的是我應該採取什麼方法來解決這個問題。 C#類是否足夠在服務器中(封裝計算,並且可能會將它自己的圖形表示生成回客戶端)?我是否需要在JavaScript中創建類似的類以允許更加流暢的用戶體驗?如果我設法保持會話或緩存對象在請求之間保持活動狀態,會更容易嗎?還是應該在每次用戶交互(計算)時再次實例化形成整個傢俱的所有對象?在這種情況下,我將不得不每次都發布所有對象和所有已定製的屬性?
如何最好地處理這個問題的任何想法或意見是極大的讚賞...
謝謝!
+1 - 不錯的後期mddubs(tho先生配音聽起來還不錯:) - 哦,歡迎來到SO –
保存到會話只有webfarm問題,如果你沒有狀態服務器,或者不持續你的會話信息在數據庫中。這些事情中的任何一件都可以解決這個問題。 –
@jim - 謝謝! mr dubs確實有一個很好的戒指,但在這一點上,我致力於:) – mddubs