Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 42799|Jawab: 2

[Komunikasi] Penjelasan terperinci tentang penggunaan dan pengenalan arsitektur tiga lapis di C#, dengan contoh

[Salin tautan]
Diposting pada 22/10/2014 21.59.33 | | |
Tiga lapisan: UI (antarmuka), BLL (lapisan logika bisnis), DAL (lapisan akses data) Ketiganya harus dimiliki, di mana BLL dan kelas di DAL adalah kelas publik, karena UI perlu memanggil BLL, dan BLL perlu memanggil DAL, dan UTILITY (metode yang mendasari untuk menyambungkan ke database dan melakukan operasi dasar "menambahkan, menghapus, memodifikasi, dan memeriksa"). Selain itu, mungkin juga ada lapisan entitas seperti ENTITY (yang memetakan tabel data) dan Common (pustaka ini umumnya menempatkan beberapa metode umum, seperti metode validasi data, metode operasi kontrol, dll.).
Sederhananya, itu
Mengakses data dari database adalah lapisan akses data
Memilah hubungan bisnis data terkait adalah lapisan logika bisnis
Representasi data yang dikumpulkan menunjukkan bahwa ini adalah lapisan representasi.

Ngomong-ngomong, saya membantu Anda menemukan beberapa informasi:
       Struktur hierarkis yang baik dapat membuat pembagian kerja bagi pengembang lebih jelas. Setelah antarmuka antarmuka antara lapisan ditentukan, pengembang yang bertanggung jawab atas desain logika yang berbeda dapat membubarkan upaya mereka dan bekerja sama dengan tangan di tangan. Misalnya, personel UI hanya perlu mempertimbangkan pengalaman dan pengoperasian antarmuka pengguna, desainer domain hanya dapat fokus pada desain logika bisnis, dan desainer database tidak perlu khawatir dengan interaksi pengguna yang rumit. Setiap tugas pengembang dikonfirmasi, dan kemajuan pengembangan dapat dengan cepat ditingkatkan.

       Manfaat kopling longgar jelas. Jika suatu sistem tidak hierarkis, maka logikanya saling terkait erat dan saling bergantung, dan tidak ada yang dapat digantikan. Begitu terjadi perubahan, itu akan mempengaruhi seluruh tubuh, dan dampaknya pada proyek akan sangat serius. Mengurangi ketergantungan antar lapisan tidak hanya dapat memastikan skalabilitas di masa depan, tetapi juga memiliki keuntungan yang jelas dalam penggunaan kembali. Setelah setiap modul fungsional telah menentukan antarmuka terpadu, modul tersebut dapat dipanggil oleh setiap modul tanpa harus mengembangkan fungsi yang sama berulang kali.

       Untuk melakukan desain struktur hierarkis yang baik, standar juga penting. Hanya pada tingkat standardisasi tertentu, sistem ini dapat diskalakan dan diganti. Komunikasi antar lapisan juga tentu memastikan standarisasi antarmuka.

  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
Salin kode







Mantan:Banyak alat kartu jaringan yang perlu diinstal dengan winpcap, tahukah Anda untuk apa ini?
Depan:Perhatikan WeChat "Yantang Dairy" untuk menarik hadiah "jamur mahkota" 100%
Diposting pada 06/10/2021 09.51.23 |
Untung, terima kasih kepada pemilik karena telah menyediakannya !!
Diposting pada 06/10/2021 11.09.10 |
Pelajari tentang arsitektur tiga tingkat di C#
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com