Những lợi thế và bất lợi cần có từ việc sử dụng Web Framework? [đóng cửa]


16

Câu hỏi này tập trung vào việc trích xuất các ưu điểm và nhược điểm của việc sử dụng các Khung dựa trên Web : như Cake PHP, Zend, jQuery, ASP.NET). Câu hỏi này là hoàn toàn bất khả tri ngôn ngữ . Hãy để tôi bắt đầu với khái niệm "Đứng trên vai người khổng lồ ".

Ưu điểm:

  • Trao quyền cho Nhà phát triển - bằng cách sử dụng các tính năng mà trước đây đã lấy 100 dòng mã và nén chúng vào một chức năng đơn giản, gọi cho phép nhà phát triển tích hợp các tính năng phức tạp hơn vào Trang web của họ.
  • Cho phép phát triển ứng dụng nhanh hơn - điều này rất phù hợp với những người cần trang web được tạo trong một cửa sổ rất nhỏ (có ai có ví dụ nào về điều này không?)
  • Chi phí thấp hơn - cho phép các lập trình viên tiết kiệm chi phí cho khách hàng, một loạt khách hàng mới được tạo ra muốn có một trang web nhưng trước đây không thể chi trả cho chi phí phát triển cao hơn.

Nhược điểm:

  • Mất hiểu biết - bằng cách dựa vào các tính năng của khung, nhà phát triển có nguy cơ mất hiểu biết về cách mọi thứ hoạt động (bên dưới mui xe).
  • Vách cấu hình - một khi bạn đi xa hơn cấu hình của khung của bạn, năng suất của bạn giảm xuống ngay lập tức, có thể khó thực hiện các tính năng bên ngoài cấu hình khung.
  • Đường dành cho nhà phát triển - bạn (nhà phát triển) phải thực hiện mọi thứ theo cách mà nhà phát triển muốn bạn thực hiện.

Tôi tự hỏi những gì mọi người đưa ra quan điểm của tôi, và liệu có ai không đồng ý với họ không? Ngoài ra nếu mọi người có thêm điểm tôi sẽ rất biết ơn.

Câu trả lời:


12

Đây là điểm mấu chốt: có thể khó thực hiện các tính năng bên ngoài cấu hình khung.

Chúng ta hãy đi qua giả định này bằng giả định.

Mất hiểu biết - bằng cách dựa vào các tính năng của khung, nhà phát triển có nguy cơ mất hiểu biết về cách mọi thứ hoạt động (bên dưới mui xe).

Sai. Bạn sẽ không bao giờ mất hiểu biết về cách mọi thứ hoạt động. Khung không huyền diệu. Chúng chỉ là mã tiện dụng mà bạn không phải tự viết.

Tin hay không, bạn sẽ phạm sai lầm khi sử dụng khung. Bạn sẽ phải gỡ lỗi xuống các mức HTTP thấp nhất để hiểu bạn đã làm gì sai.

Bạn sẽ không bao giờ đánh mất những gì đang diễn ra dưới mui xe. Trừ khi, tất nhiên, khuôn khổ của bạn rất hoành tráng và hoàn hảo đến mức bạn không bao giờ gặp vấn đề.

Vách cấu hình - một khi bạn đi xa hơn cấu hình của khung của bạn, năng suất của bạn giảm xuống ngay lập tức, có thể khó thực hiện các tính năng bên ngoài cấu hình khung.

Điều này làm cho ý nghĩa nhỏ quý giá.

Đầu tiên. Xây dựng mà không có khung có thể biến một công việc tầm thường thành một nhiệm vụ lập trình lớn bao gồm kiểm tra đơn vị, gỡ lỗi, chẩn đoán, kiểm soát cấu hình và tất cả những công việc không có giá trị khác phát minh lại trong khung. "Năng suất" đó như thế nào?

Thứ hai. Thực hiện những thứ bên ngoài khuôn khổ luôn là rất nhiều công việc bởi vì - ahem - thực hiện bất cứ điều gì bên ngoài một khung luôn luôn là rất nhiều công việc. Nó không có gì để làm với thời gian học và cấu hình khung. Thực hiện bất cứ điều gì ngoài khuôn khổ vốn đã khó.

