Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 42799|Відповідь: 2

[Зв'язок] Детальне пояснення використання та впровадження тришарової архітектури в C# з прикладами

[Копіювати посилання]
Опубліковано 22.10.2014 21:59:33 | | |
Три рівні: UI (інтерфейс), BLL (бізнес-логічний шар), DAL (рівень доступу до даних). Ці три є обов'язковими, серед яких BLL і класи в DAL є публічними класами, оскільки інтерфейс має викликати BLL, а BLL — DAL, і UTILITY (базовий метод підключення до бази даних і виконання базових операцій «додавання, видалення, модифікації та перевірки»). Крім того, можуть існувати рівні сутності, такі як ENTITY (який відображає таблиці даних) та Common (ця бібліотека зазвичай містить деякі загальні методи, такі як методи валідації даних, методи керування тощо).
Простіше кажучи, це
Доступ до даних із бази даних є рівнем доступу до даних
Розбір ділових взаємозв'язків пов'язаних даних — це шар бізнес-логіки
Представлення зібраних даних показує, що це шар представлення.

До речі, я допоміг тобі знайти деяку інформацію:
       Хороша ієрархічна структура може зробити розподіл праці для розробників більш зрозумілим. Після визначення інтерфейсів між шарами розробники, відповідальні за різні логічні дизайни, можуть розподілити свої зусилля і працювати пліч-о-пліч. Наприклад, персоналу UI потрібно враховувати лише досвід і роботу інтерфейсу користувача, дизайнери домену можуть зосередитися лише на проєктуванні бізнес-логіки, а розробникам баз даних не потрібно турбуватися про громіздкі взаємодії з користувачами. Завдання кожного розробника підтверджується, і прогрес розробки можна швидко покращити.

       Переваги вільного зчеплення очевидні. Якщо система не є ієрархічною, її логіка тісно переплетена і взаємозалежна, і ніхто не замінний. Коли відбуваються зміни, це вплине на все тіло, і вплив на проєкт буде надзвичайно серйозним. Зменшення залежності між шарами може не лише забезпечити майбутню масштабованість, а й мати очевидні переваги у багаторазовості. Після того, як кожен функціональний модуль визначив уніфікований інтерфейс, його може викликати кожен модуль без необхідності повторювати одну й ту ж функцію.

       Для здійснення якісного ієрархічного проєктування структури також необхідні стандарти. Лише на певному рівні стандартизації ця система може бути масштабованою та замінною. Комунікація між шарами також обов'язково забезпечує стандартизацію інтерфейсів.

  1. 代码

  2.         /// <summary>
  3.         /// 初始化登录名称、登录密码(Model类)
  4.         /// </summary>
  5.         private string adminUser = string.Empty; //设置用户名称为空值
  6.         private string adminPwd = string.Empty; //设置用户密码为空值
  7.         public string AdminUser
  8.         {
  9.             get
  10.             {
  11.                 return this.adminUser;
  12.             }
  13.             set
  14.             {
  15.                 this.adminUser = value;
  16.             }
  17.         }
  18.         public string AdminPwd
  19.         {
  20.             get
  21.             {
  22.                 return this.adminPwd;
  23.             }
  24.             set
  25.             {
  26.                 this.adminPwd = value;
  27.             }
  28.         }

  29. 代码

  30.         /// <summary>
  31.         /// 用户登录(BLL类)
  32.         /// </summary>
  33.         /// <param name="m"></param>
  34.         /// <returns></returns>
  35.         public static int sysLogin(Model m)
  36.         {
  37.             string str = "adminValid"; //存储过程名称
  38.             SqlParameter[] sqlParameter =
  39.                 {
  40.                     // 将UI层传递过来的用户名称和密码赋值给存储过程中的变量分别是adminUser和adminPwd(注意大小写)
  41.                     new SqlParameter("adminUser",m.AdminUser),
  42.                     new SqlParameter("adminPwd",m.AdminPwd)
  43.                 };
  44.             DAL d = new DAL();
  45.             return Int32.Parse(d.ExecuteScalar(str,sqlParameter));
  46.         }

  47. 代码

  48.         /// <summary>
  49.         /// 新建一个SQL登录链接
  50.         /// </summary>
  51.         /// <returns></returns>
  52.         private static SqlConnection con()
  53.         {
  54.             return new SqlConnection("Data Source=localhost;Initial Catalog=数据库名称;Integrated Security=SSPI;");
  55.         }
  56.         /// <summary>
  57.         /// 执行操作(DAL类)
  58.         /// </summary>
  59.         /// <param name="str"></param>
  60.         /// <param name="sql"></param>
  61.         /// <returns></returns>
  62.         public string ExecuteScalar(string str, SqlParameter[] sql)
  63.         {
  64.             SqlConnection con = DAL.con();
  65.             try
  66.             {
  67.                 con.Open();
  68.                 SqlCommand com = new SqlCommand(str, con);
  69.                 com.CommandType = CommandType.StoredProcedure;
  70.                 com.Parameters.AddRange(sql);
  71.                 return Convert.ToString(com.ExecuteScalar()); //返回受影响的行数(例如影响的行数为1,那么返回数值1到BLL层,然后BLL层将数值1返回到UI层)
  72.             }
  73.             catch (Exception Error)
  74.             {
  75.                 throw Error;
  76.             }
  77.             finally
  78.             {
  79.                 con.Close();
  80.             }
  81.         }

  82. 代码

  83.         //UI 层
  84.         Model m = new Model(); //实例化Model类
  85.         m.AdminUser = this.TextBox1.Text.ToString(); //将文本框1中的值传递给Model类中的AdminUser
  86.         m.AdminPwd = this.TextBox2.Text.ToString(); //将文本框2中的值传递给Model类中的AdminPwd
  87.         if (BLL.sysLogin(m) > 0)
  88.         {
  89.             this.Label1.Text = "登录成功!马上进入管理平台...";
  90.         }
  91.         else
  92.         {
  93.             this.Label1.Text = "用户或密码错误,请重新输入!";
  94.         }

  95. 代码

  96. --存储过程 (SQL2005)
  97. set ANSI_NULLS ON
  98. set QUOTED_IDENTIFIER ON
  99. go

  100. ALTER PROC [dbo].[adminValid]
  101. @adminUser varchar(20),@adminPwd varchar(120)
  102. AS
  103. SELECT COUNT(*) FROM admin WHERE adminUser = @adminUser AND adminPwd = @adminPwd
Копія коду







Попередній:Багато інструментів мережевих карт потрібно встановлювати з Winpcap, ви знаєте, для чого це?
Наступний:Зверніть увагу на WeChat «Yantang Dairy», щоб отримати приз «коронний гриб» на 100%
Опубліковано 06.10.2021 09:51:23 |
Добре, дякую власнику за допомогу!!
Опубліковано 06.10.2021 11:09:10 |
Дізнайтеся про трирівневу архітектуру в C#
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com