Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 42799|Odpověď: 2

[Komunikace] Podrobné vysvětlení použití a zavedení třívrstvé architektury v C# s příklady

[Kopírovat odkaz]
Zveřejněno 22.10.2014 21:59:33 | | |
Tři vrstvy: UI (rozhraní), BLL (business logic layer), DAL (data access layer). Tyto tři jsou nezbytné položky, z nichž BLL a třídy v DAL jsou veřejné třídy, protože UI musí volat BLL a BLL DAL a UTILITY (základní metoda pro připojení k databázi a provádění základních operací "přidávání, mazání, úpravy a kontroly"). Kromě toho mohou existovat také entity vrstvy jako ENTITY (která mapuje datové tabulky) a Common (tato knihovna obvykle umisťuje některé obecné metody, jako jsou metody validace dat, metody řízení operací atd.).
Jednoduše řečeno, je to tak
Přístup k datům z databáze je vrstvou přístupu k datům
Třídění obchodních vztahů souvisejících dat je vrstvou obchodní logiky
Reprezentace shromážděných dat ukazuje, že se jedná o vrstvu reprezentace.

Mimochodem, pomohl jsem ti najít nějaké informace:
       Dobrá hierarchická struktura může dělbu práce pro vývojáře zpřesnit. Jakmile jsou rozhraní mezi vrstvami definována, vývojáři odpovědní za různé logické návrhy mohou rozdělit své úsilí a spolupracovat ruku v ruce. Například pracovníci UI musí zohlednit pouze zkušenosti a provoz uživatelského rozhraní, návrháři domén se mohou soustředit pouze na návrh obchodní logiky a návrháři databází se nemusí obávat složitých interakcí s uživateli. Každý vývojář má potvrzený úkol a vývoj lze rychle zlepšít.

       Výhody volného spojení jsou zřejmé. Pokud systém není hierarchický, pak je jeho logika úzce propojená a vzájemně závislá a nikdo není nahraditelný. Jakmile ke změně dojde, ovlivní celé tělo a dopad na projekt bude extrémně vážný. Snížení závislosti mezi vrstvami může nejen zajistit budoucí škálovatelnost, ale také přinést zjevné výhody v znovupoužitelnosti. Jakmile každý funkční modul definuje sjednocené rozhraní, může být volán každým modulem, aniž by bylo nutné opakovaně vyvíjet stejnou funkci.

       Pro provedení dobrého hierarchického návrhu struktury jsou také nezbytné standardy. Pouze na určité úrovni standardizace může být tento systém škálovatelný a nahraditelný. Komunikace mezi vrstvami také nutně zajišťuje standardizaci 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írovat kód







Předchozí:Mnoho nástrojů pro síťové karty je potřeba nainstalovat s winpcap, víte, k čemu to je?
Další:Věnujte pozornost WeChatu "Yantang Dairy" a vylosujte cenu "korunní houba" 100 %
Zveřejněno 06.10.2021 9:51:23 |
Dobrá věc, děkuji majiteli za poskytnutí!!
Zveřejněno 06.10.2021 11:09:10 |
Seznamte se s tříúrovňovou architekturou v C#
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com