Tôi không nhớ nguồn gốc của câu trả lời này (tôi đoán tôi đã tìm thấy nó trong một .ppt trên internet), nhưng câu trả lời khá đơn giản.
Thư viện và Khung là một tập hợp các lớp, mô-đun và / hoặc mã (tùy thuộc vào ngôn ngữ lập trình) có thể được sử dụng trong các ứng dụng của bạn và giúp bạn giải quyết một "vấn đề" đặc biệt.
Vấn đề đó có thể là ghi nhật ký hoặc gỡ lỗi thông tin trong một ứng dụng, vẽ biểu đồ, tạo định dạng tệp cụ thể (html, pdf, xls), kết nối với cơ sở dữ liệu, tạo một phần của ứng dụng hoặc ứng dụng hoàn chỉnh hoặc mã được áp dụng cho một ứng dụng Mẫu thiết kế .
Bạn có thể có một Khung hoặc Thư viện để giải quyết tất cả các vấn đề này và nhiều vấn đề khác, định mức các khung giúp bạn giải quyết các vấn đề phức tạp hơn hoặc lớn hơn, nhưng đó là sự khác biệt chính của chúng, không phải là định nghĩa chính cho cả hai.
Sự khác biệt chính tạo ra một Thư viện và Khung là sự phụ thuộc tạo ra mã riêng của chúng, bằng các từ oder để sử dụng Khung bạn cần sử dụng hầu hết tất cả các lớp, mô-đun hoặc mã trong FW, nhưng để sử dụng Thư viện, bạn có thể sử dụng một hoặc vài lớp, mô-đun hoặc mã trong lib trong ứng dụng của riêng bạn
Điều này có nghĩa là nếu một Framework có, ví dụ có 50 lớp để sử dụng khung trong ứng dụng bạn cần sử dụng, giả sử, 10-15 lớp trở lên trong mã của bạn, bởi vì đó là cách thiết kế một Framework, một số các lớp (đối tượng của các lớp đó) là đầu vào / tham số cho các phương thức trong các lớp khác trong khung. Xem .NET framework, Spring hoặc bất kỳ khung MVC nào.
Nhưng ví dụ, thư viện nhật ký, bạn chỉ có thể sử dụng lớp Nhật ký trong mã của mình và giúp bạn giải quyết "sự cố ghi nhật ký", điều đó không có nghĩa là thư viện nhật ký không có nhiều lớp hơn trong mã của anh ấy, như các lớp để xử lý tệp, xử lý đầu ra màn hình hoặc thậm chí cơ sở dữ liệu, nhưng bạn không bao giờ chạm / sử dụng các lớp đó trong mã của mình và đó là lý do tại sao là thư viện chứ không phải khung.
Và cũng có nhiều danh mục hơn Khung và Thư viện, nhưng đó không phải là chủ đề.