Framework là gì? Những ý nghĩa của Framework

Blog Nghialagi.org giải đáp ý nghĩa Framework là gì

  • Chào mừng bạn đến blog Nghialagi.org chuyên tổng hợp tất cả hỏi đáp định nghĩa là gì, thảo luận giải đáp viết tắt của từ gì trong giới trẻ, hôm nay chúng ta cùng tìm hiểu một khái niệm mới đó là Framework là gì? Những ý nghĩa của Framework. Framework là gì? Sự khác biệt giữa framework và library
Framework là gì? Tìm hiểu về các Framework - Nghialagi.org
Framework là gì? Tìm hiểu về các Framework – Nghialagi.org

Định nghĩa Framework là gì?

  • Framework là các đoạn code đã được viết sẵn, cấu thành nên một bộ khung và các thư viện lập trình được đóng gói. Chúng cung cấp các tính năng có sẵn như mô hình, API và các yếu tố khác để tối giản cho việc phát triển các ứng dụng web phong phú, năng động. Các framework giống như là chúng ta có khung nhà được làm sẵn nền móng cơ bản, bạn chỉ cần vào xây dựng và nội thất theo ý mình.

Các loại Framework

  • Hiện nay có nhiều framework cho backend, front end, ứng dụng mobile…phổ biến nhất có lẽ là các web framework và các framework cho mobile.
  • Các framework ứng dụng web là các framework phần mềm được sử dụng để sắp xếp hợp lý các ứng dụng web và phát triển trang web, các dịch vụ web và các tài nguyên web. Một loại framework ứng dụng web phổ biến là kiến trúc Model-View-Controller (MVC). 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, JAVA… với mỗi thành phần này chúng ta có các framework khác nhau.
  • Framework cho ứng dụng di động giúp bạn có thể viết code một lần và có thể chạy trên iOS và Android. Đó chính là điểm mạnh của nó để giảm thời gian phát triển sản phẩm so với native code. Hiện tại các framework này đa số dùng Javascript làm ngôn ngữ phát triển nổi bật như là React Native của Facebook, ngoài ra còn có Xamarin của Microsoft dùng C#, Flutter dùng ngôn ngữ Dart của Google.

Các tính năng cốt lõi của Framework web

  • Framework giúp tăng hiệu suất, mở rộng các chức năng và cung cấp các thư viện sẵn có để các nhà phát triển không phải làm lại từ đầu. Có rất nhiều framework khác nhau từ nhỏ đến lên, từ ngôn ngữ này đến ngôn ngữ khác — nhà phát triển có thể lựa chọn dựa trên nhu cầu dự án hoặc phong cách làm việc của riêng họ.
  • Mỗi ngôn ngữ lập trình có ít nhất một framework. Các thư viện trong mỗi framework cung cấp các gói có thể sử dụng lại của ngôn ngữ đó.

Một framework cho web bao gồm:

  1. Libraries: Thư viện là các đoạn mã xây dựng sẵn cho một chức năng nào đó (Design pattern), bạn có thể tái sử dụng chức năng đó mà ko phải code lại. Có nhiều tools quản lý thư viện như NPM, Composer…
  2. API: là phương thức trao đổi dữ liệu giữa các ứng dụng chính và ứng dụng khác. Đọc thêm RESTful API là gì nhé.
  3. Scaffolding: Một bộ khung các quy tắc mà một framework MVC sử dụng quy hoạch cơ sở dữ liệu có thể được truy cập như thế nào.
  4. AJAX: update thông tin lên database mà không cần load lại trang.
  5. Caching: giúp giảm request đến máy chủ, tăng tốc độ load trang.
  6. Security: framework xác thực và ủy quyền user.
  7. Compilers : trình biên dịch từ code của bạn qua ngôn ngữ cho máy.

