关闭顶部展开顶部

浅析电子商务的框架_.Net教程

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:解读多语言开发的个人体验
在文章的前面,先定义一下,这里谈的语言(A)指的是语言以及使用该语言可以很容易调用的基本类库及可免费或低代价获得的第三方类库及开源类库(B)。在很多情况下谈语言和谈语言的选择时的语境,都是指的B。 选择多语言混合开发的一个目的是为了使用其中某

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

该网站具有一般商务网站的特征

这里先讲讲他的框架

数据访问层

用的的存储过程操作数据库的存储,有一个Shop.DataAccess类库专门(注意我这里将原文的命名空间改为shop了)

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

类库下的DataAccessBase类是一个基类,该类库几乎所有的类都会继承它,有两个属性一个是存储过程,以及返回数据库的连接字符串

注意:这里是从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类

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

但是对于存储过程很多,一个类来存储肯定显得不够,个人建议在细分,控制一个类中的存储过程不超过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
        }
    }
}

 

 

 

类库中的DataBaseHelper类

重新包装了SQLHelper类的功能,因为并不是所有SQLHelper类功能我们都会用到,我们只应用到了一小部分

以下为引用的内容:
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>
        
/// 构造函数
        
/// </summary>
        
/// <param name="storedproceducename">赋值存储过程</param>
        public DataBaseHelper(string storedproceducename)
        {
            
this.StoredprocedureName = storedproceducename;
        }

        
/// <summary>
        
/// 无数据返回
        
/// </summary>
        
/// <param name="transaction"></param>
        public void Run(SqlTransaction transaction)
        {
            SqlHelper.ExecuteNonQuery(transaction, CommandType.StoredProcedure, 
this.StoredprocedureName, this.Parameters);
        }

        
/// <summary>
        
/// 无数据返回,自己提供参数
        
/// </summary>
        
/// <param name="transaction"></param>
        
/// <param name="Parameters">参数</param>
        public void Run(SqlTransaction transaction, SqlParameter[] Parameters)
        {
            SqlHelper.ExecuteNonQuery(transaction, CommandType.StoredProcedure, 
this.StoredprocedureName, Parameters);
        }

        
/// <summary>
        
/// 有参数返回(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>
        
/// 无参数返回(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;
        }
    }
}

业务逻辑层

Shop.BusinessLogic

这里涉及到要编写接口

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

这里编辑一个接口是因为所有该类库的类都会调用一个函数来实现获得数据

以下为引用的内容:
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对请求的处理方式
原本这是《关于ASP.NET Routing的几点内容》一文中的一节,不过等写完这节之后发现这块内容已经比较完整了,而且它本身也是独立和最为常见的部分,因此我把它提取出来单独成文。至于那片文章的其他部分我会再修改一下,明天发布。希望这些内容会对您理解ASP.

