2009-09-29 34 views
9

Tôi có một trang web khá lớn và tôi đang tìm cách hiệu quả nhất để quản lý nó (tôi là người lập trình duy nhất).Các trang web lớn của MVC, sử dụng một bộ điều khiển ... hoặc nhiều bộ điều khiển?

Tôi đang cố gắng tạo ra một cấu trúc MVC rất đơn giản (tôi không muốn sử dụng một khung công tác) để giúp giữ tất cả mã của mình theo thứ tự.

Đối với một trang web lớn, tốt hơn là chỉ có một bộ điều khiển để xử lý tất cả các trang hoặc tốt hơn và dễ phân tách chúng hơn?

Nếu chỉ một, ví dụ hay về bộ điều khiển không có khung là gì?

+1

Tại sao bạn muốn tránh một khuôn khổ? Trong khi một số là hạn chế (làm điều đó * này * cách, hoặc bạn sẽ phải hack nó đến chết), có một số đó là khá linh hoạt (chọn và chọn những gì bạn muốn). –

+2

tốt, tôi chủ yếu muốn tránh vì tôi có tự do và thời gian để thực hiện của riêng tôi, và tôi thực sự muốn có một nền tảng kinh nghiệm với một trước khi tôi bắt đầu sử dụng một khuôn khổ. cũng ... tôi không muốn nhiều hơn tôi cần, nói chung – johnnietheblack

Trả lời

4

Tôi sẽ chia mọi bộ phận hợp lý thành các bộ điều khiển khác nhau - nếu đó là tất cả các trang tĩnh, sau đó phân phối nó với tất cả cùng một bộ điều khiển 'trang tĩnh'.

Nếu bạn có một số trang tĩnh, trang Câu hỏi thường gặp (hoặc phần), danh sách sản phẩm - hãy sử dụng bộ điều khiển cho từng phần khác nhau. Vì vậy, các trang tĩnh sẽ được kéo từ các tệp phẳng hoặc cơ sở dữ liệu bởi một bộ điều khiển, các trang Câu hỏi thường gặp sẽ được tạo ra từ bảng Hỏi đáp bởi một bộ điều khiển khác, các sản phẩm và thông tin sẽ được tạo ra bởi bất kỳ nguồn nào cho điều đó.

Mỗi lần tạo trang hoặc dữ liệu được truy cập, hãy sử dụng bộ điều khiển khác.

Tất nhiên, kế thừa lớp có thể được sử dụng để tạo lớp cơ sở với mã cần thiết bất kỳ bộ điều khiển nào.

Không chắc chắn ý của bạn là gì bởi bộ điều khiển phi khung - tôi sẽ kiểm tra khung công tác Zend (mẫu), mẫu MVC và thậm chí chính bộ điều khiển có thể được sử dụng ngoài phần còn lại của khung công tác.

3

Thông thường mọi người chia bộ điều khiển thành bộ điều khiển tập trung vào các khu vực cụ thể của chức năng.

Sau đó, họ gắn một "bộ điều khiển phía trước" trước tất cả, vì vậy chỉ có một điểm vào ứng dụng. Công việc duy nhất của bộ điều khiển phía trước là định tuyến các yêu cầu đến tới bộ điều khiển thích hợp.

Nhìn vào cách thành phần Zend_Controller được thiết lập. Nó có thể cung cấp mọi thứ bạn cần và bạn có thể tự do sử dụng nó mà không cần mua vào Khung công tác Zend hoàn chỉnh.

1

Điều đó phụ thuộc vào cách các bộ phận khác của bạn sẽ hoạt động. Nếu bạn chỉ có một tập tin mô hình thì có lẽ nó không đáng để chia bộ điều khiển. Nếu bạn có thể chia mô hình thành các phần cũng như bộ điều khiển, hãy thực hiện điều đó.