Các Framework để phát triển ứng dụng Mobile

  • “Viết một nơi, chạy muôn nơi” là code được viết một lần duy nhất trên một platform, nhưng có thể chạy trên nhiều platform khác nhau. Với sự đa dạng ngày càng gia tăng của thiết bị di động, lập trình viên hiện đang gặp thêm nhiều khó khăn để cho ra được ứng dụng vì user hiện phân bố ở nhiều platform khác nhau.
  • Mục tiêu của bài viết là cách viết multi-platform apps (ứng dụng đa nền tảng) với code reuse. Để hỗ trợ các bạn trong quá trình phát triển ứng dụng di động đa nền tảng, chúng tôi xin giới thiệu các framework đa nền tảng tốt nhất hiện nay, có thể làm việt trên nhiều nền tảng thông dụng bao gồm Android, iOS…

Flutter

  • Flutter là mobile UI framework của Google để tạo ra các giao diện native chất lượng cao trên iOS và Android trong khoảng thời gian ngắn sử dụng ngôn ngữ Dart. Flutter hoạt động với source code có sẵn, được sử dụng bởi các nhà phát triển và các tổ chức trên khắp thế giới, đồng thời nó open-source và miễn phí.

React Native

  • React Native là một framework cho phép các lập trình viên phát triển ứng dụng di động thiết kế các ứng dụng di động đa nền tảng với sự trợ giúp của javascript. Với React – Native, lập trình viên có thể sử dụng một bộ mã duy nhất cho cả nền tảng iOS và Android.

Nhược điểm:

  • Vẫn đòi hỏi native code.
  • Hiệu năng sẽ thấp hơn với app thuần native code.
  • Bảo mật không cao do dựa trên JS.
  • Quản lý bộ nhớ.
  • Khả năng tùy biến cũng không thực sự tốt đối với một vài module.

Ưu điểm:

  • Hiệu quả về mặt thời gian khi mà bạn muốn phát triển một ứng dụng nhanh chóng.
  • Hiệu năng tương đối ổn định.
    Cộng đồng phát triển mạnh.
  • Tiết kiệm tiền.
  • Team phát triển nhỏ.
  • Ứng dụng tin cậy và ổn định.
  • Xây dựng cho nhiều hệ điều hành khác nhau với ít native code nhất.
  • Trải nghiệm người dùng tốt hơn là hybrid app.

PhoneGap

  • PhoneGap cũng là một framwork ứng dụng di động đa nền tảng nguồn mở cho phép các lập trình viên xây dựng các ứng dụng di động bằng HTML, CSS và Javascript. Nó tập trung một kiến trúc có khả năng bổ trợ để giúp các lập trình viên bằng cách tạo các ứng dụng nổi bật với việc sử dụng các khả năng của thiết bị qua các API.

Nhược điểm:

  • Khả năng hỗ trợ đồ họa hạn chế cho ứng dụng. Bạn hiển nhiên vẫn có thể tìm một số plugin cho từng yêu cầu cụ thể, nhưng plugin cho một số platform cần thiết có thể bị lỗi thời, hoặc bị bỏ ngang.

Ưu điểm:

  • Cho phép tạo ứng dụng lai bằng những công nghệ web phổ biến (HTML5, CSS3 và JavaScript),
  • Cho phép bạn deploy một code base duy nhất lên nhiều nền tảng khác nhau, trong đó có iOS, Android, Windows Phone, BlackBerry, Firefox OS,…
  • Cấu trúc cho phép áp dụng plugin, mở rộng (theo module) APIs thiết bị và nhiều lợi ích khác.
  • Cho phép áp dụng thanh toán tích hợp/in-app thông qua App Store cho iOS, Google Play Store cho Android,…

Xamarin

  • Là 1 nền tảng lập trình ứng dụng di động cross-platform (có nghĩa là code một lúc có thể chạy trên được cả iOS lẫn Android). Xamarin có những đặc điểm riêng biệt, hiếm có so với các frameworks hiện tại trên thị trường khi mà khả năng native access và trải nghiệm người dùng native vẫn đang bị đặt nghi vấn.

Nhược điểm:

  • Với Xamarin, vì sự cố tương thích, bạn sẽ vẫn không thể sử dụng được vô số thư viện nguồn mở cho iOS và Android. Phiên bản miễn phí vô cùng hạn chế, rất khó dùng trong các project lớn.

