国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
程序設(shè)計的多層架構(gòu)學(xué)習(xí)

 在學(xué)習(xí)程序設(shè)計的時候,我們都會用到多層架構(gòu),其帶來的好處是不要重復(fù)地寫代碼,可能通過面向?qū)ο蠹夹g(shù)來改善代碼,提高代碼的重復(fù)利用。
 我在程序設(shè)計的時候比較喜歡把它分成五層:表示層(Web)、業(yè)務(wù)邏輯層(BusinessRule)、數(shù)據(jù)訪問層(DataAccess)、數(shù)據(jù)層(Data)、系統(tǒng)框架層(Framework).
 表示層:直接與用戶面對面,可以的DV+CSS+JavaScript來完成。如果用到XML 還可以用XSLT等技術(shù)來實現(xiàn)。
 業(yè)務(wù)邏輯層:對系統(tǒng)的業(yè)務(wù)的實現(xiàn),大多數(shù)的開發(fā)人員都認(rèn)為這層是復(fù)雜的。很少有一定的規(guī)則可循。
 數(shù)據(jù)訪問層:實現(xiàn)對實體數(shù)據(jù)和虛擬數(shù)據(jù)的操作。
 數(shù)據(jù)層:在微軟的多層架構(gòu)里,這層是手寫的與關(guān)系數(shù)據(jù)庫相對應(yīng)。還要還用XST模式。
  系統(tǒng)框架層:主要是對一基本的信息進(jìn)行配置。
 這五層架構(gòu)可以做成通用的一種架構(gòu)?,F(xiàn)在就來具體說說這五層架構(gòu)中的每個層次關(guān)系和各各層次的功能。
 系統(tǒng)框架層的簡單應(yīng)用就是寫成數(shù)據(jù)庫的配置,

public class DBConfigration
{
public static string ConnectionString="server=數(shù)據(jù)庫服務(wù)器;User ID=登錄名;Password=密碼;initial catalog=數(shù)據(jù)庫";
public DBConfigration()
{
// TODO: 讀取XML文件的數(shù)據(jù)庫的配置
string fileName =AppDomain.CurrentDomain.BaseDirectory.ToString()+ @"\dataBaseConnect.xml";
string connectstring = "";
XmlTextReader tr = new XmlTextReader(fileName);
while(tr.Read())
{
if(tr.NodeType==XmlNodeType.Text)
{
connectstring = tr.Value;
break;
}
}
tr.Close();
tr=null;
if (connectstring.Length<10)
{
ConnectionString="server=數(shù)據(jù)庫服務(wù)器;User ID=登錄名;Password=密碼;initial catalog=數(shù)據(jù)庫";
}
else
{
ConnectionString = connectstring;
}
}
}

這樣可能通過改變XML文件里的數(shù)據(jù)庫的配置,而不必編譯文件,對于系統(tǒng)的移植來說相對比較方便,當(dāng)然這種方法不是一種好方法。對于開發(fā)小型的單一的系統(tǒng)還是很好用的。

數(shù)據(jù)層(Data)

