在ASP.NET中实现Model-View-Controller模式(五)
点击次数:24 次 发布日期:2008-11-26 13:53:41 作者:源代码网
|
源代码网推荐 源代码网推荐 将模型部分从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模式时。这种额外的开销一定要被计算在内,对一些小的程序来说,这种开销是不值得的。 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。 源代码网推荐 源代码网供稿. |
