6

Tôi có một dự án hiện đang ở khắp nơi và tôi đang nghĩ đến việc biến nó thành MVC.Tôi có nên sử dụng một khung công tác hoặc viết MVC của riêng mình không?

Vấn đề là hệ thống hiện đang được sử dụng và tôi không thể thay đổi giao diện (Đó là trong khung: s) Ngoài ra còn có một số thứ mà tôi sẽ cần để xử lý bản thân như tạo mật khẩu, đăng nhập và cấp người dùng.

Tôi đã có mặt mô hình xuống của MVC vì vậy tôi tự hỏi là nó có giá trị sử dụng một khung như Zend Framework hoặc CakePHP hay chỉ để mã View và Controllers của riêng tôi làm việc xung quanh vấn đề này?

Tôi sẽ phải làm việc này một cách chậm chạp và tôi không chắc liệu tôi có thể làm điều đó nếu tôi sử dụng một trong các khung công tác đã sẵn sàng chưa.

Trả lời

8

Thông thường tôi sẽ chùn bước trong nỗi kinh hoàng và tham mưu chống lại đưa thêm một khuôn khổ web MVC vào thế giới, nhưng đó là công bằng cần lưu ý rằng chủ của chúng tôi Joel và Jeff có một quan điểm về vấn đề này:

Từ Joel: In Defense of Reinventing the Wheel Từ Jeff: Don't Reinvent the Wheel

Một ý nghĩ cuối cùng: Nếu đó là dự án một người thì bạn chỉ ảnh hưởng đến chính mình với lựa chọn này. Sức đề kháng của tôi sẽ tăng lên nếu một nhóm phát triển một sản phẩm tồn tại lâu dài đã được tham gia. Bạn có thể làm hại cho nhóm và khách hàng nếu bạn tự mình cuộn.

+0

Đây là một điểm công bằng. Hiện tại chỉ có tôi duy trì và mã hóa nó, nhưng tôi chú ý đến các lập trình viên tương lai đang làm việc trên đó, đó là một phần lý do tôi đang tái cấu trúc mã (mã khác là khó bảo vệ của nó) – xenon

+0

Đủ công bằng, xenon. +1 từ tôi. – duffymo

+0

Ồ, và cảm ơn các liên kết btw :) – xenon

4

Bạn sẽ thấy CakePHP nói riêng khá "xâm lấn". IMHO cho điều này bạn nên sử dụng một khung nhẹ hoặc viết của riêng bạn. Tôi không bình thường tư vấn cho việc viết của riêng bạn cho loại điều này nhưng khi bạn đang đối phó với phần mềm bạn không thể thay đổi nó đôi khi có thể là giải pháp tốt nhất. Ngoài ra, một bộ điều khiển trong PHP không phải là điều khó viết nên đôi khi bạn có thể kết thúc việc giải quyết không cần thiết giải pháp nếu bạn sử dụng giải pháp prefab quá nặng hoặc không phù hợp với những hạn chế hiện tại của bạn.

Đối với khung MVC nhẹ, tôi khuyên bạn nên CodeIgniter.

+0

Cảm ơn, tôi sẽ không được cung cấp bất cứ lúc nào bởi quyền hạn để làm điều này vì vậy tôi nghĩ rằng tôi là gunna phải pha/lẻn nó trong: P Không bao giờ được sử dụng CodeIgniter nhưng tôi biết nó sẽ dễ dàng để đón – xenon

3

Tái chế bánh xe là xấu. Sử dụng một khuôn khổ đã thử và thử nghiệm như Zend Framework trừ khi bạn có một lý do thực sự, thực sự đặc biệt không.

+4

Phụ thuộc là xấu. Sử dụng một khuôn khổ đã thử và thử nghiệm mà bạn đã phát triển, trừ khi bạn ổn với tùy thuộc vào ý thích của khung công tác bên ngoài. – Andomar

+0