Tuy nhiên, tôi thường thấy rằng có quá nhiều sự chồng chéo giữa các mô hình để phân tách chúng. Bạn có thể có một mô hình cho các bài viết, nhưng nếu bạn muốn hiển thị 20 bài viết hàng đầu trong một thanh bên trên các trang khác, mã đó phải nằm trong mô hình bài viết - và bạn sẽ cần nó trên mọi trang.

Thành thật mà nói, cách duy nhất để làm điều đó là thử và xem. Bắt đầu với một điểm vào duy nhất, và nếu nó được quá, khó sử dụng, refactor nó thành những phần nhỏ hơn.

1

Một bộ định tuyến/bộ điều phối, nhiều bộ điều khiển sẽ là lời khuyên của tôi. Bộ điều khiển nên ánh xạ tới URL, có nghĩa là chức năng khác nhau. Bộ điều khiển sẽ cộng tác với các dịch vụ khác nhau để hoàn thành từng trường hợp sử dụng, do đó, một bộ điều khiển cho toàn bộ ứng dụng của bạn sẽ trở nên quá khó sử dụng nếu ứng dụng của bạn có nhiều trường hợp sử dụng.

+0

nếu tôi có một vài trăm trang ... làm thế nào để tôi làm điều đó router? nó chỉ là một công tắc khổng lồ()? – johnnietheblack

+1

Spring thực hiện điều đó bằng cách ánh xạ URL tới bộ điều khiển. Có lẽ bạn cần một người lập bản đồ như thế. Một công tắc sẽ giòn. – duffymo

4

Tôi có xu hướng tách các bộ điều khiển dựa trên trách nhiệm của họ đối với một phần cụ thể của trang web/ứng dụng. Điều này làm cho việc duy trì mã dễ dàng hơn nhiều. Hơn nữa, tôi nhóm bộ điều khiển (và quan điểm, mô hình) trong các mô-đun (thư mục). Dưới đây là một ví dụ từ một dự án hiện tại tôi đang làm việc trên:

  • Blog
    • bài
    • Comments
    • Categories
  • Cài đặt
    • bài
    • Users

Trang web phức tạp hơn, tôi càng sử dụng nhiều mô-đun hơn. Mặc dù hầu hết các mô-đun của tôi chỉ chứa một bộ điều khiển 'Chỉ mục', tôi thực sự thích tổ chức mà họ cung cấp.

Sau đó, tôi sử dụng bộ định tuyến (bộ điều khiển phía trước) ánh xạ URI kiểu REST tới mô-đun/bộ điều khiển/hành động thích hợp. Ví dụ: mysite.com/blog/posts/view/7 sẽ gọi Controller_Posts :: view (7) từ mô-đun "blog". Một lợi ích bổ sung của việc sử dụng các mô-đun là tôi có thể có nhiều URI cụ thể hơn nếu tôi không có mô-đun. Mặc dù tôi cho rằng điều đó có thể được khắc phục bằng cách sử dụng một bộ định tuyến hỗ trợ định tuyến tùy chỉnh, nhưng tôi không quá thích điều đó.

Như nhiều thứ khác, nó chứa đựng những gì bạn cảm thấy thoải mái với tư cách là nhà phát triển, nhưng chúng tôi có thể đồng ý rằng bạn có nhiều tổ chức hơn, miễn là bạn không quá phức tạp .

Nhanh chóng sang một bên, tôi khuyên bạn nên xem xét sử dụng khung. Tôi hiểu nếu bạn không muốn sử dụng một trong những cái đã có, vì tôi cũng tránh những thứ đó. Tôi đã tự viết cho riêng mình trong năm qua đã phục vụ tôi rất tốt. Đó là một trải nghiệm học tập tuyệt vời và nó chỉ chứa những gì Tôi muốn/cần. Điều đó đang được nói, bạn có thể muốn nhìn vào Kohana và CakePHP - chúng không quá cồng kềnh IMO và họ chắc chắn sẽ giúp bạn tiết kiệm thời gian nếu bạn quyết định không viết của riêng bạn.

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