2010-05-21 122 views
5

我維護的應用程序當前只是一個Web服務(使用WCF構建)和數據庫後端。 Web服務分層構建,在自己的程序集中包含具有核心功能的linq-to-sql數據訪問部分,最重要的是包含WCF代碼的Web服務程序集。核心程序集還處理所有業務邏輯規則(實際上很少)。新的ASP.NET Web應用程序的體系結構

客戶現在想爲應用程序提供Web界面,而不是通過其他正在使用Web服務的應用程序訪問它。我對現代Web應用程序設計很迷茫,所以我想就如何使用Web應用程序的體系結構和框架提出建議。 Web應用程序將使用與業務規則相同的核心程序集和linq-to-sql數據訪問層作爲Web服務。

我想過一些概念是:

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

有沒有更多的概念我應該看看?哪一個最適合新項目?

開發工具是針對.NET 3.5的Visual Studio 2008 Team Edition for Developers。如果它具有任何優勢,則可以升級到Visual Studio 2010 Premium(甚至可能是Ultimate)。

+0

我會建議使用.NET 4,如果它是在所有的選項。對WinForms和WCF進行了很多改進。 – R0MANARMY 2010-05-22 18:39:26

+0

@ R0MANARMY你會提供一個列出WCF/WinForms改進的源代碼嗎? – 2010-05-24 21:08:59

回答

11

內客戶端的網站和的WebForms MVC絕對挖成ASP.NET MVC2

我們所有的項目都是使用ASP.NET MVC2開發的。這不只是高度可擴展。它的測試也是高度。從長遠來看,這導致更好的可維護應用程序。

的WebForms與MVC2點 - (講出來的經驗):根據需要

在我們公司,我們有很多的使用,然後被我們更新和改變的WebForms應用:

可擴展性由我們的客戶。

我認爲您的客戶將在近期申請更多的應用程序更改。打電話給其他服務,也許你將不得不返工部分最終產品以符合他們的意願。

並且即將推出Cloud ComputingWindows Azure平臺,您可能需要跟上您的代碼。

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

我記得我們的一位客戶走過來問我爲他們的應用程序(他們有一個會員管理系統)的擴展,該功能將包含像鏈接導出當前視圖爲csv文件,所以他們可以用它做辦公用品(主要是連續字母)。

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


可測性:

使用WebForms我們真的沒有太大的興趣寫作測試,因爲它是一個純粹的做痛所以。 (:p)

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

由於這個可測試的環境,我們的CodeBase使用起來更清潔和節省。我只是檢查一些代碼,修改它,運行所有的測試,並且:哦,它打破了奇怪的行爲! - 我們再來修復一下。早些時候,我記得和我的同事一起調試,並試圖在幾個小時內找到這些錯誤。

用ASP.NET MVC2我們現在是測試! 我們要求各種各樣的人(甚至是非網絡用戶)提供我們可以加入我們的TestSuite的測試用例。

,是的,有一些Ajax的控件太:


AJAXability:

你問到AJAX控件以及與ASP.NET MVC結合我強烈建議你檢查出Telerik ASP.NET MVC UI Controls

如果不是東西給你,我們也大量運用jQueryjQuery UI

的ASP.NET MVC和HTML視圖,這些庫不只是使用樂趣,他們只是看令人驚歎地美。

沒有random-html-tag-id-value自動發電了!

但我最喜歡的是:您終於可以真正再次使用您的代碼。


對於那些框架,除了這些之外,還有更多的T4模板系統。爲您的ViewModels自動腳手架/DomainModelsHtml.EditorFor()方法,當然,有一個偉大的和簡單的方法來使用IoCDI範例。

假設您已經提出了主要與.NET Framework相關的標記的問題,您可能會堅持使用它。

只是爲了保持後完整的,也有說是一樣好(或更好)其他框架:

And many many more!

+0

+1爲解釋和動機的一個偉大的概述。 – 2010-05-24 06:41:15

1

也有DynamicData這可能是適當的,如果你需要簡單的CRUD訪問你的數據。

+0

DynamicData看起來很有趣,但不幸的是,在這個項目中,我的需求比基於數據庫中確切實體的簡單CRUD更加先進。 – 2010-05-22 08:25:42

-1

只是我認爲用在管理頁面(網站)

+0

如果您有任何輸入/ html約定,您將無法在管理部分中使用它們。你也可能難以讓你的CSS在這兩個部分工作。如果你使用AuthenticationFilters進行安全性會怎麼樣?你將如何使用WebForms部分中的那些? (當然有可能,但使用MVC它「正常工作」。)最好選擇一種技術並堅持下去,除非你有一個非常具體的用例需要不同的東西。 – Ryan 2010-05-25 18:32:10

0

The Web Service Software Factory (WSSF)可能會派上用場。

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

WSSF有利於ASP.NET MVCASP.NET MVPMVP體系結構的簡單示例如圖所示here,加上this article

對於我來說,我經常會使用混合式架構,使用MVCMVP,因爲兩者都有不同的優點,它們結合在一起填充彼此的改進點。