2009-02-05 29 views
6

Tôi đang làm việc trên một ứng dụng web asp.net tương đối nhỏ và tự hỏi liệu có thực sự cần phải sử dụng kiến ​​trúc n-tier đầy đủ hay không. Đối với một ý tưởng về kích thước; có khoảng 20 bảng cơ sở dữ liệu.Có đáng sử dụng kiến ​​trúc 3 tầng cho các ứng dụng nhỏ (ish)

Trước đây tôi đã sử dụng phương pháp 2 tầng trong đó logic kinh doanh và truy cập dữ liệu được nhóm lại với nhau thành một thư viện lớp đơn là một ứng dụng web asp.net tạo tầng UI và điều này dường như hoạt động tốt.

Có kích thước ngưỡng hoặc một số quy tắc chung mà bạn nên sử dụng n-tier không?

Trả lời

14

Bây giờ nó có thể tương đối nhỏ nhưng bạn nghĩ nó có thể phát triển trong tương lai không? Trong khóa học của bạn, bạn phải thực dụng, nhưng nếu bạn đã có sự phân chia tự nhiên của mối quan tâm trong hội đồng duy nhất của bạn thì nó khá dễ dàng để chia thành hai hoặc nhiều hội đồng. Nếu bản thân các lớp kết hợp logic nghiệp vụ và truy cập dữ liệu thì bạn có nhiều công việc hơn trong tay. Tuy nhiên, tôi cho rằng gần như không có nhiều công việc để viết logic truy cập dữ liệu của bạn trong một assembly và logic nghiệp vụ của bạn ở một mặt khác, song song nếu được yêu cầu, hơn là viết tất cả ở một nơi ngay từ đầu.

3

Nếu bạn dự đoán tăng trưởng hoặc thay đổi dưới bất kỳ hình thức nào, nó sẽ giúp củng cố các cấp độ rõ ràng ngay bây giờ. Nhưng nếu đây là dự án của riêng bạn và bạn không quan tâm đến việc nâng cấp chi phí thay đổi hoặc mã tích hợp chặt chẽ, thì chỉ cần hack nó đi như một lớp.

Đó là tất cả về chi phí trong tương lai. Trong hiện tại, chỉ cần lập trình khi bạn đi là đến nay là rẻ nhất, nhưng không đáp ứng với thay đổi rất tốt. Với quy hoạch cấp, có một chi phí trả trước, nhưng nó có thể xử lý thay đổi và tách ra toàn bộ triển khai lớp tốt hơn so với cách tiếp cận đầu tiên có thể.

Vì vậy, quy tắc chung của bạn được điều chỉnh bởi ai sẽ trả tiền cho thay đổi và thời điểm.

1

Có kích thước ngưỡng hoặc một số quy tắc ngón tay cái nơi bạn nên sử dụng n-tier?

Không phải người mà tôi biết, nhưng tôi sẽ giải thích điều này: nếu có cơ hội, ứng dụng web này có thể phát triển (hoặc thay đổi chương trình phụ trợ) và/hoặc ai đó có thể sẽ duy trì nó, tôi ' d xem xét đi với một cách tiếp cận n-tier.

3

Có nó rất đáng giá. Những gì bạn đang đề xuất là hack một giải pháp với nhau. Tôi không thể nói với bạn bao nhiêu lần điều này đã mang lại cho tôi đau đớn và đau khổ. Mặt khác của đồng tiền đó là các nhà phát triển phi hành gia, những người vượt qua các giải pháp của họ. Bạn cũng muốn tránh điều này. Đơn giản, xây dựng ba lớp của bạn, tôi đề nghị bạn thử LINQ to SQL, nó giúp xây dựng DAL một cách nhanh chóng, và sau đó bạn có thể tập trung vào xây dựng một giao diện người dùng mảnh mai, và một BLL sẽ xử lý việc nâng hạng nặng. Nó sẽ không đưa bạn nhiều thời gian hơn để làm điều đó và nó sẽ cho phép kiểm tra đơn vị sau này.

1

Chỉ cần giữ cho nó có thể. Nó có lẽ quá mức nhưng bây giờ không viết chính mình vào một tình huống mà nó không thể. Tái cấu trúc trên một quy mô lớn sẽ đưa bạn lâu hơn xây dựng lại nó từ đầu (và có thể sẽ chỉ là vậy, xây dựng lại từ đầu).

Dự án cuối cùng tôi làm việc (đến muộn) được viết theo cách phá vỡ các tầng thực tế là không thể. Logic dữ liệu đan xen với logic nghiệp vụ đan xen với logic trình bày. Trong ngắn hạn, nó đã được tốt như nó đã từng có được bởi vì sửa chữa nó sẽ mất vài tháng.

Không quá khó để giữ mọi thứ được phân tách như tôi đã nói trước đó, chỉ cần giữ cho nó có thể.

Các vấn đề liên quan