您的位置:首页 > 编程语言 > Java开发

ExtJS4.1+MVC3+Spring.NET1.3+EF5 整合一:构建项目框架

2013-03-25 20:48 309 查看
修改说明:

(1).本文基于Spring.NET 1.3.2正式版,但该版本并不支持ASP.NET MVC4,目前仅有2.0支持,所以,把项目由MVC4改为MVC3,请理解。实际上,我是想使用MVC4的WEB API,这个有时间写一篇单独的文章,仅仅是在ExtJS与MVC通信的方式上不太一样而已,其他基本上一样。

(2).本来打算是以讲解主要功能为主,但自己也要用到这个项目,所以又加了几个功能。

1 项目开发环境

开发环境:Win7+VS2012

技术框架:ExtJS4.1+ASP.NET MVC3+Spring.NET1.3.2+Entity Framework5.0

数据库:SQLite

涉及到的其他技术或框架:log4net、AutoMapper

为了测试和共享方便,本文使用SQLite轻量级数据库,需要的话可以随时移植到其他关系型数据库中。

2 项目功能介绍

本人准备以开发一个中小型企业网站的主要功能来一步一步讲解,从数据持久化、业务逻辑处理,到用户展示各个环节,并解决每个环节中遇到的问题。

项目分为两大模块:前台(普通用户)、后台(管理员管理),在ASP.NET MVC中通过创建Area来实现多个模块的功能。

本文主要以开发后台演示,有时间的话我会完善前台模块的功能。

主要功能:

1) 网站以发布文章(新闻、资讯、留言等)为主,允许用户进行评论以及管理员回复;

2) 发布文章时允许上传视频、图片,并能自动扣取视频中的图片,对图片自动缩放、压缩处理;

3) 网站的另一个功能是人才招聘功能,并允许用户登记和管理员查询;

4) 后台管理时,不同的管理员具有不同的权限,以角色实现。

3 数据库结构



4 构建项目结构

先看下项目的整体结构:



此架构与传统三层相似,EF5是持久层,Dao是数据访问层,Service是服务层,Web则是表现层。简单描述如下(后文在用到的时候会详解):

EF5:使用微软最前的Entity Framework 5.0框架技术,其中会自动生成Model实体类;

IDao:数据访问层接口,仅允许服务层引用;

Dao:数据访问层接口实现,使用Spring.NET向Service层中注入;

IService:服务层接口,仅允许表现层引用;

Service:服务层接口实现,与Dao层相信,使用Spring.NET向Web层注入;

DTO:数据传递对象,用于在ExtJS与Action、Action与Service传递数据时使用。

Form:在Action中使用,类似于Model类,除了用于接受用户的请求参数以外,还封装了请求数据的有效性校验。

Utility:整个项目基础类,封装一些常用的类,在其他项目中使用时引用。

Web:表现层,这里就是ASP.NET MVC3项目。

解决方案及这8个项目创建好后,增加项目之间引用:

1) IDao引用EF5(使用其中的实体类);

2) Dao引用EF5(使用其中的实体类)和IDao(实现数据访问层接口);

3) IService引用EF5(使用其中的实体类)、IDao和DTO;

4) Service引用EF5(使用其中的实体类)、IDao、IService(实现服务层接口)和DTO;

5) DTO不引用任何项目,属于值对象;

6) Form引用IService,实现分页接口和数据校验功能;

6) Web层引用其他所有层(理论上只需要引用IService、DTO和Form,全部引用只是为了方便引入各个项目中的DLL)。

7) 对于其他工具的引用(如log4net、spring.net等用的时候再说)。

5 关于项目运行的一些问题

1) 项目访问地址,假设部署在本机中,其端口号是8001,访问地址应是:http://localhost:8001/Manage/Enter/Main.aspx

2) IIS配置的问题,应用程序池应选择.NET Framework 4.0,且是集成模式,如下图所示:



3) Sqlite问题,在配置Sqlite数据源时需要安装:

适用于vs2012:http://system.data.sqlite.org/downloads/1.0.85.0/sqlite-netFx45-setup-bundle-x86-2012-1.0.85.0.exe

适用于vs2013:http://system.data.sqlite.org/blobs/1.0.92.0/sqlite-netFx451-setup-bundle-x86-2013-1.0.92.0.exe

本篇完,稍后下篇开始创建数据库及持久层。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: