唐山网站建设

设为主页 加入收藏 繁體中文

电子商务之框架分析(1)

核心提示:前些阵子照着《Pro ASP.NET 2.0 E-Commerce in C#2005》书编辑了1个商务系统网站,想总结1下学习到的所学的知识。

前些阵子照着《Pro ASP.NET 2.0 E-Commerce in C#2005》书编辑了1个商务系统网站,想总结1下学习到的所学的知识。

该网站具有1般商务网站的特点

这里先讲讲他的框架

数据访问层

用的的存储进程操纵数据库的存储,有1个Shop.DataAccess类库专门(留意我这里将原文的命名空间改成shop了)

该类库使用了1个组件来封装对数据库的操纵 为 Microsoft Data Access Application Block, 实在就是将SQLHelper.cs复制到该类下就好了,该类可以自动治理存储进程的连接,参数和名称。

类库下的DataAccessBase类是1个基类,该类库几近所有的类都会继续它,有两个属性1个是存储进程,和返回数据库的连接字符串

留意:这里是从web.config文件中获得与数据库连接的字符串,但是在类中没法援用到Configuration类,所以我们要额外的添加援用System.Configuration.dll程序集

以下为援用的内容:
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类

利用枚举存储编写的存储进程名称,这样便于更改及治理

但是对存储进程很多,1个类来存储肯定显得不够,个人建议在细分,控制1个类中的存储进程不超过20个

例如:

StoreProcedure_User,StoreProcedure_Product,StoreProcedure_Orders

以下为援用的内容:
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
        }
    }
}

1 2 下1页

核心提示:前些阵子照着《Pro ASP.NET 2.0 E-Commerce in C#2005》书编辑了1个商务系统网站,想总结1下学习到的所学的知识。

类库中的DataBaseHelper类

重新包装了SQLHelper类的功能,由于其实不是所有SQLHelper类功能我们都会用到,我们只利用到了1小部份

以下为援用的内容:
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; }

        
/// 
        
/// 构造函数
        
/// 

        
/// 赋值存储进程
        public DataBaseHelper(string storedproceducename)
        {
            
this.StoredprocedureName = storedproceducename;
        }

        
/// 
        
/// 无数据返回
        
/// 

        
/// 
        public void Run(SqlTransaction transaction)
        {
            SqlHelper.ExecuteNonQuery(transaction, CommandType.StoredProcedure, 
this.StoredprocedureName, this.Parameters);
        }

        
/// 
        
/// 无数据返回,自己提供参数
        
/// 

        
/// 
        
/// 参数
        public void Run(SqlTransaction transaction, SqlParameter[] Parameters)
        {
            SqlHelper.ExecuteNonQuery(transaction, CommandType.StoredProcedure, 
this.StoredprocedureName, Parameters);
        }

        
/// 
        
/// 有参数返回(DataSet)
        
/// 

        
/// 
        
/// 
        
/// 
        public DataSet Run(string connectionstring, SqlParameter[] parameters)
        {
            DataSet ds;
            ds 
= SqlHelper.ExecuteDataset(connectionstring, this.StoredprocedureName, parameters);
            
return ds;
        }

        
/// 
        
/// 返回第1行第1列的值
        
/// 

        
/// 
        
/// 
        
/// 
        public object RunScalar(string connectionstring, SqlParameter[] parameters)
        {
            
object obj;
            obj 
= SqlHelper.ExecuteScalar(connectionstring, this.StoredprocedureName, parameters);
            
return obj;
        }

        
/// 
        
/// 返回第1行第1列的值
        
/// 

        
/// 
        
/// 
        
/// 
        public object RunScalar(SqlTransaction transaction, SqlParameter[] parameters)
        {
            
object obj;
            obj 
= SqlHelper.ExecuteScalar(transaction, this.StoredprocedureName, parameters);
            
return obj;
        }

        
/// 
        
/// 无参数返回(DataSet)
        
/// 

        
/// 
        
/// 
        public DataSet Run(string connectionstring)
        {
            DataSet ds;
            ds 
= SqlHelper.ExecuteDataset(connectionstring, CommandType.StoredProcedure, this.StoredprocedureName);
            
return ds;
        }

        
/// 
        
/// 无返回值
        
/// 

        public void Run()
        {
            SqlHelper.ExecuteNonQuery(
base.ConnectionString, CommandType.StoredProcedure, this.StoredprocedureName, this.Parameters);
        }

        
/// 
        
/// 返回是SqlDataReader
        
/// 

        
/// 
        
/// 
        public SqlDataReader Run(SqlParameter[] parameters)
        {
            SqlDataReader dr;
            dr 
= SqlHelper.ExecuteReader(base.ConnectionString, CommandType.StoredProcedure, this.StoredprocedureName, parameters);
            
return dr;
        }
    }
}

业务逻辑层

Shop.BusinessLogic

这里触及到要编写接口

首先了解下甚么是接口,接口就是只包括抽象成员的利用类型,接口中的成员可以是方法,索引器,属性和事件,而不可以是包括任何常量,构造函数,静态成员或数据字段。接口只包括这些成员的声明。而具体的实现必须从实现该接口的任何类中进行初始化。

这里编辑1个接口是由于所有该类库的类都会调用1个函数来实现取得数据

以下为援用的内容:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Shop.BusinessLogic
{
    
inte***ce IBusinessLogic
    {
        
void Invoke();
    }
}

Shop.Common类库是编写1个公共类

Shop.Operational自定义1些类

具体的1些内容留在下面文章分析

作者:小风 原文:http://www.cnblogs.com/couhujia/archive/2009/11/16/1604059.html

上1页 1 2 http://www.fw8.net/
TAG:内容,进程,参数,都会,接口
评论加载中...
内容:
评论者: 验证码: