电子商务之框架分析(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 { set; get; } //取得连接字符串 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 { get; set; } /// /// 构造函数 /// /// 赋值存储进程 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:内容,进程,参数,都会,接口
评论加载中...
|