使用MVC4,Ninject,EF,Moq,构建一个真实的应用电子商务SportsStore
2013-06-01 23:24
501 查看
使用MVC4,Ninject,EF,Moq,构建一个真实的应用电子商务SportsStore(一)
如果你已经准备好了开始MVC4的远航,那我们就闲话少说,背起行装,踏上征途吧!完成SportsStore电子商务平台,你将学会:
1.使用MVC4开发你的应用项目.
2.使用Ninject完成IOC注入.
3.使用Entity Framework 操作Sql server 数据库.
4.使用Moq测试你的项目。
好了,现在请启动你的VS2012吧!
我们首先要创建的是一个空的Visual Studio solution。在这个solution中,我们将创建3个工程。
1. 一个域模块工程。
2.一个MVC4应用。
3.一个单元测试工程。
现在我们就创建一个名为SportsStore的空solution,它看起来像下面的截图:
工程名 | VS工程模板 | 目的 |
SportsStore.Domain | Class Library | 域Entities和logic; 使用Entity Framework 创建一个repository,并将其设置为一个持久层。 |
SportsStore.WebUI | ASP.NET MVC 4 Web Application | controllers and views |
SportsStore.UnitTests | Unit Test Project | unit tests |
在SportsStore.Domain建两个文件夹Abstract,Entities. 在SportsStore.WebUI中建一个文件夹Infrastructure. 如下图:
到这一步我们的项目框架的雏形已经出来了,现在我们要为它添加引用。在solusion管理器中,一次右击
每个工程,选择Add Reference。
工程名 | 工具依赖 | 工程依赖 | 微软引用 |
SportsStore.Domain | None | None | System.Web.Mvc System.ComponentModel .DataAnnotations |
SportsStore.WebUI | Ninject Moq | SportsStore.Domain | None |
SportsStore.UnitTests | Ninject Moq | SportsStore.Domain SportsStore.WebUI | System.Web.Mvc System.Web Microsoft.CSharp |
设置DI Container
在我们这个应用中,对MVC框架做了很多扩展,这也是我们学习的重点内容,掌握了这些知识点,
我们再以后的开发项目中,就能得心应手,构建出稳定的,易于扩展和维护的企业应用架构。
右击SportsStore.WebUI工程的Infrastructure文件夹,选择添加类,类名为NinjectControllerFactory,
代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
using SportsStore.Domain.Abstract;
using SportsStore.Domain.Entities;
using Moq;
using Ninject;
namespace SportsStore.WebUI.Infrastructure
{
public class NinjectControllerFactory: DefaultControllerFactory
{
private IKernel ninjectKernel;
public NinjectControllerFactory() {
ninjectKernel = new StandardKernel();
AddBindings();
}
protected override IController GetControllerInstance(RequestContext
requestContext, Type controllerType) {
return controllerType == null ? null : (IController)ninjectKernel.Get(controllerType);
}
private void AddBindings() {
// put bindings here
}
}
}
我们现在还没有添加任何绑定,但是,当我们需要时,能使用 AddBindings 方法去添加. 现在,我们需要去
告诉 MVC 我们打算使用 NinjectController class 去创建Controller对象,要实现这一点,请打开SportsStore.WebUI工程的Global.asax.cs 文件,添加代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
using SportsStore.WebUI.Infrastructure;
namespace SportsStore.WebUI
{
// 注意: 有关启用 IIS6 或 IIS7 经典模式的说明,
// 请访问 http://go.microsoft.com/?LinkId=9394801
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
//Added by wangzhiyue
ControllerBuilder.Current.SetControllerFactory(new
NinjectControllerFactory());
//Added end
AuthConfig.RegisterAuth();
}
}
}
启动域模块
现在我们将要启动域模块,在MVC应用中应用领域模型,能使每一件事情都变得完美,因此,域 也就必然 是启动应用的最完美的地方。因为我们要做的电子商务应用,所以,我们需要一个产品,这是在明显不过的事了。右击我们刚刚建立的Entities文件夹,然后新建一个C#类,命名为Product ,代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SportsStore.Domain.Entities
{
public class Product
{
public int ProductID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public decimal Price { get; set; }
public string Category { get; set; }
}
}
注意这个public关键字,因为我们将域模型分离为独立的工程,所以将访问关键字定义为public,你可以不
这么做,但这样做有助于模块的分离,使项目层次鲜明、简洁。
如果你觉得从我的文章中学到了知识,那么请继续关注我续篇!
相关文章推荐
- 使用MVC4,Ninject,EF,Moq,构建一个真实的应用电子商务SportsStore(四)
- 使用MVC4,Ninject,EF,Moq,构建一个真实的应用电子商务SportsStore(五)
- 使用MVC4,Ninject,EF,Moq,构建一个真实的应用电子商务SportsStore(三)
- 使用MVC4,Ninject,EF,Moq,构建一个真实的应用电子商务SportsStore(八)
- 使用MVC4,Ninject,EF,Moq,构建一个真实的应用电子商务SportsStore(九)
- 使用MVC4,Ninject,EF,Moq,构建一个真实的应用电子商务SportsStore(十一)
- [转:Pro ASP.NET MVC 5中的例子]使用MVC4,Ninject,EF,Moq,构建一个真实的应用电子商务SportsStore
- 使用MVC4,Ninject,EF,Moq,构建一个真实的应用电子商务SportsStore(七)
- 使用MVC4,Ninject,EF,Moq,构建一个真实的应用电子商务SportsStore(七)
- 使用MVC4,Ninject,EF,Moq,构建一个真实的应用电子商务SportsStore(六)
- 使用MVC4,Ninject,EF,Moq,构建一个真实的应用电子商务SportsStore(十)
- 使用MVC4,Ninject,EF,Moq,构建一个真实的应用电子商务SportsStore(二)
- 使用MVC4,Ninject,EF,Moq,构建一个真实的应用电子商务SportsStore
- 构建一个真实的应用电子商务SportsStore(八)
- 构建一个真实的应用电子商务SportsStore(十一)
- 构建一个真实的应用电子商务SportsStore(十)
- 构建一个真实的应用电子商务SportsStore(七)
- 构建一个真实的应用电子商务SportsStore4
- 构建一个真实的应用电子商务SportsStore3
- 构建一个真实的应用电子商务SportsStore9