浅谈Asp.net多层架构中的变量引用与传递

Asp.net的多层架构主要是为了解决数据层,逻辑层,表示层等之间的关系。我的做法是这样的:首先建立一个DataCore的基类。基类里面封装了一些低层的数据库的基本操作,比如说数据库联接,调用存储过程等等。在这里面有一个地方值得注意,通过对一个函数的重载可以实现调用不同功能的存储过程。以下代码示例:

以下为引用的内容:
protected int RunProcedure(string storedProcName, IDataParameter[] parameters, out introwsAffected )
{
    int result;
    Connection.Open();
    SqlCommand command = BuildIntCommand( storedProcName, parameters );
    rowsAffected = command.ExecuteNonQuery();
    result = (int)command.Parameters["ReturnValue"].Value;
    Connection.Close();
    return result;
}
protected SqlDataReader RunProcedure(string storedProcName, IDataParameter[] parameters )
{
    SqlDataReader returnReader;
    Connection.Open();
    SqlCommand command = BuildQueryCommand( storedProcName, parameters );
    command.CommandType = CommandType.StoredProcedure;
    returnReader = command.ExecuteReader();
    //Connection.Close();
    return returnReader;
}
protected DataSet RunProcedure(string storedProcName, IDataParameter[] parameters,string tableName )
{
    DataSet dataSet = new DataSet();
    Connection.Open();
    SqlDataAdapter sqlDA = new SqlDataAdapter();
    sqlDA.SelectCommand = BuildQueryCommand( storedProcName, parameters );
    sqlDA.Fill( dataSet, tableName );
    Connection.Close();
    return dataSet;
}
protected void RunProcedure(string storedProcName, IDataParameter[] parameters,DataSet dataSet, string tableName )
{
    Connection.Open();
    SqlDataAdapter sqlDA = new SqlDataAdapter();
    sqlDA.SelectCommand = BuildIntCommand( storedProcName, parameters );
    sqlDA.Fill( dataSet, tableName );
    Connection.Close();
}
道理很简单,一看就懂。对于以后的操作有好处的。

其次是要建立逻辑层,这个逻辑层基本上就是实例化数据层DataCore之后为表示层返回一些DataSet,DataReader之类或是执行一些insert,update,delete之类语句。这个逻辑层也是为了区分整个Project下面不同功能模块。比如说用户模块起名叫做UserModel.cs,新闻模块叫做NewsModel.cs之类。逻辑层的另一个好处就是可以为表示层建立可以多次实例化的同一个对象或是方法。比如说User类,通过ID或是Username 查询并建立的对象可以被表示层多次调用。

最后是表示层,表示层的功能就是完成页面逻辑。主要是接受客户端数据然后经过简单整合和判断,传递给逻辑层处理。同样,接收逻辑层传递来的Dataset或DataReader,表示在前台页面。

未完,详细原文:http://www.evget.com/zh-CN/Info/ReadInfo.aspx?id=9120

你可能感兴趣的:(.net,asp.net,asp)