Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 42799|Svare: 2

[Kommunikasjon] Detaljert forklaring av bruken og introduksjonen av trelagsarkitekturen i C#, med eksempler

[Kopier lenke]
Publisert på 22.10.2014 21:59:33 | | |
Tre lag: UI (grensesnitt), BLL (forretningslogikklag), DAL (datatilgangslag). Disse tre er et must-have, hvorav BLL og klassene i DAL er offentlige klasser, fordi UI må kalle BLL, og BLL må kalle DAL, og UTILITY (den underliggende metoden for å koble til databasen og utføre grunnleggende operasjoner som «legge til, slette, endre og sjekke»). I tillegg kan det også finnes entitetslag som ENTITY (som kartlegger datatabeller) og Common (dette biblioteket inneholder vanligvis noen generelle metoder, som datavalideringsmetoder, kontrolloperasjoner osv.).
Enkelt sagt, det er det
Tilgang til data fra databasen er et data-tilgangslag
Å sortere forretningsrelasjonene til relaterte data er et lag med forretningslogikk
Representasjonen av de innsamlede dataene viser at dette er et representasjonslag.

Forresten, jeg hjalp deg med å finne litt informasjon:
       En god hierarkisk struktur kan gjøre arbeidsdelingen for utbyggerne tydeligere. Når grensesnittene mellom lagene er definert, kan utviklere som er ansvarlige for ulike logikkdesign spre innsatsen og jobbe hånd i hånd. For eksempel trenger UI-personell kun å vurdere opplevelsen og driften av brukergrensesnittet, domenedesignere kan kun fokusere på design av forretningslogikk, og databasedesignere trenger ikke bekymre seg for tungvinte brukerinteraksjoner. Hver utviklers oppgave bekreftes, og utviklingsfremdriften kan raskt forbedres.

       Fordelene med løs kobling er tydelige. Hvis et system ikke er hierarkisk, er logikken deres tett sammenvevd og gjensidig avhengig, og ingen kan erstattes. Når en endring skjer, vil det påvirke hele kroppen, og konsekvensene for prosjektet vil være svært alvorlige. Å redusere avhengigheten mellom lagene kan ikke bare sikre fremtidig skalerbarhet, men også ha åpenbare fordeler når det gjelder gjenbrukbarhet. Når hver funksjonell modul har definert et enhetlig grensesnitt, kan den kalles av hver modul uten å måtte utvikle samme funksjon gjentatte ganger.

       For å gjennomføre et godt hierarkisk strukturdesign er standarder også avgjørende. Bare på et visst standardiseringsnivå kan dette systemet skaleres og erstattes. Kommunikasjonen mellom lagene sikrer også nødvendigvis standardisering av grensesnittene.

  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 koden







Foregående:Mange nettverkskortverktøy må installeres med winpcap, vet du hva dette er til?
Neste:Følg med på WeChat "Yantang Dairy" for å trekke "kronsopp"-premien 100 %
Publisert på 06.10.2021 09:51:23 |
Heldigvis, takk til eieren for at du leverte!!
Publisert på 06.10.2021 11:09:10 |
Lær om den tre-lags arkitekturen i C#
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com