Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 42799|Svar: 2

[Kommunikation] Detaljeret forklaring af brugen og introduktionen af tre-lags arkitekturen i C#, med eksempler

[Kopier link]
Opslået på 22/10/2014 21.59.33 | | |
Tre lag: UI (interface), BLL (forretningslogiklag), DAL (dataadgangslag). Disse tre er must-haves, hvoraf BLL og klasserne i DAL er offentlige klasser, fordi UI'en skal kalde BLL, og BLL skal kalde DAL, samt UTILITY (den underliggende metode til at forbinde til databasen og udføre grundlæggende operationer som "tilføjelse, sletning, ændring og kontrol"). Derudover kan der også være entitetslag som ENTITY (som kortlægger datatabeller) og Common (dette bibliotek indeholder generelt nogle generelle metoder, såsom datavalideringsmetoder, kontroloperationer osv.).
Kort sagt, det er det
Adgang til data fra databasen er et dataadgangslag
At sortere forretningsrelationerne for relaterede data er et lag af forretningslogik
Repræsentationen af de samlede data viser, at dette er et repræsentationslag.

For resten, jeg hjalp dig med at finde nogle oplysninger:
       En god hierarkisk struktur kan gøre arbejdsdelingen for udviklere tydeligere. Når grænsefladerne mellem lagene er defineret, kan udviklere, der er ansvarlige for forskellige logikdesigns, sprede deres indsats og arbejde hånd i hånd. For eksempel behøver UI-personale kun at tage hensyn til brugergrænsefladens oplevelse og funktion, domænedesignere kan kun fokusere på design af forretningslogik, og databasedesignere behøver ikke bekymre sig om besværlige brugerinteraktioner. Hver udviklers opgave bekræftes, og udviklingsfremskridtet kan hurtigt forbedres.

       Fordelene ved løs kobling er tydelige. Hvis et system ikke er hierarkisk, er deres logik tæt sammenvævet og indbyrdes afhængig, og ingen kan erstattes. Når en ændring sker, vil det påvirke hele kroppen, og konsekvenserne for projektet vil være ekstremt alvorlige. At reducere afhængigheden mellem lagene kan ikke blot sikre fremtidig skalerbarhed, men også have åbenlyse fordele i genanvendelighed. Når hvert funktionelt modul har defineret et samlet interface, kan det kaldes af hvert modul uden at skulle udvikle den samme funktion gentagne gange.

       For at gennemføre et godt hierarkisk strukturdesign er standarder også essentielle. Kun på et vist standardiseringsniveau kan dette system skaleres og udskiftes. Kommunikationen mellem lagene sikrer også nødvendigvis standardisering af grænseflader.

  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
Kopier kode







Tidligere:Mange netværkskortværktøjer skal installeres med winpcap, ved du, hvad det er til?
Næste:Følg WeChat "Yantang Dairy" for at trække "kronesvamp"-præmien 100%.
Opslået på 06/10/2021 09.51.23 |
Godt, tak til ejeren for at have bidraget!!
Opslået på 06/10/2021 11.09.10 |
Lær om den tre-lags arkitektur i C#
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com