Trong lập trình ứng dụng nói chung và lập trình web nói riêng, khái niệm framework được nhắc đến rất nhiều bởi nó đang là một xu hướng phát triển các ứng dụng hiện nay. Framework là gì? nếu bạn có câu trả lời chính xác tức là bạn đã nắm bắt được cách thức xây dựng ứng dụng tiên tiến nhất.
Framework (bộ khung) là một danh từ tiếng Anh chỉ bộ khung đỡ của một kết cấu thường bằng bê tông, thép hoặc gỗ. Trong công nghệ thông tin, thuật ngữ framework cũng được dùng rất nhiều, nó là một tập hợp các thư viện phần mềm, các trình biên dịch, diễn dịch hoặc các API nhằm cung cấp một môi trường giúp cho việc lập trình ứng dụng trở lên nhanh chóng. Trong lập trình ứng dụng, lập trình web có rất nhiều vấn đề mà chúng ta gặp lại nhiều lần, thậm chí ở những công ty khác, mọi người cũng gặp phải vậy phải có cách nào đó giúp tiết kiệm thời gian, công sức khi xử lý cùng một vấn đề? Thật may, framework làm cho mọi việc phức tạp trở lên đơn giản và chúng ta chỉ cần tập trung vào các công việc chính để hoàn thành dự án.
Lợi ích của việc sử dụng framework
Trong mỗi một ngôn ngữ, một lĩnh vực đều có nhiều các framework được tạo ra bởi các nhóm lập trình hoặc thậm chí được hậu thuẫn bởi các công ty lớn, như vậy đương nhiên việc sử dụng lại các framework này có rất nhiều ưu điểm:
- Framework xây dựng sẵn các tính năng chung, ví dụ dự án web nào cũng có cần có phần quản lý người dùng như đăng ký, đăng nhập, tích hợp mạng xã hội, kết nối cơ sở dữ liệu…
- Sử dụng framework giảm thiểu tối đa thời gian và công sức phát triển ứng dụng.
- Cho phép ứng dụng kế thừa một cấu trúc được chuẩn hóa, đảm bảo dễ dàng trong vận hành và bảo trì sau này.
Bên cạnh đó sử dụng framework cũng có một số nhược điểm:
- Bạn phải mất nhiều thời gian để học và làm chủ một framework.
- Kích cỡ ứng dụng khi sử dụng framework là rất lớn, một website có thể lên đến hàng vài trăm MB code khi chưa có bất kỳ nội dung nào.
- Cần viết code tuân thủ theo các tiêu chuẩn chung mà framework đặt ra.
- Không thích hợp với các ứng dụng quá nhỏ, ví dụ bạn tạo ra một ứng dụng nhỏ hiển thị kết quả World cup 2018 chẳng hạn, việc áp dụng cả một framework vào là không cần thiết, thay vào đó bạn tự viết code sẽ nhanh hơn.
Sự khác biệt giữa framework và library
Library – Thư viện lập trình có thể bạn đã biết, trước đây khi các framework còn là một cái gì đó mới mẻ, hoặc phải trả tiền để có được những framework do các công ty có uy tín phát triển thì các thư viện lập trình nhỏ lẻ vẫn được dân mạng truyền tay nhau. Mỗi lập trình viên đều có một thư mục local trên máy tính chứa hàng trăm các thư viện nhỏ khác nhau phục vụ cho các dự án. Từ khoảng 2010 trở lại đây, phong trào framework phát triển cực kỳ mạnh mẽ, đặc biệt và web framework. Các framework là một tập các thư viện lập trình, kết hợp với nhiều các công cụ khác tiện lợi như bộ biên dịch, phiên dịch, các công cụ dòng lệnh… nó tạo thành bộ khung cho tất cả các ứng dụng web.
Một khác biệt nữa trong việc sử dụng framework và library đó là việc gọi các khối mã lệnh (phương thức, hàm), trong framework, các mã lệnh trong framework sẽ gọi đến mã lệnh của bạn, còn với thư viện lập trình thì mã lệnh của bạn gọi đến các mã lệnh của thư viện lập trình. Với library nó giống như mô hình client/server, client sẽ gửi các yêu cầu đến server và server sẽ hồi đáp lại kết quả. Một ví dụ khi sử dụng thư viện lập trình cURL, khi bạn sử dụng một function trong thư viện cURL, code PHP của bạn sẽ gọi đến function này trong thư viện cURL, như vậy code của bạn là chủ thể gọi còn thư viện lập trình là bị động. Khi bạn sử dụng các framework PHP như Laravel chẳng hạn, mối quan hệ này bị đảo ngược, code trong framework gọi đến các mã ứng dụng của bạn với một mẫu thiết kế mà nhiều người biết đến Inversion of Control, nếu bạn đã làm quen với Laravel bạn sẽ thấy mã framework được đưa vào index.php để quản lý luồng điều khiển trong khi các mã chúng ta viết được đưa vào các controller tạo ra các “hành vi” cho ứng dụng.
Như vậy có thể nói framework thiên về quản lý luồng điều khiển còn library thiên về tạo hành vi.
Các dạng framework phổ biến
Framework có ở rất nhiều các ngôn ngữ lập trình khác nhau với các hình thái khác nhau, phổ biến nhất có lẽ là các .Net framework và web framework. .NET framework của Microsoft là một nền tảng lập trình ứng dụng chủ yếu chạy trên hệ điều hành Windows hoặc các hệ điều hành có thể cài đặt được .NET framework. Các chương trình viết trên nền .NET framework sẽ được triển khai trong các môi trường phần mềm được biết đến với tên CLR (Common Language Runtime), môi trường này là một máy ảo trong đó cung cấp các dịch vụ như bảo mật, quản lý bộ nhớ và xử lý các lỗi ngoại lệ, nó có ý tưởng giống với máy ảo Java. Trong .NET framework có một khái niệm nữa cũng rất thông dụng với các lập trình viên và có liên quan đến framework là Entity Framework – nền tảng được sử dụng để làm việc với Cơ sở dữ liệu thông qua cơ chế ánh xạ giữa đối tượng và quan hệ ORM, từ đó có thể truy vấn, thao tác với database gián tiếp thông qua các đối tượng trong lập trình. Với web framework chúng ta có rất nhiều các framework, trong bài viết này chúng ta sẽ chỉ kể tên những framework được cho số 1 hiện nay. Như chúng ta đã biết để lập trình một website chúng ta sử dụng tới 3 ngôn ngữ thành phần là HTML, CSS và Javascript sau đó kết hợp với một ngôn ngữ kịch bản máy chủ như PHP, ASP.NET, JSP… với mỗi thành phần này chúng ta có các framework khác nhau.
- CSS framework: Bootstrap, Bulma…
- Javascript framework: Vue.js, React, Angular…
- PHP framework: Laravel, Symfony, CodeIgniter..