Đúng, nhưng khung công tác như ZF có thể được xem như một tập hợp các gói độc lập, các vấn đề phụ thuộc có thể ít quan trọng hơn, CakePHP – karim79

+0

Tôi đang nghĩ nhiều hơn ZF so với CakePHP vì các tính năng của bánh dường như khó tùy chỉnh hơn (nhưng sau đó một lần nữa nó là khuôn khổ phát triển nhanh chóng vì vậy tôi sẽ để cho nó đi) – xenon

8

Tôi đã viết khuôn khổ MVC của riêng mình cho Coldfusion vì "hương vị của tháng" hiện tại của Mach-II rất chậm. Sau khi chuyển đổi thời gian tạo trang của tôi giảm từ 2-5 giây xuống còn 9 mili giây. Trong 3 năm qua, tôi đã phát triển khuôn khổ này thành đối thủ cho bất kỳ khung công tác mã nguồn mở hoặc thương mại nào mà tôi đã sử dụng (và tôi đã sử dụng khá nhiều) bằng cách xây dựng các thư viện và thành phần chức năng cho một phạm vi các tác vụ phổ biến (CMS, xử lý CC, Thao tác hình ảnh, v.v ..)

Mặc dù không có nghi ngờ gì đó "tái phát minh ra bánh xe" mà tôi đã kết thúc chính xác là những gì tôi cần làm. Tôi hiểu nó hoạt động như thế nào với một sự thân mật mà không có tài liệu nào có thể cung cấp. Tất nhiên, một ngày nào đó, một số lập trình viên trong tương lai có thể nguyền rủa mã của tôi có nhu cầu sử dụng thư viện yêu thích của họ - nhưng thẳng thắn - tôi không thể quan tâm ít hơn. Tôi đã viết nó cho ME, nó làm những gì tôi cần và nó làm tốt. Tôi cũng học được rất nhiều trong quá trình này.

Có nói rằng bạn KHÔNG tự động làm cho khách hàng của bạn/đồng nghiệp làm tổn thương bằng cách viết khung của riêng bạn. Các khung công cộng có xu hướng không có hướng thực sự để chúng có xu hướng sưng húp ồ ạt cố gắng giữ cho mọi người hạnh phúc.Điều này sưng lên có nghĩa là nhiều hơn để tìm hiểu, nhiều hơn có thể đi sai. Khuôn khổ của bạn sẽ đáp ứng một bộ yêu cầu nhỏ hơn nhiều và với tài liệu tốt có thể dễ hiểu hơn nhiều và thiết lập hơn là một công cụ được thiết lập công khai hơn.

Tôi nói hãy tiếp tục, sống ở cạnh một chút. Có lẽ trong 5 năm bạn sẽ phát hành tiếp theo "Mach-II" hoặc bất cứ điều gì và tất cả chúng ta có thể bitch về nó.

+0

Nghe nói, thật tuyệt vời như thế nào (khi bạn có một chút kỹ năng) bạn có thể cuộn khung của riêng bạn ra và có hiệu suất cao hơn nhiều và nhanh hơn bất cứ thứ gì được phát hành công khai. – damianb

+0

Damian tôi có thể xác nhận rằng từ kinh nghiệm của riêng tôi với mvc của riêng tôi. – unity100

2

Tùy thuộc vào nhiệm vụ của bạn. Một số nhiệm vụ tầm thường đã có giải pháp exellent, nhưng đôi khi nó khó khăn hơn để sửa lỗi hoặc để phù hợp với một giải pháp cho nhu cầu của bạn hơn là viết của riêng mình.

Dù sao khi bạn bắt đầu sử dụng một khung công tác - bạn phải dành chút thời gian để tìm hiểu nó. Và đôi khi viết nhanh hơn việc học.

Chỉ cần google về các giải pháp bạn cần, tìm một số người trưởng thành, xem chức năng của họ, đọc các lỗi mở và quyết định xem bạn có muốn sử dụng nó hay không. Đó là tất cả những gì tôi có thể nói cho bạn mà không có nhiệm vụ chi tiết.

