Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 42799|Atsakyti: 2

[Komunikatas] Išsamus trijų sluoksnių architektūros naudojimo ir įvedimo C# paaiškinimas su pavyzdžiais

[Kopijuoti nuorodą]
Paskelbta 2014-10-22 21:59:33 | | |
Trys sluoksniai: UI (sąsaja), BLL (verslo logikos sluoksnis), DAL (duomenų prieigos sluoksnis) Šie trys yra privalomi, iš kurių BLL ir DAL klasės yra viešosios klasės, nes vartotojo sąsaja turi iškviesti BLL, o BLL turi iškviesti DAL ir UTILITY (pagrindinis prisijungimo prie duomenų bazės ir pagrindinių operacijų "pridėjimo, ištrynimo, modifikavimo ir tikrinimo" atlikimo metodas). Be to, taip pat gali būti objektų sluoksnių, tokių kaip ENTITY (kuris susieja duomenų lenteles) ir Common (šioje bibliotekoje paprastai pateikiami kai kurie bendrieji metodai, pvz., duomenų patvirtinimo metodai, valdymo operacijų metodai ir kt.).
Paprasčiau tariant, tai yra
Prieiga prie duomenų bazės yra duomenų prieigos sluoksnis
Susijusių duomenų verslo ryšių rūšiavimas yra verslo logikos sluoksnis
Surinktų duomenų atvaizdavimas rodo, kad tai yra reprezentacinis sluoksnis.

Beje, aš padėjau jums rasti šiek tiek informacijos:
       Gera hierarchinė struktūra gali padaryti aiškesnį kūrėjų darbo pasidalijimą. Apibrėžę sąsajas tarp sluoksnių, kūrėjai, atsakingi už skirtingus loginius dizainus, gali išsklaidyti savo pastangas ir dirbti kartu. Pavyzdžiui, vartotojo sąsajos darbuotojams tereikia atsižvelgti į vartotojo sąsajos patirtį ir veikimą, domenų dizaineriai gali sutelkti dėmesį tik į verslo logikos dizainą, o duomenų bazių dizaineriams nereikia jaudintis dėl sudėtingos vartotojo sąveikos. Kiekvieno kūrėjo užduotis patvirtinama, o kūrimo eigą galima greitai pagerinti.

       Laisvos movos privalumai yra akivaizdūs. Jei sistema nėra hierarchinė, tada jų logika yra glaudžiai susipynusi ir tarpusavyje priklausoma, ir niekas negali būti pakeistas. Kai pokytis įvyks, jis paveiks visą kūną, o poveikis projektui bus labai rimtas. Sumažinus priklausomybę tarp sluoksnių, galima ne tik užtikrinti mastelio keitimą ateityje, bet ir turėti akivaizdžių pakartotinio naudojimo pranašumų. Kai kiekvienas funkcinis modulis apibrėžia vieningą sąsają, kiekvienas modulis gali jį iškviesti nekuriant tos pačios funkcijos pakartotinai.

       Norint atlikti gerą hierarchinės struktūros projektavimą, standartai taip pat yra būtini. Tik esant tam tikram standartizacijos lygiui, ši sistema gali būti keičiama ir keičiama. Ryšys tarp sluoksnių taip pat būtinai užtikrina sąsajų standartizavimą.

  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
Kopijuoti kodą







Ankstesnis:Daugelį tinklo plokštės įrankių reikia įdiegti naudojant winpcap, ar žinote, kam tai skirta?
Kitą:Atkreipkite dėmesį į "WeChat" "Yantang Dairy", kad 100% ištrauktumėte "vainiko grybelio" prizą
Paskelbta 2021-10-06 09:51:23 |
Geras dalykas, ačiū savininkui už suteikimą !!
Paskelbta 2021-10-06 11:09:10 |
Sužinokite apie trijų pakopų architektūrą C#
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com