在ASP.NET中實現MVC模式(五)

來源:互聯網
上載者:User
asp.net 在ASP.NET中實現Model-View-Controller模式(五)



測試

將模型部分從ASP.NET環境中分離出來能夠使模型部分更容易的被測試。在ASP.NET環境中進行測試的話,你必須同時測試很多方面,如HTML代碼是否正確,而讀取HTML代碼的工作是非常煩悶的。將模型部分分離出來,使你能夠對模型部分做單獨的單元測試。下面是NUnit (http://nunit.org)對模型部分進行單元測試的例子。

using System;



using NUnit.Framework;

using System.Collections;

using System.Data;

using System.Data.SqlClient;



[TestFixture]

public class GatewayFixture

{

[Test]

public void Tracks1234Query()

{



DataSet ds = DatabaseGateway.GetTracks("1234");

Assertion.AssertEquals(10, ds.Tables["Track"].Rows.Count);

}



[Test]

public void Tracks2345Query()

{

DataSet ds = DatabaseGateway.GetTracks("2345");

Assertion.AssertEquals(3, ds.Tables["Track"].Rows.Count);

}



[Test]

public void Recordings()

{

DataSet ds = DatabaseGateway.GetRecordings();

Assertion.AssertEquals(4, ds.Tables["Recording"].Rows.Count);



DataTable recording = ds.Tables["Recording"];

Assertion.AssertEquals(4, recording.Rows.Count);



DataRow firstRow = recording.Rows[0];

string title = (string)firstRow["title"];

Assertion.AssertEquals("Up", title.Trim());

}

}



結論:

在ASP.NET中實現MVC模式有如下優缺點:

優勢:

能夠減少依賴。 程式員可以在一個ASP.NET頁面中實現所有的代碼。單頁的實現方式,對於一些小型的且生存周期不長的程式是適用的。但如果想在不斷增加的頁面間共用代碼的話,將代碼的不同部分進行分離是非常有效果的。

能夠減少代碼的複製。 DatabaseGateway 類中的GetRecordings 和 GetTracks方法能夠直接被其它的頁面使用,減少了必須將方法的代碼拷貝到不同頁面的情況。

能夠把不同人員的責任分開。修改頁面的外觀與修改資料訪問的代碼所用的技術是不同的,將模型與視圖分開能夠使負責不同工作的專家協同的工作。

使效能最佳化的成為可能 按將系統不同的職責分成不同的類,使效能的最佳化成為可能。前面的例子中,由於每次請求頁面的時都要從資料庫中讀取資料。因此可在某種情況下將資料緩衝,從而提高整個程式的效能。如果不將代碼進行分離的話是無法做到的這點的。

易測試性 將模型與視圖相分離使在ASP.NET環境外進行單元測試成為可能。

缺點:

增加了代碼的數量及複雜度。這個例子在早期單頁的實現方式的基礎上增加了新的檔案和代碼,在無形中增加了維護的開銷。一旦修改系統的話,會修改所有三種角色的代碼。在一些情況下,一個檔案中的修改比一些檔案中修改要方便。所以在考慮是否使用MVC模式時。這種額外的開銷一定要被計算在內,對一些小的程式來說,這種開銷是不值得的。






聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.