Trong .NET (Visual Studio), khi nào bạn tạo một hội đồng mới?


9

Tôi đang làm việc trên một ứng dụng Silverlight. Tôi đã chia nó thành nhiều cụm:

  • Miền
  • Các kho lưu trữ (mọi thứ vẫn tồn tại trong cơ sở dữ liệu Sterling)
  • Giao diện người dùng
  • ...

Đây là cách tôi đã học nó, nhưng tôi tự hỏi. Nếu bạn biết các DLL sẽ không được sử dụng lại, có cần phải tách chúng ra không? Hoặc bạn có thể đặt mọi thứ trong một cụm và sử dụng các thư mục và không gian tên để giữ cho nó gọn gàng?

Tôi cũng đã thấy các dự án có quá nhiều hội đồng. Thay vì sử dụng không gian tên, nơi nó sẽ thích hợp.

Vậy: khi nào bạn tạo một hội đồng mới cho một số đoạn mã mới? Bất kỳ nguồn lực tốt về chủ đề này? Và bạn có phân chia mã kỹ thuật (tên miền, dữ liệu, ui, v.v.) và / hoặc chức năng (ví dụ: quản trị bệnh nhân, bệnh nhân-y tế, hậu cần bệnh viện, ... - có lẽ chỉ dành cho các ứng dụng cấp doanh nghiệp lớn hơn)?

Câu trả lời:


1

Tôi khuyên bạn nên tạo các hội đồng riêng biệt cho các lớp rơi vào "mô-đun" một cách hợp lý. Điều này không chỉ tốt cho việc tái sử dụng và bảo trì mà còn là cách để thực thi số lượng phụ thuộc ít nhất giữa các lớp.

Nhiệm vụ sẽ là giảm thiểu số lượng tài liệu tham khảo cho các hội đồng khác mà mỗi hội đồng cần, chủ yếu việc này sẽ được thực hiện thông qua các giao diện và sự kiện. Có các lớp trong các hội đồng khác nhau sẽ làm cho sự phụ thuộc rất rõ ràng. Ngược lại với điều đó nếu bạn chỉ sử dụng một hội đồng, thì rất dễ bỏ qua suy nghĩ về sự phụ thuộc vì mọi thứ đều có thể truy cập được.

Tất nhiên bạn không nên phóng đại nhưng tách biệt khi thích hợp. Hãy nghĩ về nó như thế này: "Các lớp này thuộc về nhau và không cần biết về các lớp này" và tách ra theo các dòng đó


1
Phụ thuộc vào ý nghĩa của "mô-đun", nhưng tôi thường phân chia logic liên quan bằng cách sử dụng không gian tên thay vì tập hợp. Hãy nhớ rằng, không gian tên có thể trải rộng các hội đồng. Các hội đồng là đơn vị triển khai và vì vậy bạn nên xem xét việc cắt các hội đồng của mình để phù hợp với kịch bản triển khai của bạn.
Ed James

3
Không phải là một ý tưởng tốt. VS trở nên rất chậm chạp khi một giải pháp chứa nhiều hơn một vài dự án.
nikie

4
Nếu VS của bạn trở nên quá chậm chạp, bạn đang chạy phiên bản cũ hoặc máy tính chậm. Tôi có các dự án lớn với hơn 30 dự án được biên dịch trong vài giây. Sau đó, một lần nữa tôi có rất nhiều ram, lõi và SSD :) Bạn không nên phóng đại tất nhiên mà chỉ tách biệt khi thích hợp, hãy nghĩ về nó như thế này "Các lớp này thuộc về nhau và không cần biết về các lớp này" và tách biệt dọc theo những dòng đó
Homde

Đánh dấu đây là câu trả lời vì nhận xét về sự phụ thuộc. Câu trả lời của Ed James ít nhất là có giá trị và chính xác, nhưng câu trả lời này phù hợp hơn với tình huống của tôi.
Peter

2
Sau phương pháp này bạn có thể kết thúc với một loạt các hội: A, B, C, D, E, F, G, H, I, J, K. Bất cứ nơi nào bạn tham khảo lắp ráp A, bạn cũng phải tham khảo lắp ráp phụ thuộc của nó: B, C, D. Nhưng lắp ráp Cphụ thuộc vào: E, F, G, Hvì vậy chúng tôi sẽ cần những người quá. Vì vậy, bất cứ khi nào bạn cần một số chức năng của Abạn, bạn phải kéo xuống 7 hội đồng bổ sung để làm cho nó hoạt động; đảm bảo bạn có được các phiên bản chính xác của mỗi lắp ráp. Chào mừng đến với địa ngục DLL mới.
Ed James

14

Một hội là đơn vị triển khai cho một ứng dụng .NET; do đó, bạn nên xem xét việc kết hợp việc cắt các cụm của bạn với kiến ​​trúc triển khai của bạn.

Các hội đồng cũng hữu ích khi bạn cần kiểm soát phiên bản riêng biệt trên một số mã. Ví dụ: khi bạn có các giao diện chung sẽ được hưởng lợi từ kiểm soát phiên bản độc lập, bạn nên tách mã đó thành một cụm.

Hãy nhớ rằng không gian tên có thể trải rộng các cụm. Trong rất nhiều trường hợp, nó là đủ để phân tách hành vi bằng cách sử dụng không gian tên. Nhìn vào .NET mscorlib.dllrằng trong một tập hợp duy nhất chứa mã bao gồm một mảng lớn các hành vi chỉ được phân tách bằng không gian tên.

Nếu bạn muốn có một số thẩm quyền về chủ đề này, không tìm đâu xa:

Nguyên tắc thiết kế khung

Nguyên tắc thiết kế khung: Các quy ước, thành ngữ và mẫu cho các thư viện .NET có thể tái sử dụng (phiên bản 2) của Krzysztof Cwalina và Brad Abrams.


Cảm ơn các cuốn sách tham khảo thực sự. Tôi sẽ kiểm tra xem. Bạn có thể xây dựng kiến ​​trúc triển khai? Việc triển khai 10 tệp DLL khác với triển khai 1 như thế nào? Trừ khi bạn có thể cập nhật một trong mười tệp, trong khi các tệp khác vẫn chưa được xử lý?
Peter

1
@Peter: nếu bạn mã hóa 10 hội đồng luôn được triển khai cùng nhau, thì bạn có thể đã đơn giản hóa việc kiểm soát và triển khai phiên bản bằng cách đặt tất cả mã vào một cụm . Nếu 10 hội đồng không phải lúc nào cũng được triển khai cùng nhau thì việc có các hội đồng riêng biệt có thể hữu ích.
Ed James
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.