8

Đối với những người có kinh nghiệm với khu vực di động,di động Diện tích bất lợi

Tôi muốn biết nếu có nhược điểm để sử dụng chúng và tại sao bạn sẽ không sử dụng chúng để phá vỡ một ứng dụng MVC lớn xuống phần các bộ phận.

+0

Là một bình luận bên cho câu trả lời đã đăng của tôi, tôi muốn làm rõ rằng có sự khác biệt giữa Khu vực di động và các khu vực tiêu biểu hơn. Nếu khu vực di động không phù hợp với nhu cầu của bạn, khu vực thông thường có thể làm. –

+1

Xin chào @DaveA, tôi đồng ý với bạn và đó là những gì tôi đang sử dụng tại thời điểm này. – Sam

Trả lời

12

Hãy bắt đầu với các

Định nghĩa:

Một Portable Area là một dll chứa items mà thông thường sẽ là một phần của giải pháp của bạn. Khu vực di động chứa Chế độ xem, Bộ điều khiển, Mô hình, thậm chí là JS Scripts, tệp CSS và hình ảnh.

Lý tưởng nhất, items trong Khu vực di động của bạn hoạt động cùng nhau để tạo chức năng gắn kết. Nếu không, bạn có thể không được hưởng lợi từ việc có một khu vực di động.

Benefit

tôi so sánh khu vực di động để Web Forms Web Parts vì họ đều là một nỗ lực để trả lời câu hỏi:

Làm thế nào để tạo tái sử dụng được chức năng?

Bạn sẽ được hưởng lợi từ Khu vực di động nếu bạn muốn tạo chức năng được sử dụng trong nhiều dự án hoặc được phân phối dưới dạng chức năng được các bên thứ ba sử dụng.

Nhược điểm

Mỗi khi bạn thực hiện thay đổi đối với bất kỳ View, JS File, CSS File, hoặc hình ảnh trong Khu di động của bạn, bạn sẽ cần phải xây dựng lại nó. Tôi nhấn mạnh những thành phần này vì chúng thường không cần phải được xây dựng lại khi được kiểm tra hoặc phát triển.

Điều này có thể trở thành sự cố. Nếu bạn thấy mình xây dựng lại mỗi khi bạn tinh chỉnh CSS, 30 giây thay đổi sẽ trở thành 2 phút thay đổi. Làm 30 trong số đó và bạn đã kéo dài 15 phút giá trị của công việc vào 2 giờ.

Khu vực di động dành cho chức năng dành cho người lớn được sử dụng lại trong nhiều dự án hoặc giải pháp như hiện trạng.

  • Khu vực di động không lý tưởng cho chức năng đang trong giai đoạn phát triển ban đầu.

  • Khu vực di động không lý tưởng cho chức năng chỉ tồn tại trong 1 giải pháp hoặc dự án.

9

Nhiều điều đã nói. Tôi có một số kinh nghiệm trong việc làm việc với Portable Areas, và đây là quan điểm cá nhân của tôi.

  • MvcContrib chưa được cập nhật kể từ một năm (xem nuget). Nếu bạn xem codeplex, bạn sẽ thấy rằng không có quá nhiều cập nhật trong mã nguồn kể từ lần phát hành cuối cùng. Nó có thể được trưởng thành, nhưng không hỗ trợ có thể có vấn đề.

  • Khu vực di động được chứa trong một cụm đơn. Nó dễ dàng hơn để tái sử dụng và nâng cấp chắc chắn, nhưng thách thức là làm thế nào để bạn cho phép đủ quyền kiểm soát giao diện người dùng bởi ứng dụng khách. Ngay cả khi đó là một tính năng có thể tái sử dụng, đôi khi bạn vẫn muốn sử dụng bố cục chính hoặc partials.

  • Tất cả ressources web (CSS, Js, Views) phải nhúng Tài nguyên (bao gồm trong dll). Điều này có nghĩa rằng nó thực sự thực sự là một nỗi đau để dev/debug vì mỗi sửa đổi mã đòi hỏi phải xây dựng lại. Ngoài ra, bạn cần phải trang web của khách hàng để lưu trữ các khu vực di động.

  • Khu vực di động sử dụng Nhà cung cấp đường dẫn tùy chỉnh ảo. Mã nhà cung cấp đường dẫn ảo tùy chỉnh chưa được kiểm tra và hoàn toàn không thể thực hiện được. Việc sử dụng các nhà cung cấp đường dẫn ảo được khuyến khích bởi nhóm ASP.Net vì chúng có thể gây ra các vấn đề về hiệu năng.

  • Khu vực di động Gói Vs Nuget. Các khu vực di động được thiết kế cách đây bốn năm (trước Nuget). Các khu vực có thể giải quyết được khả năng dễ dàng chuyển tải, xem và tài sản (Css, javacript) vào một ứng dụng riêng biệt. Nuget cũng đã giải quyết vấn đề này.

Tuy nhiên, ngay cả với tất cả những bất lợi này, nhóm của tôi vẫn đang sử dụng. Tại sao ? bởi vì đó là giải pháp đúng vào đúng thời điểm cho chúng tôi.

+0

Cảm ơn bạn đã đánh vào đầu, bạn đã thuyết phục tôi chống lại nó và gắn bó với việc sử dụng các Vùng thay thế. Stickler là vấn đề với nhà cung cấp đường dẫn ảo. – Sam

+2

Nuget không giải quyết vấn đề giữ chức năng riêng biệt anyway, nó chỉ tạo điều kiện cho việc sáp nhập nguồn và hội đồng thành một dự án hiện có. Làm cho việc hợp nhất đó hoạt động đúng, xử lý nâng cấp và xử lý hậu quả khủng khiếp nếu bạn làm sai nó vẫn là tất cả đối với bạn, đặc biệt là khi nói đến tài sản JS/CSS và thay đổi cấu hình (tức là chèn web.config). Khu vực di động không tiêm bất kỳ mã nguồn vào dự án nhập khẩu, mà tôi nghĩ là tốt cho sự ổn định. – shahzbot