ASP.NET高级教程(2.1):转换编程思维

上次的内容说过asp.netasp的最大区别在于编程思维的转换,那么我们现在就来看看如何转换编程思想。以前的web编程从cgi(perl)asp,php,jsp的编程过程都是这样:美工人员给出页面原型,编程人员照页面填空,最后堆起来算完,下次如果原型变动,那么就再修改程序,这样业务逻辑和html页面混在一起,可以说是事倍功半。那么,现在有了asp.net,我们应该怎么做呢?
  
  
  
让我们找个实际的例子,就拿论坛来说吧,先从顶至下看看它的业务逻辑。我们可以把一个论坛视做一个对象,它有自己的属性和方法,常见的属性有名称、贴子数、用户数、版面数等等,这样的话,我们就可以这样来构造论坛对象:
  
  
  namespace MyOwnClass
  
  {
  
  using System;
  
  using System.Data.SQL ;
  
  using System.Data ;
  
  
  ////////////////////////////////////////////////////////////////////
  
  //
  
  // Class Name : BBS
  
  //
  
  // Description:
论坛类,构造一个论坛对象
  
  //
  
  // date: 2000/02/03
  
  //
  
  /// ////////////////////////////////////////////////////////////////
  
  public class BBS
  
  {
  
  //
私有变量
  
  private string m_strTitle ; //bbs
名称
  
  private int m_intForumCount ; //
版面数
  
  private int m_intTopicCount ; //
贴子
  
  private int m_intUserCount ; //
注册用户数
  
  
  //
属性
  
  public string Title
  
  {
  
  get
  
  {
  
  return m_strTitle ;
  
  }
  
  }
  
  
  public int ForumCount
  
  {
  
  get
  
  {
  
  return m_intForumCount ;
  
  }
  
  }
  
  
  public int TopicCount
  
  {
  
  get
  
  {
  
  return m_intTopicCount ;
  
  }
  
  }
  
  
  public int UserCount
  
  {
  
  get
  
  {
  
  return m_intUserCount ;
  
  }
  
  }
  
  
  //
构造函数
  
  public BBS(string a_strTitle)
  
  {
  
  //
  
  // TODO: Add Constructor Logic here
  
  //
  
  m_strTitle = a_strTitle ;
  
  
  //
读取数据库
  
  MyConnection myConn = new MyConnection() ;
  
  SQLCommand myCommand = new SQLCommand() ;
  
  myCommand.ActiveConnection = myConn ;
  
  myCommand.CommandText = "up_GetBBSInfo" ; //
调用存储过程
  
  myCommand.CommandType = CommandType.StoredProcedure ;
  
  
  try
  
  {
  
  myConn.Open() ;
  
  SQLDataReader myReader ;
  
  myCommand.Execute(out myReader) ;
  
  if (myReader.Read())
  
  {
  
  m_intForumCount = (int)myReader["ForumCount"] ;
  
  m_intTopicCount = (int)myReader["TopicCount"] ;
  
  m_intUserCount = (int)myReader["UserCount"] ;
  
  }
  
  else
  
  {
  
  throw(new Exception("
表或存储过程不存在")) ;
  
  }
  
  
  //
清场
  
  myReader.Close();
  
  myConn.Close() ;
  
  }
  
  catch(SQLException e)
  
  {
  
  throw(new Exception("
数据库出错:" + e.Message)) ;
  
  }
  
  
  }
  
  }
  
  }