Đường dành cho nhà phát triển - bạn (nhà phát triển) phải thực hiện mọi thứ theo cách mà nhà phát triển [khung] muốn bạn thực hiện.

Chính xác. Và đây thường là một điều tốt. Làm mọi thứ một cách nhất quán có giá trị hơn làm chúng theo cách sở thích cá nhân của riêng bạn. Nó có thể yêu cầu "học" và "hiểu" nhưng những thứ này có giá trị.

Vấn đề bảo mật - cung cấp cho mọi người những công cụ này để phát triển các trang web tìm kiếm chuyên nghiệp nhanh chóng là một rủi ro tiềm ẩn, mọi người có thể nhanh chóng tạo các trang web tìm kiếm chuyên nghiệp cho các công ty lừa đảo.

Gì? Điều này không có gì để làm với khuôn khổ. Gian lận là gian lận, không phân biệt các công cụ được sử dụng.


3
Tôi không đồng ý với bạn về "Mất hiểu". Nếu bạn lấy jQuery làm ví dụ, bạn chỉ cần xem hàng tá câu hỏi trên Stack Overflow trong đó rõ ràng là người hỏi không thể phân biệt giữa jQuery, JavaScript và DOM.
RoToRa

5
@RoToRa: Nếu bạn xem bất kỳ chủ đề cụ thể nào về SO (tức là lập trình C), bạn sẽ thấy một số lượng lớn người không thể hiểu được chuyện gì đang xảy ra. Thật vậy, một số người thậm chí không hiểu số dấu phẩy động là gì. Tôi không nghĩ đó là khuôn khổ. Tôi nghĩ rằng có một số người có khả năng hạn chế để hiểu công nghệ.
S.Lott

Scott thực sự rất tốt, bạn đã nhấn mạnh một số vấn đề. Quan điểm của tôi là với các khuôn khổ và gian lận là nó đã khiến việc phát triển một trang web chuyên nghiệp trở nên nhanh chóng, nhưng nó lại lạc đề (điểm tốt).
JHarley1

@ JHarley1: "nhưng nó đã lạc đề". Bạn có thể cập nhật câu hỏi để khắc phục điều đó.
S.Lott

1
"Mất hiểu" giả định rằng mọi người hiểu những gì xảy ra khi họ sử dụng ví dụ Java đơn giản. Nhưng bản thân Java thực hiện rất nhiều thứ trong phạm vi và thực tế bạn không thể biết chắc chắn điều gì xảy ra ở mức độ thấp, trừ khi bạn biết chính xác JVM trên nền tảng nào sẽ được sử dụng; nhưng không quan tâm đến các chi tiết như vậy là một trong những lợi thế của các ngôn ngữ như vậy, và điều tương tự cũng có thể nói về các khung.
dùng281377

3

Con: Cuối cùng có thể giảm hỗ trợ / Mất phổ biến

  • Nếu có hai khung web về cơ bản giống nhau và khung của bạn không thắng, có khả năng dự án sẽ chết. Trong tình huống này, bạn còn lại để tự duy trì khung (nguồn mở), viết lại ứng dụng hoặc tiếp tục không có cập nhật (nguồn đóng).
  • Tùy thuộc vào khung, bạn có thể buộc phải nâng cấp ứng dụng của mình với lịch phát hành của khung. Rơi quá xa phía sau có thể khiến bạn không đủ điều kiện để được hỗ trợ. Không có khuôn khổ, bạn có thể làm việc theo lịch trình của bạn. (Điều này phụ thuộc vào việc bạn có cần / muốn hỗ trợ hay không).

Pro: Mã cho doanh nghiệp

  • Các khung cho phép bạn không lo lắng về công việc nặng nề và tập trung vào mã trực tiếp mang lại giá trị cho doanh nghiệp.
  • Đôi khi, nâng cấp khung (chỉ hoạt động) cho phép bạn cung cấp các tính năng mới cho người dùng của mình trên thực tế "miễn phí". Đặc biệt với các khung đi kèm với các điều khiển tùy chỉnh (như lưới mà phiên bản mới có thể cung cấp một số loại tìm kiếm / bộ lọc).

