日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

淺析電子商務(wù)的框架_.Net教程

編輯Tag賺U幣
教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!

推薦:解讀多語(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 { setget; }

        
//獲得連接字符串
        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 { getset; }

        
/// <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.

來(lái)源:模板無(wú)憂//所屬分類:.Net教程/更新時(shí)間:2009-12-08
相關(guān).Net教程