淺析電子商務(wù)的框架_.Net教程
推薦:解讀多語(yǔ)言開發(fā)的個(gè)人體驗(yàn)在文章的前面,先定義一下,這里談的語(yǔ)言(A)指的是語(yǔ)言以及使用該語(yǔ)言可以很容易調(diào)用的基本類庫(kù)及可免費(fèi)或低代價(jià)獲得的第三方類庫(kù)及開源類庫(kù)(B)。在很多情況下談?wù)Z言和談?wù)Z言的選擇時(shí)的語(yǔ)境,都是指的B。 選擇多語(yǔ)言混合開發(fā)的一個(gè)目的是為了使用其中某
前些陣子照著《Pro ASP.NET 2.0 E-Commerce in C#2005》書編輯了一個(gè)商務(wù)系統(tǒng)網(wǎng)站,想總結(jié)一下學(xué)習(xí)到的所學(xué)的知識(shí)。
該網(wǎng)站具有一般商務(wù)網(wǎng)站的特征
這里先講講他的框架
數(shù)據(jù)訪問層
用的的存儲(chǔ)過程操作數(shù)據(jù)庫(kù)的存儲(chǔ),有一個(gè)Shop.DataAccess類庫(kù)專門(注意我這里將原文的命名空間改為shop了)
該類庫(kù)使用了一個(gè)組件來(lái)封裝對(duì)數(shù)據(jù)庫(kù)的操作 為 Microsoft Data Access Application Block, 其實(shí)就是將SQLHelper.cs復(fù)制到該類下就行了,該類可以自動(dòng)管理存儲(chǔ)過程的連接,參數(shù)和名稱。
類庫(kù)下的DataAccessBase類是一個(gè)基類,該類庫(kù)幾乎所有的類都會(huì)繼承它,有兩個(gè)屬性一個(gè)是存儲(chǔ)過程,以及返回?cái)?shù)據(jù)庫(kù)的連接字符串
注意:這里是從web.config文件中獲取與數(shù)據(jù)庫(kù)連接的字符串,但是在類中無(wú)法引用到Configuration類,所以我們要額外的添加引用System.Configuration.dll程序集
| 以下為引用的內(nèi)容: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Configuration; namespace Shop.DataAccess { public class DataAccessBase { //存儲(chǔ)過程的名稱 protected string StoredprocedureName { set; get; } //獲得連接字符串 protected string ConnectionString { get { return ConfigurationManager.ConnectionStrings["db_shopConnectionString"].ToString(); } } } } |
類庫(kù)中的StoreProcedure類
利用枚舉存儲(chǔ)編寫的存儲(chǔ)過程名稱,這樣便于更改及管理
但是對(duì)于存儲(chǔ)過程很多,一個(gè)類來(lái)存儲(chǔ)肯定顯得不夠,個(gè)人建議在細(xì)分,控制一個(gè)類中的存儲(chǔ)過程不超過20個(gè)
例如:
StoreProcedure_User,StoreProcedure_Product,StoreProcedure_Orders
| 以下為引用的內(nèi)容: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Shop.DataAccess { public class StoredProcedure { public enum Name { ProductByID_Select, Products_Select, Products_SelectSerach, ShoppingCart_Select, ShoppingCart_Insert, ShoppingCart_Update, ShoppingCart_Delete, EndUser_Insert, EndUserLogin_Select, Address_Select, ContactInformation_Select, AdminLogin_Select, Product_Insert, ProductCategory_Select, Product_Update, Orders_Select, OrderDetails_Select, OrderAll_Select, OrderStatus_Select, OrdersByID_Select, Orders_Update, ProductPromotion_Select } } } |
類庫(kù)中的DataBaseHelper類
重新包裝了SQLHelper類的功能,因?yàn)椴⒉皇撬蠸QLHelper類功能我們都會(huì)用到,我們只應(yīng)用到了一小部分
| 以下為引用的內(nèi)容: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; using Microsoft.ApplicationBlocks.Data; using System.Data; namespace Shop.DataAccess { public class DataBaseHelper:DataAccessBase { public SqlParameter[] Parameters { get; set; } /// <summary> /// 構(gòu)造函數(shù) /// </summary> /// <param name="storedproceducename">賦值存儲(chǔ)過程</param> public DataBaseHelper(string storedproceducename) { this.StoredprocedureName = storedproceducename; } /// <summary> /// 無(wú)數(shù)據(jù)返回 /// </summary> /// <param name="transaction"></param> public void Run(SqlTransaction transaction) { SqlHelper.ExecuteNonQuery(transaction, CommandType.StoredProcedure, this.StoredprocedureName, this.Parameters); } /// <summary> /// 無(wú)數(shù)據(jù)返回,自己提供參數(shù) /// </summary> /// <param name="transaction"></param> /// <param name="Parameters">參數(shù)</param> public void Run(SqlTransaction transaction, SqlParameter[] Parameters) { SqlHelper.ExecuteNonQuery(transaction, CommandType.StoredProcedure, this.StoredprocedureName, Parameters); } /// <summary> /// 有參數(shù)返回(DataSet) /// </summary> /// <param name="connectionstring"></param> /// <param name="parameters"></param> /// <returns></returns> public DataSet Run(string connectionstring, SqlParameter[] parameters) { DataSet ds; ds = SqlHelper.ExecuteDataset(connectionstring, this.StoredprocedureName, parameters); return ds; } /// <summary> /// 返回第一行第一列的值 /// </summary> /// <param name="connectionstring"></param> /// <param name="parameters"></param> /// <returns></returns> public object RunScalar(string connectionstring, SqlParameter[] parameters) { object obj; obj = SqlHelper.ExecuteScalar(connectionstring, this.StoredprocedureName, parameters); return obj; } /// <summary> /// 返回第一行第一列的值 /// </summary> /// <param name="transaction"></param> /// <param name="parameters"></param> /// <returns></returns> public object RunScalar(SqlTransaction transaction, SqlParameter[] parameters) { object obj; obj = SqlHelper.ExecuteScalar(transaction, this.StoredprocedureName, parameters); return obj; } /// <summary> /// 無(wú)參數(shù)返回(DataSet) /// </summary> /// <param name="connectionstring"></param> /// <returns></returns> public DataSet Run(string connectionstring) { DataSet ds; ds = SqlHelper.ExecuteDataset(connectionstring, CommandType.StoredProcedure, this.StoredprocedureName); return ds; } /// <summary> /// 無(wú)返回值 /// </summary> public void Run() { SqlHelper.ExecuteNonQuery(base.ConnectionString, CommandType.StoredProcedure, this.StoredprocedureName, this.Parameters); } /// <summary> /// 返回是SqlDataReader /// </summary> /// <param name="parameters"></param> /// <returns></returns> public SqlDataReader Run(SqlParameter[] parameters) { SqlDataReader dr; dr = SqlHelper.ExecuteReader(base.ConnectionString, CommandType.StoredProcedure, this.StoredprocedureName, parameters); return dr; } } } |
業(yè)務(wù)邏輯層
Shop.BusinessLogic
這里涉及到要編寫接口
首先了解下什么是接口,接口就是只包含抽象成員的應(yīng)用類型,接口中的成員可以是方法,索引器,屬性和事件,而不可以是包含任何常量,構(gòu)造函數(shù),靜態(tài)成員或數(shù)據(jù)字段。接口只包含這些成員的聲明。而具體的實(shí)現(xiàn)必須從實(shí)現(xiàn)該接口的任何類中進(jìn)行初始化。
這里編輯一個(gè)接口是因?yàn)樗性擃悗?kù)的類都會(huì)調(diào)用一個(gè)函數(shù)來(lái)實(shí)現(xiàn)獲得數(shù)據(jù)
| 以下為引用的內(nèi)容: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Shop.BusinessLogic { interface IBusinessLogic { void Invoke(); } } |
Shop.Common類庫(kù)是編寫一個(gè)公共類
Shop.Operational自定義一些類
分享:解析ASP.NET Routing對(duì)請(qǐng)求的處理方式原本這是《關(guān)于ASP.NET Routing的幾點(diǎn)內(nèi)容》一文中的一節(jié),不過等寫完這節(jié)之后發(fā)現(xiàn)這塊內(nèi)容已經(jīng)比較完整了,而且它本身也是獨(dú)立和最為常見的部分,因此我把它提取出來(lái)單獨(dú)成文。至于那片文章的其他部分我會(huì)再修改一下,明天發(fā)布。希望這些內(nèi)容會(huì)對(duì)您理解ASP.
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發(fā)送Email實(shí)例(可帶附件)
- js實(shí)現(xiàn)廣告漂浮效果的小例子
- asp.net Repeater 數(shù)據(jù)綁定的具體實(shí)現(xiàn)
- Asp.Net 無(wú)刷新文件上傳并顯示進(jìn)度條的實(shí)現(xiàn)方法及思路
- Asp.net獲取客戶端IP常見代碼存在的偽造IP問題探討
- VS2010 水晶報(bào)表的使用方法
- ASP.NET中操作SQL數(shù)據(jù)庫(kù)(連接字符串的配置及獲取)
- asp.net頁(yè)面?zhèn)髦禍y(cè)試實(shí)例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲(chǔ)過程實(shí)現(xiàn)分頁(yè)示例代碼
.Net教程Rss訂閱編程教程搜索
.Net教程推薦
- ASP.NET學(xué)習(xí)篇(1)——開篇
- 淺析微軟 ASP.NET 環(huán)境下的頁(yè)面驗(yàn)證控件
- ASP.Net網(wǎng)絡(luò)數(shù)據(jù)庫(kù):連接到數(shù)據(jù)庫(kù)
- 基于.NET平臺(tái)的分層架構(gòu)實(shí)戰(zhàn)(二)需求分析與數(shù)據(jù)庫(kù)設(shè)計(jì)
- 使用函數(shù)傳遞參數(shù)來(lái)執(zhí)行相應(yīng)的數(shù)據(jù)庫(kù)操作
- ASP.NET web.config中數(shù)據(jù)庫(kù)連接字符串connectionStrings節(jié)的配置方法
- 關(guān)于Gridview的多種使用方法總結(jié)
- 微軟新版開發(fā)工具VS 2008 beta2功能定案
- 解析標(biāo)題太長(zhǎng)用省略號(hào)來(lái)代替簡(jiǎn)單辦法
- .Net中消除Dll中的dependency
- 相關(guān)鏈接:
- 教程說明:
.Net教程-淺析電子商務(wù)的框架
。