Tôi có xu hướng làm việc nhiều nhất với các ứng dụng web và mặc dù tôi đang cố gắng nói chung, câu trả lời của tôi có thể không áp dụng cho lĩnh vực lập trình của bạn.
Tôi cũng sẽ sử dụng "khung" đồng nghĩa với "thư viện".
Trước khi thực hiện một khung, người ta phải xem xét một vài điều, đây là một vài ví dụ chung.
# 1. Khung sẽ tiết kiệm thời gian và công sức?
Câu trả lời cho câu hỏi này hầu như luôn luôn là có . Các khung có xu hướng được xây dựng để giải quyết các vấn đề cụ thể và giải quyết chúng rất tốt. Chẳng hạn, các khung như EntityFramework có thể giúp bạn tiết kiệm hoàn toàn khỏi việc viết mã SQL. Điều này có thể tuyệt vời nếu nhóm lập trình của bạn không thông thạo SQL.
Các khung được xây dựng để, a) thêm giao diện thân thiện với lập trình viên vào các thành phần phức tạp khác hoặc b) thêm sự trừu tượng cho các thành phần đã được biết đến (hoặc đã thiết lập).
Loại thứ hai (hoặc thậm chí cựu trong một số trường hợp) có thể thực sự nhận được trong cách phát triển. Điều này đặc biệt áp dụng khi bạn hoặc nhóm lập trình của bạn sẽ triển khai một khung mới, trong đó họ chưa từng làm việc trước đây.
Điều này có khả năng làm chậm quá trình phát triển của bạn, có khả năng gây tốn kém.
# 2 Quy mô của ứng dụng của bạn
Người ta nói rằng "bất cứ điều gì đáng làm là đáng làm quá" , nhưng thường thì không phải vậy. Có lẽ không có lý do chính đáng để thực hiện một khung siêu cỡ nếu quan điểm của ứng dụng của bạn là in "khoai tây" .
Khi bạn đang phát triển một ứng dụng (có thể là web, máy tính để bàn, thiết bị di động hoặc bất kỳ loại ứng dụng nào có thể hiểu được) dấu hiệu cảnh báo rằng khung của bạn có thể làm đầy ứng dụng của bạn. Một giai thoại hay sẽ là nếu bạn bao gồm jQuery, chỉ cần thêm một lớp "được tải" vào thẻ cơ thể của bạn khi tài liệu đã sẵn sàng. Làm điều đó chỉ với JavaScript gốc có thể khó hơn một chút , nhưng nó không làm hỏng ứng dụng của bạn.
Mặt khác, nếu một khung làm nhiều công việc bẩn thỉu ở bên trong (tức là khung cơ sở dữ liệu), thì có thể có khả năng thực hiện nó, ngay cả khi bạn chỉ "sử dụng một phần" khung. Một giai thoại hay là đừng cố xây dựng trình điều khiển ADO.NET hoặc MongoDB của riêng bạn, chỉ vì bạn không cần phải sử dụng toàn bộ thư viện.
Đôi khi các khung công tác đến nguồn mở (và với giấy phép 'làm bất cứ điều gì bạn muốn'). Điều này mở ra một khả năng mới trong đó một nhóm lập trình chỉ có thể chọn các phần của khung.
Điều này cuối cùng liên quan trở lại câu hỏi # 1 và # 3.
# 3 Tác động.
Đôi khi thực hiện một khung có thể tác động trực tiếp đến người dùng cuối. Điều này đặc biệt đúng đối với các ứng dụng web, vì các khung công tác phía máy khách lớn có thể ảnh hưởng tiêu cực đến trải nghiệm của người dùng cuối. Người dùng có máy chậm hơn có thể gặp phải sự cố kết xuất chậm, hiệu suất với javascript hoặc các sự cố tương tự do máy phụ. Người dùng có kết nối chậm có thể gặp thời gian tải chậm (ít nhất là ban đầu).
Ngay cả trong các loại ứng dụng khác, người dùng cuối có thể bị ảnh hưởng tiêu cực bởi các phụ thuộc ứng dụng của bạn. Các khung ít nhất luôn chiếm một số dung lượng đĩa và nếu bạn đang phát triển một ứng dụng di động (hoặc thậm chí là một ứng dụng trên máy tính để bàn) thì điều này có thể cần được xem xét.
Các khung công tác phía máy chủ (thậm chí cụ thể hơn trên web) rất có thể sẽ không ảnh hưởng đến người dùng cuối của bạn, nhưng nó sẽ ảnh hưởng đến cơ sở hạ tầng của bạn . Một số khung có phụ thuộc chính chúng có thể yêu cầu bạn khởi động lại máy chủ web của mình, chỉ là dịch vụ hoặc máy chủ hoàn toàn.
Một số khung cũng có thể rất nặng tài nguyên.
Điều này tất nhiên liên quan trở lại điểm 1 và # 2.
Tất cả chỉ là một "vòng tròn cân nhắc" lớn, và không có phương pháp khoa học thực sự nào để quyết định liệu bạn có nên thực hiện một khuôn khổ hay không.
Corbin March đã tóm tắt nó rất tốt:
Các nhóm tôi đã làm việc cùng đều làm điều tương tự - đoán dự đoán về chi phí và lợi ích, chọn con đường hiệu quả nhất và hy vọng họ đúng. Đó không phải là khoa học khủng khiếp - một phần trực giác, ba phần kinh nghiệm, một phần nhạy cảm với tiếp thị, một phần xảo quyệt và năm phần xếp hạng ý kiến.
Điều quan trọng không phải là tinh hoa . Khung là các công cụ có nghĩa là được sử dụng. Tôi biết những người thuộc cả hai thái cực; một mặt bạn có chàng trai làm cho cuộc sống rất khó khăn cho chính mình, mặt khác bạn có chàng trai xây dựng các ứng dụng chậm chạp, cồng kềnh.
Tất cả các khung công tác đều có các trường hợp sử dụng, đó chỉ là vấn đề triển khai chúng cho đúng mục đích.