使用MVCQuick.Framework重构MVC Music Store(一)
MusicStore
MVC Music Store是基于最佳ASP.NETMVC入门教程,引导如何使用MVC和Visual Studio进行Web开发。MVC Music Store最新版本基于ASP.NET MVC 3使用Visual Studio 2010开发
MVCQuick.Framework
MVCQuick.一个快速开发ASP.NET MVC应用程序的原创开源框架。其中MVCQuick.Framework包括一个存储库、一个IoC容器、一个日志管理器、一个安全提供者。
实体对象定义:
public class Album : EntityBase
{
public string Title { get; set; }
public decimal Price { get; set; }
public string AlbumArtUrl { get; set; }
public Genre Genre { get; set; }
public Artist Artist { get; set; }
public IEnumerable<OrderDetail> OrderDetails { get; set; }
}
存储:
//全局配置
NHibernateManager.Configuration();
NHibernateManager.AddMapping("MVCQuick",
typeof(EntityBase).Assembly,
typeof(Album).Assembly);
NHibernateManager.UpdateSchema();
ClassicContainer.Register<NHibernateRepository>("NHibernateRepository");
//使用
repository.Save<Cart>(cartItem);
var cartItems =
repository.Query<Cart>()
.Where(x => x.Guid == ShoppingCartId)
.ToList();
IoC容器:
ClassicContainer.Register<AccountController>("Account", properties);
日志:
//全局配置
Logger.ConfigureLog4Net(HttpContext.Current.Server.MapPath("~/log"), LogLevel.Info, LogLevel.Info);
//使用
Logger logger = Logger.GetLogger(filterContext.Controller.GetType());
logger.Error(filterContext.Exception);
成员提供者:
<membership defaultProvider="ClassicMembershipProvider">
<providers>
<clear/>
<add name="ClassicMembershipProvider" type="MVCQuick.Framework.Security.ClassicMembershipProvider"
enablePasswordRetrieval="false" enablePasswordReset="false" requiresUniqueEmail="false"
requiresQuestionAndAnswer="false" minRequiredPasswordLength="1"
minRequiredNonalphanumericCharacters="0" applicationName="MVCQuick" passwordFormat="Hashed" />
</providers>
</membership>
重构
1、Model
修改实体类,继承MVCQuick.Framework.EntityBase
使用 MVCQuick.Framework.Repository替换Entity Framework
2、Controller
使用 MVCQuick.Framework.Container将Controller与数据访问对象解藕
3、View
保持原状,修改部分字段
4、Configuration
将默认成员提供者、角色提供者替换为MVCQuick.Framework.Security.ClassicMembershipProvider、MVCQuick.Framework.Security.ClassicRoleProvider
增加日志功能
5、Test
测试运行效果
源代码下载:http://mvcquick.codeplex.com/