Chúc mừng Ryan, có một số điểm tốt ở đây. Tôi chưa bao giờ coi Framework bị rơi / rơi từ ân sủng.
JHarley1

Tôi có thể nhận được một số phản hồi về downvote không?
Ryan Hayes

Tôi thấy nó hữu ích - tôi đã bỏ phiếu.
JHarley1

3

Ưu điểm

  • Thời gian phát triển nhanh hơn
  • Ít lỗi hơn
  • Phát triển chia sẻ nhanh hơn
  • Hỗ trợ thư viện
  • Tương tác DB dễ dàng

Nhược điểm

  • "Đóng hộp" vào khung
  • Thường không linh hoạt khi muốn mở rộng hoặc sửa đổi hành vi cốt lõi
  • "Lỗi doom" - lỗi phát sinh từ kiến ​​trúc cốt lõi hoặc kiến ​​trúc cơ bản không có dấu vết tốt đến nơi chúng bắt nguồn. Một ví dụ hoàn hảo là lỗi Spring khi sử dụng Grails.

Tôi ủng hộ việc sử dụng các khung cho tất cả nhưng đơn giản nhất trong các dự án. Nếu bạn cần thêm một biểu mẫu liên hệ với chúng tôi vào một trang web HTML hiện có, bạn có thể sử dụng một tệp PHP thay vì chuyển sang một khung công tác.


2

Một vài điều mà tôi nghĩ đến là ...

Ưu điểm

  • Tái sử dụng mã - bằng cách sử dụng khung, bạn đang sử dụng lại mã được kiểm tra và đúng.
  • Phát triển nhanh / tạo mẫu.
  • (thường) xác thực đầu vào tích hợp có thể được coi là an toàn (do nhà phát triển đang sử dụng chính xác)

Nhược điểm

  • Mất hỗ trợ. Đến với tâm trí ở đây là Symfony 1.4. Tôi tưởng tượng Symfony sẽ hỗ trợ 1.4 trong một thời gian khá lâu, nhưng biết rằng 2.0 không tương thích ngược, 1.4 có vẻ như là một điểm chết hỗ trợ trong những năm tới.
  • Trên không; Bằng cách sử dụng một khung, bạn đang chạy hàng ngàn dòng có thể không áp dụng cho ứng dụng cụ thể của bạn, nhưng áp dụng cho các ứng dụng khác. Một số người coi đây là một sự đánh đổi hợp lý và một số lựa chọn viết mã của họ từ đầu để đạt hiệu suất.
  • Sử dụng khuôn khổ sai cho nhu cầu cụ thể của bạn. Không phải tất cả các khung được tạo ra như nhau.

1

Tất cả phụ thuộc vào khuôn khổ bạn sử dụng.

Nếu bạn đang sử dụng ASP.NET, bạn đang ở thế bất lợi: Đó là một khái niệm trừu tượng rò rỉ lúc tốt nhất , và lúc tồi tệ nhất làm cho nó một nỗi đau để làm những điều tầm thường trong các khuôn khổ khác mà không che giấu một thực tế rằng bạn đang làm việc trên web.

ASP.NET MVC tìm cách khắc phục vấn đề đó và nó hoạt động rất tốt.

Các khung tồn tại để chúng ta có thể dành nhiều thời gian hơn để hoàn thành công việc và ít thời gian xây dựng giàn giáo hơn. Về vấn đề đó, tôi không thấy bất kỳ nhược điểm nào, trừ khi bạn thực sự muốn dành thời gian xây dựng giàn giáo.


Bạn thấy vấn đề của tôi với ASP.NET MVC là tôi đã phải học một số khái niệm và thực hiện những điều mà ASP.NET MVC đã làm tôi mất thời gian. Có lẽ bạn có thể nói nhược điểm của khung sẽ làm giảm năng suất trong khi bạn phải nắm bắt nó.
JHarley1

1

