欧美日韩精品在线,国内精品久久久久久久久,一级毛片恃级毛片直播,清纯唯美亚洲综合欧美色

淺析電子商務的框架_.Net教程

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

推薦:解讀多語言開發(fā)的個人體驗
在文章的前面,先定義一下,這里談的語言(A)指的是語言以及使用該語言可以很容易調(diào)用的基本類庫及可免費或低代價獲得的第三方類庫及開源類庫(B)。在很多情況下談語言和談語言的選擇時的語境,都是指的B。 選擇多語言混合開發(fā)的一個目的是為了使用其中某

前些陣子照著《Pro ASP.NET 2.0 E-Commerce in C#2005》書編輯了一個商務系統(tǒng)網(wǎng)站,想總結(jié)一下學習到的所學的知識。

該網(wǎng)站具有一般商務網(wǎng)站的特征

這里先講講他的框架

數(shù)據(jù)訪問層

用的的存儲過程操作數(shù)據(jù)庫的存儲,有一個Shop.DataAccess類庫專門(注意我這里將原文的命名空間改為shop了)

該類庫使用了一個組件來封裝對數(shù)據(jù)庫的操作 為 Microsoft Data Access Application Block, 其實就是將SQLHelper.cs復制到該類下就行了,該類可以自動管理存儲過程的連接,參數(shù)和名稱。

類庫下的DataAccessBase類是一個基類,該類庫幾乎所有的類都會繼承它,有兩個屬性一個是存儲過程,以及返回數(shù)據(jù)庫的連接字符串

注意:這里是從web.config文件中獲取與數(shù)據(jù)庫連接的字符串,但是在類中無法引用到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
    {
        
//存儲過程的名稱
        protected string StoredprocedureName { setget; }

        
//獲得連接字符串
        protected string ConnectionString
        {
            
get
            {
                
return ConfigurationManager.ConnectionStrings["db_shopConnectionString"].ToString();
            }
        }
    }

}

類庫中的StoreProcedure類

利用枚舉存儲編寫的存儲過程名稱,這樣便于更改及管理

但是對于存儲過程很多,一個類來存儲肯定顯得不夠,個人建議在細分,控制一個類中的存儲過程不超過20個

例如:

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
        }
    }
}

 

 

 

類庫中的DataBaseHelper類

重新包裝了SQLHelper類的功能,因為并不是所有SQLHelper類功能我們都會用到,我們只應用到了一小部分

以下為引用的內(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">賦值存儲過程</param>
        public DataBaseHelper(string storedproceducename)
        {
            
this.StoredprocedureName = storedproceducename;
        }

        
/// <summary>
        
/// 無數(shù)據(jù)返回
        
/// </summary>
        
/// <param name="transaction"></param>
        public void Run(SqlTransaction transaction)
        {
            SqlHelper.ExecuteNonQuery(transaction, CommandType.StoredProcedure, 
this.StoredprocedureName, this.Parameters);
        }

        
/// <summary>
        
/// 無數(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>
        
/// 無參數(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>
        
/// 無返回值
        
/// </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è)務邏輯層

Shop.BusinessLogic

這里涉及到要編寫接口

首先了解下什么是接口,接口就是只包含抽象成員的應用類型,接口中的成員可以是方法,索引器,屬性和事件,而不可以是包含任何常量,構(gòu)造函數(shù),靜態(tài)成員或數(shù)據(jù)字段。接口只包含這些成員的聲明。而具體的實現(xiàn)必須從實現(xiàn)該接口的任何類中進行初始化。

這里編輯一個接口是因為所有該類庫的類都會調(diào)用一個函數(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類庫是編寫一個公共類

Shop.Operational自定義一些類

 

分享:解析ASP.NET Routing對請求的處理方式
原本這是《關(guān)于ASP.NET Routing的幾點內(nèi)容》一文中的一節(jié),不過等寫完這節(jié)之后發(fā)現(xiàn)這塊內(nèi)容已經(jīng)比較完整了,而且它本身也是獨立和最為常見的部分,因此我把它提取出來單獨成文。至于那片文章的其他部分我會再修改一下,明天發(fā)布。希望這些內(nèi)容會對您理解ASP.

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