Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 42799|Odpoveď: 2

[Komunikácia] Podrobné vysvetlenie použitia a zavedenia trojvrstvovej architektúry v C#, s príkladmi

[Kopírovať odkaz]
Zverejnené 22. 10. 2014 21:59:33 | | |
Tri vrstvy: UI (rozhranie), BLL (business logická vrstva), DAL (vrstva prístupu k dátam). Tieto tri sú nevyhnutné, pričom BLL a triedy v DAL sú verejné triedy, pretože UI musí volať BLL a BLL DAL a UTILITY (základná metóda na pripojenie k databáze a vykonávanie základných operácií "pridávanie, mazanie, úprava a kontrola"). Okrem toho môžu existovať aj entity vrstvy ako ENTITY (ktorá mapuje dátové tabuľky) a Common (táto knižnica zvyčajne umiestňuje niektoré všeobecné metódy, ako sú metódy validácie dát, metódy riadenia operácií a pod.).
Jednoducho povedané, je to tak
Prístup k dátam z databázy je vrstvou prístupu k dátam
Triedenie obchodných vzťahov súvisiacich dát je vrstvou obchodnej logiky
Reprezentácia zhromaždených dát ukazuje, že ide o vrstvu reprezentácie.

Mimochodom, pomohol som ti nájsť nejaké informácie:
       Dobrá hierarchická štruktúra môže urobiť rozdelenie práce pre developerov jasnejším. Keď sú rozhrania medzi vrstvami definované, vývojári zodpovední za rôzne logické návrhy môžu rozptýliť svoje úsilie a spolupracovať ruka v ruke. Napríklad pracovníci UI musia zohľadniť len skúsenosti a prevádzku používateľského rozhrania, doménoví dizajnéri sa môžu sústrediť len na návrh obchodnej logiky a databázoví dizajnéri sa nemusia obávať zdĺhavých interakcií s používateľmi. Úloha každého vývojára je potvrdená a pokrok vo vývoji sa dá rýchlo zlepšiť.

       Výhody voľného spojenia sú jasné. Ak systém nie je hierarchický, jeho logika je úzko prepojená a závislá a nikto nie je nahraditeľný. Keď k zmene dôjde, ovplyvní celé telo a dopad na projekt bude mimoriadne vážny. Zníženie závislosti medzi vrstvami môže nielen zabezpečiť budúcu škálovateľnosť, ale priniesť aj zjavné výhody v znovupoužiteľnosti. Keď každý funkčný modul definuje jednotné rozhranie, môže ho každý modul volať bez opakovaného vývoja tej istej funkcie.

       Na realizáciu dobrého hierarchického návrhu štruktúry sú nevyhnutné aj štandardy. Len na určitej úrovni štandardizácie môže byť tento systém škálovateľný a nahraditeľný. Komunikácia medzi vrstvami tiež nevyhnutne zabezpečuje štandardizáciu rozhraní.

  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
Kopírovať kód







Predchádzajúci:Mnohé nástroje na sieťové karty musia byť nainštalované s winpcap, vieš, na čo to slúži?
Budúci:Venujte pozornosť WeChatu "Yantang Dairy" a vyžrebujte cenu "korunová huba" na 100 %.
Zverejnené 6. 10. 2021 9:51:23 |
Dobre, ďakujem majiteľovi za poskytnutie!!
Zverejnené 6. 10. 2021 11:09:10 |
Naučte sa o trojúrovňovej architektúre v C#
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com