Tôi muốn thêm một số điểm.

  • Một trong những vấn đề lớn nhất với các khung công tác tôi tìm thấy là mọi người dừng lại để suy nghĩ. Họ chỉ muốn sử dụng khung vì nó tuyệt hoặc vì họ luôn sử dụng khung. Họ không dừng lại để suy nghĩ nếu việc sử dụng là hợp lý.
  • Cấp phép, mọi người dường như chỉ sử dụng các khung mà không thực sự nhìn vào giấy phép. Điều này có thể có ý nghĩa mà họ không nhận ra. Hoặc suy nghĩ về những gì xảy ra khi giấy phép thay đổi.
  • Sử dụng cho nhiều loại cùng một khung. Đôi khi chúng có thể là rất nhiều khung công tác thực sự làm khá nhiều điều tương tự. Là một công ty, bạn đưa ra các lựa chọn có giáo dục và không có khuôn khổ khác nhau cho mỗi dự án.
  • Theo kịp các phiên bản mới có thể là một thách thức

Tuy nhiên, tôi nghĩ rằng việc nỗ lực hơn một chút để đánh giá các khung, đánh giá giấy phép, giữ một danh sách rõ ràng về các khung sử dụng và có một chiến lược phiên bản thông minh là đáng giá khi bạn xem xét các Ưu điểm.

Ưu điểm:

  • khi bạn liên tục sử dụng các khung, thời gian học tập cho các dự án giảm cho những người đã làm việc trong các dự án của bạn.
  • sự phát triển nhanh hơn của riêng bạn
  • nhà phát triển trao quyền riêng của bạn

@Keedijk: Tôi chưa bao giờ thông qua việc cấp phép, có bất kỳ ví dụ nào về các khung trả phí không?
JHarley1

@ JHarley1 sồileafsd.com Tôi không biết rằng tôi gọi nó là "khung web" nhưng Mere Mortals .NET có các tiện ích mở rộng để giúp bạn xây dựng các ứng dụng web nhanh hơn. Mặc dù vậy, .NET Framework hiện đang làm cho hầu hết các khung này trở nên lỗi thời.
Ryan Hayes

@JHarley Tôi có thể đã khái quát một chút trong câu trả lời của mình, nhưng trong đầu tôi đã suy nghĩ về những thứ như telerik webcontrols hoặc itext itextpdf.com/terms-of-use/index.php . Tôi cũng đã làm việc tại một công ty nơi sự thay đổi cấp phép ExtJs là một vấn đề sencha.com/forum/showthread.php?33096-License-Change
KeesDijk

-2

Tôi nói từ kinh nghiệm cá nhân trong 13 năm qua. Trong công ty của tôi, chúng tôi đã sử dụng thanh chống, sau một đường cong ngắn, nó là tuyệt vời. Trong phần tiếp theo, chúng tôi đã sử dụng một kiến ​​trúc hầu hết mờ đục, hơi giống như nhưng đã phát triển, chúng tôi có thể mở rộng nó nhưng mã lõi chỉ là các bình. Và như thế. trong 3 năm qua đã làm việc trong một công ty nhỏ (số lượng dev <30) và đó là tất cả jsps, servlets và ejbs của chúng ta. Nhìn vào nhiều khách hàng của chúng tôi và sự lặp lại của jsps, vào năm 2012 là tạo ra một bộ lọc j2ee bắt chước 20% struts2. Tại sao không sử dụng stuts 2? Tôi ước chúng tôi có nhưng: không thể vượt qua kiến ​​trúc sư trưởng của chúng tôi; không đủ kinh nghiệm hoặc thời gian.

Vì vậy, chúng tôi đã chặn một số jsps phổ biến mà khung mini của chúng tôi sử dụng. Bây giờ khi tôi có thời gian để đi qua một cuốn sách 2 thanh, tôi thấy rằng chúng tôi đã bỏ lỡ rất nhiều!

Chúng tôi sử dụng một số thuật toán và bộ nhớ cache và giao diện người dùng tuyệt vời nhưng đã mất rất nhiều giờ và gánh nặng rất nhiều mã mà chúng tôi có kế hoạch 3 năm để nghỉ hưu.

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.