Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 42799|Απάντηση: 2

[Επικοινωνία] Λεπτομερής επεξήγηση της χρήσης και εισαγωγής της αρχιτεκτονικής τριών επιπέδων στη C#, με παραδείγματα

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 22/10/2014 9:59:33 μ.μ. | | |
Τρία επίπεδα: UI (διεπαφή), BLL (επίπεδο επιχειρηματικής λογικής), DAL (επίπεδο πρόσβασης δεδομένων) Αυτά τα τρία είναι απαραίτητα, εκ των οποίων το BLL και οι στο DAL είναι δημόσιες, επειδή το UI πρέπει να καλέσει το BLL και το BLL πρέπει να καλέσει το DAL και το UTILITY (η υποκείμενη μέθοδος για τη σύνδεση στη βάση δεδομένων και την εκτέλεση βασικών λειτουργιών "προσθήκης, διαγραφής, τροποποίησης και ελέγχου"). Επιπλέον, μπορεί επίσης να υπάρχουν επίπεδα οντοτήτων όπως το ENTITY (το οποίο αντιστοιχίζει πίνακες δεδομένων) και το Common (αυτή η βιβλιοθήκη τοποθετεί γενικά ορισμένες γενικές μεθόδους, όπως μεθόδους επικύρωσης δεδομένων, μεθόδους λειτουργίας ελέγχου κ.λπ.).
Με απλά λόγια, είναι
Η πρόσβαση σε δεδομένα από τη βάση δεδομένων είναι ένα επίπεδο πρόσβασης δεδομένων
Η ταξινόμηση των επιχειρηματικών σχέσεων των σχετικών δεδομένων είναι ένα επίπεδο επιχειρηματικής λογικής
Η αναπαράσταση των συγκεντρωμένων δεδομένων δείχνει ότι πρόκειται για ένα επίπεδο αναπαράστασης.

Παρεμπιπτόντως, σας βοήθησα να βρείτε κάποιες πληροφορίες:
       Μια καλή ιεραρχική δομή μπορεί να κάνει τον καταμερισμό της εργασίας για τους προγραμματιστές πιο ξεκάθαρο. Μόλις καθοριστούν οι διεπαφές μεταξύ των επιπέδων, οι προγραμματιστές που είναι υπεύθυνοι για διαφορετικά λογικά σχέδια μπορούν να διασκορπίσουν τις προσπάθειές τους και να εργαστούν χέρι-χέρι. Για παράδειγμα, το προσωπικό διεπαφής χρήστη χρειάζεται μόνο να εξετάσει την εμπειρία και τη λειτουργία της διεπαφής χρήστη, οι σχεδιαστές τομέα μπορούν να επικεντρωθούν μόνο στο σχεδιασμό της επιχειρηματικής λογικής και οι σχεδιαστές βάσεων δεδομένων δεν χρειάζεται να ανησυχούν για δυσκίνητες αλληλεπιδράσεις με τους χρήστες. Η εργασία κάθε προγραμματιστή επιβεβαιώνεται και η πρόοδος ανάπτυξης μπορεί να βελτιωθεί γρήγορα.

       Τα οφέλη της χαλαρής σύζευξης είναι ξεκάθαρα. Εάν ένα σύστημα δεν είναι ιεραρχικό, τότε η λογική τους είναι στενά συνυφασμένη και αλληλεξαρτώμενη και κανείς δεν μπορεί να αντικατασταθεί. Μόλις συμβεί μια αλλαγή, θα επηρεάσει ολόκληρο το σώμα και ο αντίκτυπος στο έργο θα είναι εξαιρετικά σοβαρός. Η μείωση της εξάρτησης μεταξύ των επιπέδων μπορεί όχι μόνο να εξασφαλίσει μελλοντική επεκτασιμότητα, αλλά και να έχει προφανή πλεονεκτήματα στην επαναχρησιμοποίηση. Μόλις κάθε λειτουργική μονάδα ορίσει μια ενοποιημένη διεπαφή, μπορεί να κληθεί από κάθε ενότητα χωρίς να χρειάζεται να αναπτύξει την ίδια συνάρτηση επανειλημμένα.

       Για να πραγματοποιηθεί ένας καλός σχεδιασμός ιεραρχικής δομής, τα πρότυπα είναι επίσης απαραίτητα. Μόνο σε ένα ορισμένο επίπεδο τυποποίησης μπορεί αυτό το σύστημα να είναι επεκτάσιμο και αντικαταστάσιμο. Η επικοινωνία μεταξύ των επιπέδων εξασφαλίζει επίσης απαραίτητα την τυποποίηση των διεπαφών.

  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
Αντιγραφή κώδικα







Προηγούμενος:Πολλά εργαλεία κάρτας δικτύου πρέπει να εγκατασταθούν με το winpcap, ξέρετε σε τι χρησιμεύει αυτό;
Επόμενος:Δώστε προσοχή στο WeChat "Yantang Dairy" για να τραβήξετε το έπαθλο "μύκητας στέμματος" 100%
Δημοσιεύτηκε στις 6/10/2021 9:51:23 π.μ. |
Καλό πράγμα, ευχαριστώ τον ιδιοκτήτη για την παροχή !!
Δημοσιεύτηκε στις 6/10/2021 11:09:10 π.μ. |
Μάθετε για την αρχιτεκτονική τριών επιπέδων στη C#
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com