定義一個基類,把基本的字段類型都提取出來。便于管理
public class BaseDataColumn : DataColumn
{
// 定義變量
// 設(shè)置字段是否為關(guān)鍵字段。
private bool isKeyColumn;
// 設(shè)置字段是否為有效字段。
private bool isValidColumn;
// 設(shè)置字段是否允許中文。
private bool isDBCSColumn;
// 設(shè)置字段的“SqlDbType”類型。
private SqlDbType columnSqlDbType;
// 若為數(shù)字型字段,記錄字段的最大值。
private double columnMaxValue = 0;
// 若為數(shù)字型字段,記錄字段的最小值。
private double columnMinValue = 0;
// 若為數(shù)字型字段,記錄字段的小數(shù)點位數(shù)。
private int columnDecimalPosition = -1;
//定義方法
// 返回是否為關(guān)鍵字列
public bool IsKeyColumn()
{
return isKeyColumn;
}
// 返回是否為有效列
public bool IsValidColumn()
{
return isValidColumn;
}
// 設(shè)置關(guān)鍵字列狀態(tài)
public void SetKeyState(bool isKS)
{
isKeyColumn = isKS;
}
// 設(shè)置有效列狀態(tài)
public void SetValidState(bool isVS)
{
isValidColumn = isVS;
}
// 返回是否為有效列
public bool IsDBCSColumn()
{
return isDBCSColumn;
}
// 設(shè)置關(guān)鍵字列狀態(tài)
public void SetDBCSState(bool isDBCS)
{
isDBCSColumn = isDBCS;
}
// 獲取列的 SqlDbType
public SqlDbType GetColumnSqlDbType()
{
return columnSqlDbType;
}
// 設(shè)置列的最大長度
public void SetMaxLength(int length)
{
MaxLength = length;
}
// 設(shè)置列的最大值
public void SetMaxValue(double value)
{
columnMaxValue = value;
}
// 設(shè)置列的最小值
public void SetMinValue(double value)
{
columnMinValue = value;
}
// 設(shè)置數(shù)字列的小數(shù)點位數(shù)。
public void SetDecimalPosition(int position)
{
columnDecimalPosition = position;
}
// 獲取數(shù)字列的小數(shù)點位數(shù)。
public int GetDecimalPosition()
{
return columnDecimalPosition;
}
// 重載重構(gòu)函數(shù)
public BaseDataColumn(bool isKS, bool isVS) : base()
{
isKeyColumn = isKS;
isValidColumn = isVS;
columnSqlDbType = SqlDbType.VarChar;
isDBCSColumn = false;
}
public BaseDataColumn() : base()
{
isKeyColumn = false;
isValidColumn = true;
columnSqlDbType = SqlDbType.VarChar;
isDBCSColumn = false;
}
public BaseDataColumn(  System.String columnName , SqlDbType dataType , System.String expr , System.Data.MappingType type ) : base( columnName ,CommonInfo.GetSystemType(dataType) , expr , type )
{
isKeyColumn = false;
isValidColumn = true;
columnSqlDbType = dataType;
isDBCSColumn = false;
}
public BaseDataColumn(  System.String columnName , SqlDbType dataType , System.String expr ) : base( columnName ,CommonInfo.GetSystemType(dataType) ,expr )
{
isKeyColumn = false;
isValidColumn = true;  
columnSqlDbType = dataType;
isDBCSColumn = false;
}
public BaseDataColumn(  System.String columnName , SqlDbType dataType ) : base(  columnName , CommonInfo.GetSystemType(dataType) )
{
isKeyColumn = false;
isValidColumn = true;  
columnSqlDbType = dataType;
isDBCSColumn = false;
}
public BaseDataColumn(  System.String columnName , SqlDbType dataType, bool isKS, bool isVS ) : base(  columnName , CommonInfo.GetSystemType(dataType) )
{
isKeyColumn = isKS;
isValidColumn = isVS;  
columnSqlDbType = dataType;
isDBCSColumn = false;
this.ColumnName = columnName;
}
public BaseDataColumn(  System.String columnName , SqlDbType dataType, bool isKS, bool isVS,int isAutoADD ) : base(  columnName , CommonInfo.GetSystemType(dataType) )
{
isKeyColumn = isKS;
isValidColumn = isVS;  
columnSqlDbType = dataType;
isDBCSColumn = false;
if (isAutoADD==1)
{
this.AutoIncrement = true;
}
this.ColumnName = columnName;
}
public BaseDataColumn(  System.String columnName , SqlDbType dataType, bool isKS, bool isVS, bool isDBCS ) : base(  columnName , CommonInfo.GetSystemType(dataType) )
{
isKeyColumn = isKS;
isValidColumn = isVS;  
columnSqlDbType = dataType;
isDBCSColumn = isDBCS;
}
public BaseDataColumn(  System.String columnName ) : base( columnName )
{
isKeyColumn = false;
isValidColumn = true;  
columnSqlDbType = SqlDbType.VarChar;
isDBCSColumn = false;
}
}

