簡體   English   中英

新ASP.NET Web應用程序的體系結構

[英]Architecture for new ASP.NET web application

我正在維護一個應用程序,它目前只是一個Web服務(使用WCF構建)和數據庫后端。 Web服務是分層構建的,具有linq-to-sql數據訪問部分,其中核心功能位於自己的程序集中,並且包含WCF代碼的Web服務程序集。 核心程序集還處理所有業務邏輯規則(實際上很少)。

客戶現在需要應用程序的Web界面,而不是僅通過使用Web服務的其他應用程序訪問它。 我對現代Web應用程序設計很遺憾,所以我想就Web應用程序使用的體系結構和框架提出一些建議。 Web應用程序將使用具有業務規則的相同核心程序集,並將linq-to-sql數據訪問層用作Web服務。

我想到的一些概念是:

  • ASP.NET MVC(或MVC-2)
  • Web表單
  • AJAX控件 - 可能允許AJAX控件通過JSON訪問現有的Web服務。

還有更多的概念我應該研究一下嗎? 對於一個新項目哪一個最好?

開發工具是面向.NET 3.5的Visual Studio 2008 Team Edition for Developers。 如果它提供任何好處,則可以升級到Visual Studio 2010 Premium(或者甚至是Ultimate)。

絕對深入挖掘ASP.NET MVC2

我們現在正在使用ASP.NET MVC2開發所有項目。 它不僅具有高度可擴展性 它也是高度可測試的 從長遠來看,這可以帶來更好的可維護應用程序。

WebForms與MVC2點 - (說出經驗):

可擴展性:

在我們公司,我們有很多使用WebForms的應用程序,然后由我們根據客戶的需要進行更新和更改。

我認為您的客戶將在不久的將來要求對應用程序進行更多更改。 打電話給其他服務,也許你必須修改最終產品的部分內容以符合他們的意願。

通過即將推出的雲計算Windows Azure平台,您可能需要跟上代碼的步伐。

ASP.NET MVC絕對支持能夠隨時擴展應用程序的概念。

我記得有一位客戶走在我身邊,要求我為他們的應用程序擴展(他們有一個會員管理系統),該功能將包含一些鏈接,將當前視圖導出為csv文件,以便他們可以辦公室的東西用它(主要是連續字母)。

設置該功能並不是一個大問題。 (花了大約2個小時,包括編寫測試) - 讓我們去測試:


可測性:

使用WebForms我們並沒有太多興趣編寫測試,因為這樣做真的很痛苦。 我記得寫一些測試至少有一些證據,但讓我們放棄那個話題..(:p)

我們對自定義類進行了測試,但我們無法真正測試WebForms中的所有EventHandler。

由於這個可測試的環境,我們的CodeBase更清潔,更安全。 我只是查看一些代碼,修改它,運行所有測試並且:哦,它打破了奇怪的行為! - 讓我們再次解決這個問題。 早些時候,我記得坐在我的同事調試,並試圖找到這些錯誤幾個小時。

使用ASP.NET MVC2,我們現在缺少測試! 我們要求所有類型的人(甚至是非Web用戶)提供我們可以提供給TestSuite的測試用例。

是的,還有一些AJAX控件:


AJAXability:

您詢問了AJAX控件並結合ASP.NET MVC我強烈建議您查看Telerik ASP.NET MVC UI控件

如果這不適合你,我們也廣泛使用jQueryjQuery UI

使用ASP.NET MVC和HTML視圖,這些庫不僅僅是一種樂趣,它們看起來非常漂亮。

沒有random-html-tag-id-value自動生成了!

但我最喜歡的是:你終於可以重新使用你的代碼了。


除了那些框架之外,還有更多的東西,還有T4模板系統。 使用Html.EditorFor()方法為ViewModel / DomainModel自動支架,當然有一種非常簡單的方法可以使用IoCDI范例。

假設您主要使用.NET Framework相關標簽提出問題,您可能會堅持使用它。

只是為了保持帖子完整,還有其他框架同樣好(甚至更好):

還有更多!

如果您需要對數據進行簡單的CRUD訪問,還可以使用DynamicData

Web Service Software Factory (WSSF)可能會在您的情況下派上用場。

這將允許您在使用WCF(或標准Web服務通信協議)設計服務器/客戶端通信時定義合同(返回的XML實體(如果選擇XML)等)。

WSSF支持ASP.NET MVCASP.NET MVP 此處顯示了MVP體系結構的一個簡單示例,以及本文

至於我,我經常使用類似混合的架構,使用一點MVCMVP ,因為兩者都有不同的MVP ,它們組合起來填補了彼此的改進點。

我也建議調查Silverlight。

http://www.silverlight.net/learn/

我的意見是在管理頁面(站點)內的客戶端站點和WebForms上使用MVC

暫無
暫無

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

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