PDA

View Full Version : 3-tier C# Help !!!



XI_TRUM
12-07-2003, 22:49
Có u nào biết cách viết chương trình 3-tier chỉ tớ dzới, hong biết cấu trúc nó như thế nào. Lớp BLL(Bussiness Logic Layer) để ở đâu và làm sao các client dùng được, nó hoạt động ra sao khi nhiều người cùng kết nối. Trong C# thì như thế nào, mình đang bí nè ,huhuhu... :-(.

rainOfSadness
12-07-2003, 23:52
xem câu hỏi thì có lẽ bạn chưa hiểu gì về kiến trúc 3-tier (n-tier nói chung). Nó không phải là một dạng kỹ-thuật-coding đâu mà bạn hỏi "trong C# thì như thế nào". Bạn nên tìm hiểu từ những khái niệm cơ bản thì hơn.

quaitieutu
13-07-2003, 03:22
Vô đây coi thử :D:D:D
http://www.gavinjoyce.com/nTierGen/casestudies/case1/?_sm=Part%20I

XI_TRUM
13-07-2003, 21:28
bạn rainOfSadness chỉ mình được hong, theo bạn 3-tier là seo, mình đã đọc gùi, nhưng mún hỉu cặn kẽ cơ. Bạn có thể cụ thể hơn hong. Nhưng mà cuối cùng gì bạn cũng phải coding thui đúng hong. Bạn bít hong cái lớp giữa của nó là cả 1 vấn đề đó. Nếu bạn đã từng lập trình 3-tier thì tụi mình có thể trao đổi nhìu hơn he. Mình muốn biết bạn hỉu 3-tier và thể hiện nó như thế nào xem có giống mình hong. Bởi vì cứ nói 3-tier thì dễ nhưng mà hỉu nó kĩ thì mình còn lơ mơ bởi dzậy mún thỉnh giáo 1 số người. Hi vọng sẽ thảo luận với bạn nhìu hơn.

---------------------------------------------------------
Email của mình phuongdq@genpacific.com.vn

1011
14-07-2003, 11:05
Mô hình 3-tier:
+ Lớp LayOut: giao diện để các Client có thể tương tác với hệ thống, nó chạy trên trình duyệt web của các máy Client
+ Lớp Business Logic: xử lý các vấn đề về logic tùy theo yêu cầu của từng dự án. Lớp này thường được cài đặt bằng VB.NET hay C#, lớp này được biên dịch và chạy trên Server
+ Lớp Database: xử lý các vấn đề liên quan đến việc truy xuất Database (Insert, Update, Delete, Select)

Để tạo được một ứng dụng theo mô hình 3-tier, cần phải cỏ một cơ chế chuyển dữ liệu giữa các lớp, ở đây ta sẽ sử dụng dataset.

Ví dụ:
Lấy thông tin của tất cả các thành viên trong một forum theo mô hình 3-tier ta làm như sau:
+ Viết một lớp Member :


Public Class Member
...
'Cai dat ham GetAllMember
'Gia tri tra ve la mot dataset
Public Function GetAllMember() As DataSet
Dim strSQL As String
Dim ds As New DataSet()
Dim sqlAdp As SqlDataAdapter
strSQL = "SELECT * FROM Member;"
sqlAdp = New SqlDataAdapter(strSQL, m_objCnn)
sqlAdp.Fill(ds, TblName)
GetAllMember = ds
ds.Dispose()
sqlAdp.Dispose()
End Function
...
End Class

trong đó: m_objCnn là biến thành viên của Member class chứa đối tượng SQLConnection

+ Trang giao diện (giả sử listmember.aspx)
Ở đây ta xài một DataGrid


...
<asp:DataGrid runat=Server id=grdMember></asp:DataGrid>
...

+ Trang xử lý logic (listmember.aspx.vb)


...
Private Sub FillDataGrid()
Dim objMem As New Member 'Tạo một instance cho lớp member
'Chỉ định một connection cho objMem
'Fill dữ liệu ra DataGrid
grdMember.DataSource = objMem.GetAllMember.Tables(0).DefaultView
grdMember.DataBind()
End Sub
...

Lợi ích của việc áp dụng mô hình multi-tier là việc thay đổi ở lớp này ít ảnh hưởng tới các lớp khác cũng như có thể dùng lại các lớp đã xây dựng (tính thừa kế).

Có một ví dụ nói về multi-tier khá nay là Duwamish7.0, cài .NET là có rồi. Dô phần Sample set up cái này xong là coi source ớn luôn.

XI_TRUM
15-07-2003, 18:29
OK, nhưng gì bạn nói mình cũng biết nhưng cái mà mình muốn biết là :
Giả sử 2 client cùng kết nối vào và lấy cùng 1 bảng table vào Dataset (offline) sau đó cùng update vào 1 dòng dữ liệu thì theo bạn chuyện gì xảy ra và lớp giữa của bạn xử lý ra sao. Do bạn viết Web nên dùng IIS vì vậy lớp giữa bạn chỉ viết những hàm nghiệp vụ. Còn bây giờ bạn không viết ra Web mà là Window Application thì lớp giữa bạn phải làm sao hay vẩn dùng IIS sau đó GUI là sẽ Window App ???

-----------------------------------------------------------
Mail XI_TRUM: phuongnet@gmx.net

1011
16-07-2003, 10:05
Việc UPDATE một dòng dữ liệu một hay nhiều lần do các Client truy cập ta không cần quan tâm, chuyện này do ADO.NET lo. Dữ liệu chỉ thực sự được cập nhật vào CSDL khi ta gọi phương thức Update của DataAdapter.
Nếu muốn viết window application mà chạy trên Net thì phải viết 2 bản Client và Server. Mình vẫn dùng Dataset để luân chuyển dữ liệu giữa các lớp.

XI_TRUM
16-07-2003, 18:48
Bạn 1011 đã viết 3 lớp chưa, nếu bạn có ở TP HCM thì cho mình biết nhe, có mobile chứ. Cho mình để mình liên lạc và sẽ nói rõ với bạn hơn.

1011
17-07-2003, 08:25
Mình làm ASP.NET cũng mới đây thôi, ghiền lắm ;))) Cũng có nhiều vấn đề muốn trao đổi, mình đang ở TpHCM. XI_TRUM có thể liên lạc với mình qua mail: sunrise2td@yahoo.com

Cùng nhau tìm hiểu vể .NET

Tran Cong Dung
20-11-2003, 23:19
Hêhê, chào các bác, coi thử Duwamish7 đi, không thiếu cái gì đâu