Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 42799|Vastaus: 2

[Viestintä] Yksityiskohtainen selitys kolmikerroksisen arkkitehtuurin käytöstä ja käyttöönotosta C#:ssa, esimerkkejä kera

[Kopioi linkki]
Julkaistu 22.10.2014 21.59.33 | | |
Kolme kerrosta: UI (rajapinta), BLL (liiketoimintalogiikkakerros), DAL (datan käyttökerros) Nämä kolme ovat välttämättömiä, joista BLL ja DAL:n luokat ovat julkisia luokkia, koska käyttöliittymän täytyy kutsua BLL:ää, BLL:n täytyy kutsua DAL ja UTILITY (perusmenetelmä tietokantaan yhdistämiseen ja perustoimintojen suorittamiseen, kuten "lisääminen, poistaminen, muokkaaminen ja tarkistaminen"). Lisäksi voi olla entiteettikerroksia, kuten ENTITY (joka kartoittaa datatauluja) ja Common (tämä kirjasto sisältää yleensä joitakin yleisiä menetelmiä, kuten datan validointimenetelmiä, ohjausoperaatiomenetelmiä jne.).
Yksinkertaisesti sanottuna, se on
Tietokannan datan käyttö on datan käyttökerros
Liiketoimintasuhteiden järjestäminen liittyvästä datasta on liiketoimintalogiikan kerros
Kokoavan datan esitys osoittaa, että kyseessä on esityskerros.

Muuten, autoin sinua löytämään tietoa:
       Hyvä hierarkkinen rakenne voi selkeyttää kehittäjien työnjakoa. Kun kerrosten väliset rajapinnat on määritelty, eri logiikkasuunnitelmista vastaavat kehittäjät voivat hajauttaa ponnistelujaan ja tehdä tiivistä yhteistyötä. Esimerkiksi käyttöliittymän henkilöstön tarvitsee ottaa huomioon vain käyttöliittymän kokemus ja toiminta, toimialueen suunnittelijat voivat keskittyä vain liiketoimintalogiikan suunnitteluun, ja tietokantasuunnittelijoiden ei tarvitse huolehtia hankalista käyttäjävuorovaikutuksista. Jokaisen kehittäjän tehtävä vahvistetaan, ja kehityksen etenemistä voidaan nopeasti parantaa.

       Löysän liitoksen hyödyt ovat selvät. Jos järjestelmä ei ole hierarkkinen, sen logiikka on tiiviisti kietoutunut ja riippuvainen, eikä kukaan ole korvattavissa. Kun muutos tapahtuu, se vaikuttaa koko kehoon, ja vaikutus projektiin on erittäin vakava. Kerrosten välisen riippuvuuden vähentäminen voi paitsi varmistaa tulevan skaalautuvuuden, myös tuoda selkeitä etuja uudelleenkäytettävyydessä. Kun jokainen funktionaalinen moduuli on määritellyt yhtenäisen rajapinnan, sitä voidaan kutsua jokaisella moduulilla ilman, että samaa funktiota tarvitsee kehittää toistuvasti.

       Hyvän hierarkkisen rakenteen suunnittelun toteuttamiseksi standardit ovat myös välttämättömiä. Vain tietyllä standardointitasolla tämä järjestelmä voi olla skaalautuva ja korvattavissa. Kerrosten välinen viestintä varmistaa myös välttämättä rajapintojen standardisoinnin.

  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
Kopioi koodi







Edellinen:Monet verkkokorttityökalut täytyy asentaa Winpcapin kanssa, tiedätkö mihin tämä on tarkoitettu?
Seuraava:Kiinnitä huomiota WeChatin "Yantang Dairy" -sivustoon, niin saat "kruununsienen" palkinnon 100 %:iin.
Julkaistu 6.10.2021 9.51.23 |
Hyvä niin, kiitos omistajalle avusta!!
Julkaistu 6.10.2021 11.09.10 |
Tutustu C#:n kolmitasoiseen arkkitehtuuriin
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com