Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 42799|Odgovoriti: 2

[Komunikacija] Podrobna razlaga uporabe in uvedbe trislojne arhitekture v C#, z primeri

[Kopiraj povezavo]
Objavljeno na 22. 10. 2014 21:59:33 | | |
Tri plasti: UI (vmesnik), BLL (poslovna logična plast), DAL (plast dostopa do podatkov). Te tri so nujne, od katerih sta BLL in razredi v DAL javni razredi, ker mora uporabniški vmesnik klicati BLL, BLL pa DAL in UTILITY (osnovna metoda za povezovanje z bazo podatkov in izvajanje osnovnih operacij "dodajanja, brisanja, spreminjanja in preverjanja"). Poleg tega obstajajo tudi entitetne plasti, kot sta ENTITY (ki preslikava podatkovne tabele) in Common (ta knjižnica običajno vključuje nekatere splošne metode, kot so metode validacije podatkov, metode operacij nadzora itd.).
Preprosto povedano, je
Dostop do podatkov iz baze podatkov je plast dostopa do podatkov
Razrejanje poslovnih odnosov povezanih podatkov je plast poslovne logike
Predstavitev zbranih podatkov kaže, da gre za plast predstavitev.

Mimogrede, pomagal sem ti najti nekaj informacij:
       Dobra hierarhična struktura lahko naredi delitev dela za razvijalce jasnejšo. Ko so vmesniki med plastmi definirani, lahko razvijalci, odgovorni za različne logične zasnove, razporedijo svoje napore in delajo z roko v roki. Na primer, osebje za uporabniški vmesnik mora upoštevati le izkušnje in delovanje uporabniškega vmesnika, oblikovalci domen se lahko osredotočijo le na oblikovanje poslovne logike, oblikovalci podatkovnih baz pa se ne rabijo ukvarjati z zapletenimi interakcijami z uporabniki. Naloga vsakega razvijalca je potrjena in napredek razvoja je mogoče hitro izboljšati.

       Prednosti ohlapnega sklopljanja so jasne. Če sistem ni hierarhičen, je njihova logika tesno prepletena in medsebojno odvisna ter nihče ni zamenljiv. Ko pride do spremembe, bo vplivala na celotno telo, vpliv na projekt pa bo izjemno resen. Zmanjšanje odvisnosti med plastmi ne zagotavlja le prihodnje razširljivosti, ampak ima tudi očitne prednosti pri ponovni uporabi. Ko ima vsak funkcionalni modul definiran enoten vmesnik, ga lahko vsak modul pokliče, ne da bi morali ponavljati isto funkcijo.

       Za izvedbo dobrega hierarhičnega oblikovanja strukture so standardi prav tako bistveni. Le na določeni ravni standardizacije je ta sistem lahko razširljiv in zamenljiv. Komunikacija med plastmi nujno zagotavlja tudi standardizacijo vmesnikov.

  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
Kopiraj kodo







Prejšnji:Veliko orodij za mrežne kartice je treba namestiti z winpcap, veš, za kaj je to?
Naslednji:Pozorno spremljajte WeChat "Yantang Dairy", da izžrebite nagrado "krona gliva" 100 %
Objavljeno na 6. 10. 2021 09:51:23 |
Dobro, hvala lastniku za pomoč!!
Objavljeno na 6. 10. 2021 11:09:10 |
Spoznajte tristopenjsko arhitekturo v C#
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com