3階層アーキテクチャ
4810 ワード
なぜ3階層アーキテクチャを使用するのですか?
1.高凝集、低結合のための思想2.従来の階層の実装3を新しい実装で簡単に置き換えることができる.実際の開発では、開発者は構造全体のいずれかに注目しています.
3階層アーキテクチャの使用方法
3階層アーキテクチャの使用はプロジェクトの規模に関係し、一般的に大規模なプロジェクトで使用されます.実際のデータストレージがない場合は使用する必要はありません.DAL、BLL、UIはそれぞれ異なるプログラムセットに存在する.DAL層データ層.基本的なデータアクセスのみを提供します.データソースからデータをロードし、データソースにデータを書き込み、データソースからデータを削除します.他のデータベースにアクセスする機能も備えています.BLL層ビジネス層.業務ロジックの処理を担当し、UIからの操作命令を取得することで、業務ロジックの実行を決定し、データソースにアクセスする必要がある場合にDAL処理に直接渡す.処理が完了すると、UIに必要なデータが返されます.UIレイヤ表示レイヤ.ユーザー操作の表示と収集を担当します.ユーザーに特定の業務データを表示し、ユーザーの入力情報と操作を収集する.設計原則は主にユーザーを主とする.
3階層アーキテクチャの応用
Modelエンティティークラス
DAL層
BLL層
UI層
階層化アーキテクチャの欠点
1.中間層を介してデータを取得する必要があり、システムの動作性能を低下させる.2.カスケード化された修正が発生します.この修正は、特に上から下への方向に反映されます.表示レイヤに機能を追加し、階層構造に適合するように設計する必要がある場合は、対応するビジネスロジックレイヤとデータアクセスレイヤにコードを追加する必要があります.
1.高凝集、低結合のための思想2.従来の階層の実装3を新しい実装で簡単に置き換えることができる.実際の開発では、開発者は構造全体のいずれかに注目しています.
3階層アーキテクチャの使用方法
3階層アーキテクチャの使用はプロジェクトの規模に関係し、一般的に大規模なプロジェクトで使用されます.実際のデータストレージがない場合は使用する必要はありません.DAL、BLL、UIはそれぞれ異なるプログラムセットに存在する.DAL層データ層.基本的なデータアクセスのみを提供します.データソースからデータをロードし、データソースにデータを書き込み、データソースからデータを削除します.他のデータベースにアクセスする機能も備えています.BLL層ビジネス層.業務ロジックの処理を担当し、UIからの操作命令を取得することで、業務ロジックの実行を決定し、データソースにアクセスする必要がある場合にDAL処理に直接渡す.処理が完了すると、UIに必要なデータが返されます.UIレイヤ表示レイヤ.ユーザー操作の表示と収集を担当します.ユーザーに特定の業務データを表示し、ユーザーの入力情報と操作を収集する.設計原則は主にユーザーを主とする.
3階層アーキテクチャの応用
Modelエンティティークラス
namespace Login.Model
{
public class Userinfo//
{
public int ID { get; set; }
public string UserName { get; set; }
public string PassWord { get; set; }
public string Email { get; set; }
}
}
DAL層
namespace Login.DAL
{
class Dbutil
{
//
public static string Connstring = @"Server=DESKTOP-MNRLSKH;Database=login;User ID=sa;Password=123456";
}
}
using System.Data;
using System.Data.SqlClient;
namespace Login.DAL
{
public class UserDAO
{
// Login.Model, Userinfo SelectUser
public Login.Model.Userinfo SelectUser(string UserName,string passWord)
{
// conn
using (SqlConnection conn = new SqlConnection(Dbutil.Connstring))
{
// ,
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "SELECT * FROM Users WHERE UserName=@UserName AND password=@Password";
//
cmd.CommandType = CommandType.Text;
// ,
cmd.Parameters.Add(new SqlParameter("@UserName", UserName));
cmd.Parameters.Add(new SqlParameter("@PassWord", passWord));
//
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();//
Login.Model.Userinfo user = null;
while (reader.Read())
{
if (user == null)// ,
{
user = new Login.Model.Userinfo();
}
// User
user.ID = reader.GetInt32(0);// int
user.UserName = reader.GetString(1);
user.PassWord = reader.GetString(2);
if (!reader.IsDBNull(3))//Email
{
user.Email = reader.GetString(3);
}
}
return user;
}
}
}
}
using System.Data;
using System.Data.SqlClient;
namespace Login.DAL
{
public class ScoreDAO
{
public void UpdateScore(string userName,int value)
{
//
using (SqlConnection conn=new SqlConnection(Dbutil.Connstring))
{
//
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "INSERT INTO Scores(UserName,Score) Values(@UserName,@Score)";//
//
cmd.Parameters.Add(new SqlParameter("@UserName", userName));
cmd.Parameters.Add(new SqlParameter("@Score", value));
conn.Open();
cmd.ExecuteNonQuery();// Sql
}
}
}
}
BLL層
namespace LoginBLL
{
public class LoginServers
{
public Login.Model.Userinfo UserLogin(string userName,string passWord)
{
Login.DAL.UserDAO uDao = new Login.DAL.UserDAO();// DAL UserDAO uDao
Login.Model.Userinfo user=uDao.SelectUser(userName, passWord);// uDAO Model user
if (user != null)// user
{
Login.DAL.ScoreDAO sDao = new Login.DAL.ScoreDAO();// sDao
sDao.UpdateScore(userName, 10);//sDao Score
return user;
}
else//
{
throw new Exception(" ");//
}
}
}
}
UI層
namespace LoginUI
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnLogin_Click(object sender, EventArgs e)
{
string userName = txtusername.Text.Trim();// userName
string password = txtpassword.Text;// password
LoginBLL.LoginServers sgr = new LoginBLL.LoginServers ();// Loginservices
Login.Model.Userinfo user = sgr.UserLogin(userName, password);// user ,
MessageBox.Show(" " + user.UserName);
}
}
}
階層化アーキテクチャの欠点
1.中間層を介してデータを取得する必要があり、システムの動作性能を低下させる.2.カスケード化された修正が発生します.この修正は、特に上から下への方向に反映されます.表示レイヤに機能を追加し、階層構造に適合するように設計する必要がある場合は、対応するビジネスロジックレイヤとデータアクセスレイヤにコードを追加する必要があります.