我有一個項目,我最近開始認真工作,但與朋友進行了一些設計討論,我想他提出了一些有趣的觀點。Web應用程序設計
該項目旨在具有高度可擴展性,並易於完全獨立地維護業務對象。易於擴展性迫使一些妨礙項目初始效率的設計決策。
基本設計如下。
在ASP.NET MVC中有一個「核心」,它管理着所有的交互JSON API和HTML網頁。然而,它不創建或管理像發佈,貢獻者等「業務對象」。這些都是在他們自己單獨的WCF Web服務中處理的。
核心的想法是非常簡單的,利用單獨的控件使用管理對象從Web服務檢索業務數據/對象。這又意味着核心可以是多線程的並且可以同時調用頁面上的控件。
每個Web服務都將管理數據庫中的相關業務對象及其數據。任何業務特定的處理也將在此處,例如將表中的數據映射到用於控件的有用數據結構。整個對象將被傳遞到核心,核心應該只是每個事務檢索或設置一個業務對象。如果將來需要多重影響的操作,那麼我將需要提供該功能。
此外,Web服務可以執行自己的獨立緩存,並根據請求以及他們自己對其特定區域的知識(例如用戶)可以返回新創建的對象或預先創建的對象。
與朋友談話後,我有以下問題。
我明白,WCF不如DLL調用或類似的東西快。但是,整個系統是以多少開銷爲基礎的?
創建線程可能很昂貴。比起只是一個接一個地調用所有的控件,花費更多嗎?
在這個設計中你可以看到有其他的內在坑嗎?
我改變了我的問題,以反映事實應該爲數據執行單個調用服務,然後使用它。如果它需要改變它,那麼它可能在一個新的交易中,例如更改用戶的配置文件將是一個事務,並且顯示將是另一個事務。 – tgandrews 2009-12-21 16:37:34