来源:模板无忧//所属分类:.Net教程/更新时间:2009-12-08
loading.. 评论加载中....
相关.Net教程
闂備焦鐪归崺鍕垂闁秵鍋ら柡鍥舵緛缂嶆牠鏌涢埄鍐姇闁抽攱甯楅妵鍕即濡も偓娴滄儳顪冮妶蹇曠Ф闁瑰嚖鎷�
婵犵數鍋涢顓熸叏椤撱垹纾婚柟鐐灱濡插牓鏌¢崒婵囩《濠⒀勭⊕娣囧﹪鎳犻澶嗗亾濠靛鐓熼柕蹇婃櫅閻忔煡鏌熼崙銈嗗
婵犵數濮烽。浠嬪焵椤掆偓閸熷潡鍩€椤掑嫷妫戠紒杈╁仜椤撳吋寰勭€n亝顓鹃柣搴f嚀鐎氼厽绔熼崱娆愬床濞戞柧绶氶弻锝夊閳轰胶浼堥梺鐟板殩閹凤拷
婵犵數濮烽。浠嬪焵椤掆偓閸熷潡鍩€椤掑嫷妫戠紒杈╁仜椤撳吋寰勬繝鍕靛悑闂備浇顕栭崹搴ㄥ礋椤撗勑氶梻浣筋嚙闁帮絽岣胯铻炴繛鎴欏灪閸嬪鏌ㄩ悤鍌涘
闂傚倷鑳舵灙缂佺粯鍔欓獮濠冩償閵娿儳鍔﹀銈嗗笒閸婂摜鏁崼鏇炵閻庢稒岣块惌鎺斺偓瑙勬礃缁诲牓寮幘缁樻櫢闁跨噦鎷�
闂傚倷鑳舵灙缂佺粯鍔欓獮濠冩償閵娿儳鍔﹀銈嗗坊閸嬫捇鏌涘顒夊剳缂侇喖锕弫鍌炲礈瑜忛悡鎾绘煟鎼搭垳宀涢柡鍛箞閹苯鈻庨幋鐘碉紳婵炴挻鑹鹃敃銉р偓姘炬嫹
闂傚倷娴囬妴鈧柛瀣尰閵囧嫰寮介妸褉妲堥梺浼欏瘜閸o綁寮诲☉妯锋斀闁归偊浜為懗铏圭磽娴i潧濡芥俊鐐舵椤曪綁濡搁埡濠冩櫖濠电偛妫欓崹鐢电箔閿熺姵鈷戦柛婵嗗閳ь剙顭烽獮濠囧箻閼告娼熼梺璺ㄥ櫐閹凤拷
闂傚倷绀侀幖顐﹀疮閻楀牊鍙忓瀣捣缁€濠傤熆閼搁潧濮堥柣鎿勭秮閹娼幏宀婂妳濠电偛鐪伴崐鏇㈡箒闂佹寧绻傚Λ娆戠矆閳ь剟姊洪崨濞氭垿鎮ч悩鑼殾闁规壆澧楅弲鎼佹煥閻曞倹瀚�
濠电姷顣藉Σ鍛村垂椤忓牆绀堟繝闈涙-閻斿棙淇婇姘倯閻庢氨绮妵鍕箻鐎靛摜鐣洪柣搴㈢啲閹凤拷
婵犵數濮烽。浠嬪焵椤掆偓閸熷潡鍩€椤掑嫷妫戠紒杈╁仜椤撳ジ宕堕妸銉紩婵$偑鍊栭幐鑽ゆ崲閸愵亖鍋撳铏彧濞e洤锕、娑樜旈埀顒佹櫠閸欏绡€妞ゎ偒鍠楃€氾拷
濠电姷顣藉Σ鍛村垂椤忓牆绀堟繝闈涙-閻斿棙鎱ㄥ璇蹭壕閻庤娲﹂崜鐔笺€佸▎鎾崇闁绘挸绨堕崑鎾绘偨閸涘﹦鍘搁梺鍓插亝缁诲嫬鐡┑鐘愁問閸n垶骞忛敓锟�
濠电姷顣藉Σ鍛村垂椤忓牆绀堟繝闈涙-閻斿棙鎱ㄥ璇蹭壕闂佸搫鑻幊姗€宕洪埀顒併亜閹哄棗浜鹃梺瀹狀嚙闁帮綁鐛幋锕€绠涢梻鍫熺⊕椤斿棝姊绘担鍛婃儓閻庢碍鎮傞獮蹇涙晸閿燂拷
濠电姷顣藉Σ鍛村垂椤忓牆绀堟繝闈涙-閻斿棙鎱ㄥ璇蹭壕閻庤娲╃紞渚€鐛€n亖鏀介柛顐亗缁憋拷
婵犵數濮烽。浠嬪焵椤掆偓閸熷潡鍩€椤掑嫷妫戠紒杈╁仜椤撳吋寰勬繝鍕幀闂備胶鎳撻悺銊ф崲閸曨垼鏁傞悗娑櫭肩换鍡樸亜閺嶎煈娈斿褍寮剁换婵嬶綖椤旇棄顏�
闂備浇顕ф鎼佸储濠婂牆绀堟繝闈涱儐閸嬪鏌熼幆鐗堫棄闁活厽顨呴埞鎴︽偐閹绘帗娈梺濂告涧缂嶅﹪寮婚妶澶嬪殟闁靛鍎遍~宥夋⒑缂佹ḿ澹勭紓宥勭閻e嘲鈻庨幘瀛樻闂佽法鍣﹂幏锟�
UB闂傚倷绀佸﹢杈╁垝椤栫偛绀夋俊銈呮噽瀹撲線鏌涢妷銏℃珕閻庢碍宀搁幃妤€鈽夊▍铏灴閿濈偤鏁撻敓锟�
闂傚倷娴囨竟鍫熴仈缁嬫娼栧┑鐘崇閻掗箖鎮楅悽鐢点€婇柛瀣崌閻涱噣宕归鍙ョ棯婵犵數濮崑鎾绘煥閻曞倹瀚�
闂備浇顕ф鍝ョ不瀹ュ鍨傞柛婵嗗閼板潡鏌涢姀銏犳
闂傚倷绀侀幉鈥愁潖缂佹ɑ鍙忓瀣捣缁€濠傤熆鐠鸿櫣鐏遍柛妤佺缁绘盯宕卞Δ鈧銏ゆ煕閻愬樊妲圭紒缁樼〒缁辨瑩鎮╅崫鍕腐闂備胶枪妤犲繘骞忛敓锟�
缂傚倸鍊搁崐鐑芥倿閿曞倹鍋¢柨鏇炲€搁崹鍌涚節婵犲倸顏い鈺呮敱閵囧嫰骞掑鍥舵М缂備焦褰冨﹢閬嶅焵椤掑倸浠柛濠冪箘缁辨挸顫濇0婵囨櫓闂佽法鍣﹂幏锟�
©2017 www.mb5u.com濠电姷顣藉Σ鍛村垂椤忓牆绀堟繝闈涙-閻斿棙鎱ㄥ璇蹭壕閻庢鍣崳锝夊箖閳哄懎绠甸柟鐑樻尭閻︼拷
闂傚倷娴囬妴鈧柛瀣崌閺岀喖顢涘⿰鍐炬毉濡炪們鍎婚幏锟�&闂傚倷绀侀幉锛勬暜閹烘嚦娑㈠籍閸噥妫呴梺璺ㄥ櫐閹凤拷