再定義一個抽象類。用于其子類的繼承來。
public class BaseDataSet : DataSet
{
public BaseDataSet()
{
//BuildDataTables();
}
// 構(gòu)建 DataSet 中所有表、字段和關(guān)鍵字
protected virtual void BuildDataTables()
{

}

這樣就完成了基礎(chǔ)建設(shè)
接下來就是對各各數(shù)據(jù)表結(jié)構(gòu)的定義和操作
我們來舉個例子
這是聲明一個數(shù)據(jù)集,叫數(shù)據(jù)表的名字是t_hotsubject_column,有九個字段,并分別定義他們數(shù)據(jù)類型,是否是關(guān)鍵字,是否是有效字。
    public class columnClass:BaseDataSet
 {
  public const string T_HOTSUBJECT_COLUMN_CLASS_TABLE       ="t_hotsubject_column";
  public const string COLUMNID_CLASS_FIELD                  ="columnid";
  public const string HOTSUBJECTID_CLASS_FIELD              ="hotsubjectid";
  public const string COLUMNTITTLE_CLASS_FIELD              ="columntittle";
  public const string PARENTID_CLASS_FIELD                  ="parentid";
  public const string COLUMNPOSITION_CLASS_FIELD            ="columnposition";
  public const string COLUMNCREATOR_CLASS_FIELD             ="columncreator";
  public const string COLUMNDESCRIPTION_CLASS_FIELD         ="columndescription";
  public const string DEPTNO_CLASS_FILED                    ="deptno";
  public const string LOCKED_CLASS_FILED                    ="locked";
      public columnClass()
  {
   
   BuildDataTables();// TODO: 在此處添加構(gòu)造函數(shù)邏輯
   
  }
  protected override void BuildDataTables()
  {
   DataTable columnTable=new DataTable(T_HOTSUBJECT_COLUMN_CLASS_TABLE);
   DataColumnCollection columnColumns=columnTable.Columns;
   columnColumns.Add(new  BaseDataColumn(COLUMNID_CLASS_FIELD,SqlDbType.Int,true,true));
   columnColumns.Add(new  BaseDataColumn(HOTSUBJECTID_CLASS_FIELD,SqlDbType.Int,false,true));
   columnColumns.Add(new  BaseDataColumn(COLUMNTITTLE_CLASS_FIELD,SqlDbType.VarChar,false,true));
   columnColumns.Add(new  BaseDataColumn(PARENTID_CLASS_FIELD,SqlDbType.VarChar,false,true));
   columnColumns.Add(new  BaseDataColumn(COLUMNPOSITION_CLASS_FIELD,SqlDbType.Int,false,true));
                        columnColumns.Add(new  BaseDataColumn(COLUMNCREATOR_CLASS_FIELD,SqlDbType.NVarChar,false,true));
   columnColumns.Add(new  BaseDataColumn(COLUMNDESCRIPTION_CLASS_FIELD,SqlDbType.NText,false,true));
                        columnColumns.Add(new  BaseDataColumn(DEPTNO_CLASS_FILED,SqlDbType.Int,false,true));
   columnColumns.Add(new BaseDataColumn(LOCKED_CLASS_FILED,SqlDbType.Char,false,true));
   this.Tables.Add(columnTable);

  }
 }
這種方法也不是最好的方法,我們要以通過XST模式來生成XML的數(shù)據(jù)集合。這個以后再補(bǔ)充。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
將查詢出來的數(shù)據(jù)集轉(zhuǎn)化成JSON格式的類
在JAVA實現(xiàn)DataTable對象(二)——DatColumn和DataRow對象實現(xiàn)
Hibernate?對視圖的操作及配置
T4模板的初級應(yīng)用
系統(tǒng)架構(gòu)技能之設(shè)計模式-單件模式
創(chuàng)建datatable
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服