MVC小型商务网站实例(2)--项目架构
本项目是用Asp.net MVC 2 + Castle + Entity Framework开发。
下面介绍项目结构:
首先是整个解决方案在上文一经有所介绍我就不多废话了。
1. 数据库:这里采用Sqlserver2008
2. 缓存设计:为了减轻数据库的压力,把页面上短期内不太变化的数据进行缓存,从而减少对后台数据库的访问。这采用的是Microsoft企业类库中的Cache模块。
3. MVC框架设计:MVC是Web应用前端的重要架构组成,网站交互的绝大部分内容将集中在这个部分,一套高效而易于扩展和使用的MVC框架是整个网站中重要组成。
数据实体是entity framework生成数据实体:
表比较多,还有我不喜欢关系型数据操作(查询方便维护麻烦),所以没有创建表的数据关联,看起来有点乱。
数据访问这里采用的是Repository模式,现在大多的MVC项目都采用这种方式(如Oxite、 KiGG等)。这里就不多说,我会在接下来的一篇中介绍。
4. SEO(Search Engine Optimize)方案:面向搜索引擎提供网站搜索优化方案。
这里主要是页面的关键字和描述处理。
先定义一个 abstract 的 Controller的基类,该基类中定义了一些网站 SEO 所需的字段:
public abstract class BaseController : Controller, ISiteProvidesBaseService
{
//
// GET: /Base/
private IBaseControllerService _baseControllerService;
#region ISiteProvidesBaseService 成员
public IBaseControllerService BaseControllerService
{
get
{
return this._baseControllerService;
}
set
{
_baseControllerService = value;
ViewData["Page_Title"] = _baseControllerService.ShopName;
ViewData["Page_Description"] = "\"{0}\"".With(_baseControllerService.PageDescription);
}
}
#endregion
public string Message { set { ViewData["Page_Message"] = value; } }
public string Title { set { ViewData["Page_Title"] = value; } }
public string Keywords { set { ViewData["Page_Keywords"] = value; } }
public string Description { set { ViewData["Page_Description"] = value; }}
public virtual void WithTitle(string value)
{
ViewData["Page_Title"] = "{0} - {1}".With(ViewData["Page_Title"], value);
}
public virtual void WithDescription(string value)
{
ViewData["Page_Description"] = "{0} - {1}".With(ViewData["Page_Description"], value);
}
}