本項目是用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);
}
}