Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 42799|Antwort: 2

[Kommunikation] Detaillierte Erklärung der Verwendung und Einführung der Drei-Schicht-Architektur in C# mit Beispielen

[Link kopieren]
Veröffentlicht am 22.10.2014 21:59:33 | | |
Drei Schichten: UI (Schnittstelle), BLL (Business Logic Layer), DAL (Data Access Layer). Diese drei sind unverzichtbar, von denen BLL und die Klassen in DAL öffentliche Klassen sind, weil die UI BLL aufrufen muss, BLL DAL und UTILITY aufrufen muss (die zugrundeliegende Methode zur Verbindung zur Datenbank und zur Durchführung grundlegender Operationen wie "Hinzufügen, Löschen, Ändern und Überprüfen"). Zusätzlich kann es auch Entitätsebenen wie ENTITY (das Datentabellen abbildet) und Common (diese Bibliothek enthält in der Regel einige allgemeine Methoden, wie Datenvalidierungsmethoden, Steuerungsoperationen usw.).
Kurz gesagt, das ist es
Der Zugriff auf Daten aus der Datenbank ist eine Datenzugriffsschicht
Die Sortierung der Geschäftsbeziehungen verwandter Daten ist eine Ebene der Geschäftslogik
Die Darstellung der zusammengestellten Daten zeigt, dass es sich um eine Darstellungsschicht handelt.

Übrigens, ich habe dir geholfen, einige Informationen zu finden:
       Eine gute hierarchische Struktur kann die Arbeitsteilung für Entwickler klarer machen. Sobald die Schnittstellen zwischen den Schichten definiert sind, können Entwickler, die für verschiedene Logikdesigns verantwortlich sind, ihre Beschäftigungen verteilen und Hand in Hand arbeiten. Zum Beispiel müssen UI-Mitarbeiter nur die Erfahrung und den Betrieb der Benutzeroberfläche berücksichtigen, Domänendesigner können sich nur auf das Design der Geschäftslogik konzentrieren, und Datenbankdesigner müssen sich keine Sorgen um umständliche Benutzerinteraktionen machen. Die Aufgabe jedes Entwicklers wird bestätigt, und der Entwicklungsfortschritt kann schnell verbessert werden.

       Die Vorteile der lockeren Kopplung sind eindeutig. Wenn ein System nicht hierarchisch ist, ist ihre Logik eng miteinander verflochten und voneinander abhängig, und niemand ist ersetzbar. Sobald eine Veränderung eintritt, wirkt sie sich auf den gesamten Körper aus, und die Auswirkungen auf das Projekt sind äußerst gravierend. Die Verringerung der Abhängigkeit zwischen den Schichten kann nicht nur zukünftige Skalierbarkeit sicherstellen, sondern auch offensichtliche Vorteile bei der Wiederverwendbarkeit bieten. Sobald jedes funktionale Modul eine einheitliche Schnittstelle definiert hat, kann es von jedem Modul aufgerufen werden, ohne dieselbe Funktion wiederholt entwickeln zu müssen.

       Um eine gute hierarchische Struktur zu gestalten, sind auch Standards unerlässlich. Nur auf einem bestimmten Standard kann dieses System skalierbar und ersetzbar sein. Die Kommunikation zwischen den Schichten stellt zudem notwendigerweise die Standardisierung der Schnittstellen sicher.

  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
Code kopieren







Vorhergehend:Viele Netzwerkkarten-Tools müssen mit winpcap installiert werden, weißt du, wofür das ist?
Nächster:Achte auf WeChat "Yantang Dairy", um den "Kronenpilz"-Preis zu 100% zu ziehen.
Veröffentlicht am 06.10.2021 09:51:23 |
Gut, danke an den Inhaber fürs Bereitstellen!!
Veröffentlicht am 06.10.2021 11:09:10 |
Erfahren Sie mehr über die dreistufige Architektur in C#
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com