See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 42799|Vastuse: 2

[Kommunikatsioon] Üksikasjalik selgitus kolmekihilise arhitektuuri kasutamisest ja kasutuselevõtust C#-s koos näidetega

[Kopeeri link]
Postitatud 22.10.2014 21:59:33 | | |
Kolm kihti: UI (liides), BLL (äriloogika kiht), DAL (andmejuurdepääsu kiht) Need kolm on hädavajalikud, millest BLL ja DAL-i klassid on avalikud klassid, sest kasutajaliides peab kutsuma BLL-i, BLL peab kutsuma DAL-i ja UTILITY-d (aluseks olevad meetodid andmebaasiga ühenduse loomiseks ja põhitoimingute tegemiseks nagu "lisamine, kustutamine, muutmine ja kontrollimine"). Lisaks võivad olemas olla ka entiteedikihtid, nagu ENTITY (mis kaardistab andmetabeleid) ja Common (see raamatukogu sisaldab tavaliselt mõningaid üldisi meetodeid, nagu andmete valideerimise meetodid, juhtimisoperatsioonide meetodid jne).
Lihtsalt öeldes on see nii
Andmetele ligipääs andmebaasist on andmekiht
Seotud andmete ärisuhete sorteerimine on äriloogika kiht
Koondatud andmete esitamine näitab, et tegemist on esituskihiga.

Muide, aitasin sul leida infot:
       Hea hierarhiline struktuur võib arendajate tööjaotuse selgemaks muuta. Kui kihtide vahelised liidesed on määratletud, saavad erinevate loogikadisainide eest vastutavad arendajad oma jõupingutusi hajutada ja teha koostööd käsikäes. Näiteks peavad kasutajaliidese töötajad arvestama ainult kasutajaliidese kogemuse ja toimimisega, domeenidisainerid saavad keskenduda ainult äriloogika disainile ning andmebaasi disainerid ei pea muretsema tülikate kasutajasuhtluste pärast. Iga arendaja ülesanne kinnitatakse ja arenduse edenemist saab kiiresti parandada.

       Lahtise sidumise eelised on selged. Kui süsteem ei ole hierarhiline, siis on nende loogika tihedalt seotud ja sõltuv ning keegi pole asendatav. Kui muutus toimub, mõjutab see kogu keha ning mõju projektile on äärmiselt tõsine. Kihtidevahelise sõltuvuse vähendamine tagab mitte ainult tulevase skaleeritavuse, vaid toob kaasa ka ilmseid eeliseid korduvkasutuses. Kui iga funktsionaalne moodul on määratlenud ühtse liidese, saab iga moodul seda kutsuda ilma, et peaks sama funktsiooni korduvalt arendama.

       Hea hierarhilise struktuuri kujundamiseks on samuti olulised standardid. Ainult teatud standardiseerimise tasemel saab see süsteem olla skaleeritav ja asendatav. Kihtidevaheline suhtlus tagab ka liideste standardiseerimise.

  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
Kopeeri kood







Eelmine:Paljud võrgukaardi tööriistad vajavad Winpcapiga paigaldamist, kas tead, milleks see on?
Järgmine:Pööra tähelepanu WeChati "Yantang Dairy" lehele, et saada 100% "krooniseen" auhind
Postitatud 06.10.2021 09:51:23 |
Hea, aitäh omanikule, kes selle eest pakkus!!
Postitatud 06.10.2021 11:09:10 |
Tutvu C# kolmekihilise arhitektuuriga
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com