2

Vấn đề là hệ thống hiện đang được sử dụng và tôi không thể thay đổi giao diện (Đó là trong khung: s) Ngoài ra còn có một số điều mà tôi sẽ cần phải xử lý bản thân như tạo mật khẩu, đăng nhập và người dùng cấp độ.

Tôi sẽ phải làm việc này một cách chậm chạp và tôi không chắc liệu tôi có thể làm điều đó nếu tôi sử dụng một trong các khung công tác đã sẵn sàng chưa.

Không biết chi tiết về tình huống của bạn, tôi muốn nói rằng hệ thống hiện đang chạy sẽ làm cho khung MVC mục đích chung khó tích hợp.

Có nói rằng, nhiều khung MVC bao gồm các thành phần mô-đun có thể được sử dụng như các thực thể độc lập. Bạn có thể rút ra một số tính năng nhất định của các khung công tác đó để sử dụng trong dự án của bạn.

Xác thực người dùng, quản lý phiên và xử lý mật khẩu là một lĩnh vực cụ thể chỉ nên được xây dựng từ đầu nếu bạn có nhiều kinh nghiệm trong lĩnh vực đó.

+0

Quản lý người dùng và quản lý phiên làm việc tất cả đều hoạt động vào lúc này, tôi chỉ cần cấu trúc lại nó. Tôi sẽ cần phải sửa đổi khuôn khổ để xử lý cách ứng dụng của tôi auths – xenon

1

Phát triển một khung công tác không phải là một nhiệm vụ dễ dàng, bằng cách này, bạn nên viết mã, kiểm tra, vá, kiểm tra nhiều hơn và phát triển các tính năng mới liên tục. Vì vậy, nếu bạn không làm cho nó trở thành nguồn mở, chúng tôi sẽ có ý tưởng tốt cho việc có một cộng đồng các nhà phát triển thử nghiệm lớn, bạn không nên nghĩ đến việc phát minh lại bánh xe. Đó là vòng, nó quay tốt, do đó, chọn một trong những tốt nhất phù hợp với nhu cầu của bạn và mất lợi nhuận của một số tháng mã hóa và thử nghiệm của cộng đồng.

Lời chúc tốt nhất

1

Câu hỏi cũ, nhưng vẫn hợp lệ. Cá nhân tôi là một loại "từ đầu" của anh chàng. Tôi thích tiết kiệm thời gian, nhưng không phải tất cả chi phí. Vì vậy, tôi sử dụng khung công tác thay thế cho nhau. Điều đó có nghĩa là tôi tạo tất cả các lớp/quy tắc kinh doanh của tôi trong một quy trình TDD bên ngoài bất kỳ khung công tác nào, và sau đó tích hợp chúng vào một khuôn khổ cho phép hợp nhất công việc của tôi với các dịch vụ tiêu chuẩn và librairies. Nhưng công việc của tôi không gắn liền với họ. Chúng được tách ra và nhanh chóng.

Để có câu trả lời trực tiếp hơn cho câu hỏi. Tôi đã tạo CMS của riêng mình. Và tôi có thể nói với bạn rằng, nếu bạn muốn tìm hiểu về một cái gì đó, hãy tạo ra cái của riêng bạn. Ngay cả khi bạn không bao giờ chia sẻ nó. Bạn kết thúc với một sự hiểu biết tốt hơn nhiều về các hệ thống khác và nó sẽ làm cho nó dễ dàng hơn nhiều cho bạn để chọn một. Sau đó, một lần nữa bạn có thể không bao giờ muốn sử dụng một số khác thì bạn.Nhưng điều đó thường xảy ra sau một vài sửa đổi :)

Vì vậy, hãy tạo riêng của bạn, nhưng hãy nghiên cứu những người khác.

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