Ưu điểm:

  • Ứng dụng mẫu của Xamarin giúp công việc khởi đầu suôn sẻ hơn; ứng dụng được viết rất rõ ràng và còn có thể được dùng là mẫu tham khảo.
  • Xamarin có thể chia sẻ đến 75% code được viết ra đến các nền tảng di động lớn, từ đó tiếp kiệm rất nhiều thời gian và chi phí.
  • Cung cấp functionality testing và quality assurance (kiểm tra tính năng và đảm bảo chất lượng) cho vô số thiết bị để đảm bảo tích hợp chuẩn xác (Xamarin thậm chí còn có giả lập Android riêng)

Library là gì?

  • Dù có sử dụng Library hay không thì điều đó cũng không ảnh hưởng đến việc hoàn thành dự án mà bạn đang phát triển vì Library không phải là thành phần chính yếu. Tuy nhiên, nếu biết cách áp dụng Library tốt, bạn có thể nâng cao chất lượng của phần mềm/ứng dụng.

Sự khác biệt giữa Framework và Library là gì?

Nếu Library là tập hợp của các lớp, chức năng thì Framework lại là tập hợp của các Library (thư viện lập trình). Kết hợp với nhiều công cụ khác giúp phát triển web hiệu quả như: bộ biên dịch/phiên dịch, các công cụ dòng lệnh,…

Một điểm khác nhau nữa giữa là Framework và Library đó là:

  • Với Framework, các khối mã lệnh trong Framework gửi yêu cầu đến mã lệnh của lập trình viên.
  • Với Library, các khối mã code của lập trình viên sẽ gửi yêu cầu đến mã lệnh của Library.

Cụ thể, Library hoạt động giống như mô hình client/server: Khi client gửi yêu cầu, server sẽ nhận lệnh và phản hồi lại kết quả. Còn khi sử dụng Framework thì mối quan hệ này lại bị đảo ngược. Ví dụ với Framework PHP như Laravel, code trong Framework sẽ gửi yêu cầu đến các mã ứng dụng của lập trình viên với nguyên lý thiết kế Inversion of Control (điều khiển đảo ngược).

Web Framework là gì?

  • Web Framework là một dạng Framework được xây dựng để hỗ trợ phát triển các ứng dụng web. Các nguyên liệu mà Web Framework bao gồm: tài nguyên web, dịch vụ web, API web, các functions,…

CMS là gì?

  • CMS viết tắt của Content Management System là hệ quản trị nội dung của trang web, có chức năng điều khiển tất cả hoạt động về nội dung, thông tin của website. Những nội dung này bao gồm tin tức, hình ảnh, video, danh mục, thông liên hệ,… trên trang web. Đặc biệt, với các CMS nâng cao, người dùng còn có thể chỉnh sửa, phân loại danh mục, thậm chí thay đổi hiển thị giao diện và nhiều thao tác phức tạp khác trên website.

Sự khác nhau giữa CMS và Framework là gì?

Điểm khác nhau lớn nhất giữa hai khái niệm này đó là:

  • CMS là một ứng dụng/phần mềm người dùng có thể sử dụng ngay. Không cần phải thực hiện các lệnh code phức tạp.
  • Framework, lập trình viên chỉ được cung cấp một loạt các API, thư viện để xây dựng ứng dụng/phần mềm.

Trong thực tế, thường thì các CMS sẽ được phát triển dựa trên nền tảng của một Framework nào đó. Ví dụ,CMS Drupal được xây dựng dựa trên nền tảng Web Framework Symfony. Còn CMS October thì được phát triển từ Framework Laravel.

Kết luận

Cảm ơn bạn đã đọc bài viết của blog nghialagi.org, hy vọng những thông tin giải đáp Framework là gì? Những ý nghĩa của Framework sẽ giúp ích bạn đọc.

Co-founder tại Blog Nghilagi.org Giải đáp thắc mắc bạn đọc. Tra thuật ngữ nhanh và chính xác nhất. Nghĩa Là Gì - Giải thích mọi câu hỏi kỳ quặc nhất Hãy cùng nhau chia sẻ những kiến thức bổ ích