Framework là gì? Framework được định nghĩa là một bộ khung hay giàn giáo cung cấp các chức năng, giải pháp được cài đặt sẵn giúp tiết kiệm thời gian trong quá trình phát triển ứng dụng. Bạn cũng có thể hiểu Framework tương tự như khung của một ngôi nhà nó cung cấp một nền tảng chắc chắn và cơ bản để bạn có thể xây dựng được đa số các kiểu nhà được thiết kế trong bản vẻ. Mặc dù bạn có thể xây hoàn chỉnh một ngôi nhà từ đầu, nhưng bắt đầu với một dàn khung sẽ giúp bạn tiết kiệm được tối đa công sức cho việc bắt đầu. Framework trong lập trình ứng dụng cũng vậy, nó cung cấp đa số các kiểu mẫu thiết kế phù hợp với ứng dụng bạn sắp thực hiện, các thư viện, API, trình biên dịch và hơn thế nữa để hợp lý hóa việc tạo ra phần mềm mới. Biết được framework nào để sử dụng cho dự án nào là một kỹ năng quan trọng đối với bất kỳ nhà phát triển nào.

Phân biệt Framework và CMS:

Dạo quanh 1 vòng trên Google bạn sẽ thấy đa phần các khái niệm của Framework và CMS có sự chồng chéo lên nhau và dường như cả hai là một. Tuy nhiên Framework và CMS là hai khái niệm hoàn toàn khác nhau.

Vậy CMS là gì?

Cms được viết tắt từ cụm từ “Content Management System”:  thuật ngữ ” hệ quản trị nội dung” thường được dùng để chỉ các hệ thống hoặc ứng dụng quản lý nội dung kỹ thuật số trong môi trường doanh nghiệp ECM (Enterprice Content Management)  hoặc các nội dung được phân phối trên môi trường internet WCM (Web Content Management). WordPress là một trong 3 cms system tiêu biểu ( WordPress, Joomla, Drubal ) thường được dùng trong việc xây dựng các website hiện nay.

Điểm khác biệt giữa Framework và CMS

Điểm khác biệt lớn nhất đối với người dùng cơ bản là với CMS họ đã có ngay một ứng dụng có thể đưa vào sử dụng mà chẳng cần phải code một dòng nào cả, còn với Framework thì họ chỉ được cung cấp một lô lốc hàng tá các API, thư viện để tự xây dựng một ứng dụng. Đa phần trong thực tế các CMS thường được phát triển trên 1 nền tảng framework nào đó ví dụ như với Drubal bạn có được một CMS trên nền tảng Web Framework Symfony. October CMS với Framework Laravel

Những thuận lợi và bất lợi mà Framework đem lại

Thời gian đi qua để lại những kiểm chứng chính xác về vấn đề có nên sử dụng Framework để phát triển, những lợi ích và bất cập mà nó đem lại. Khi đối mặt với một vấn đề cụ thể các lập trình viên thường có ba sự lựa chon sau: sử dụng 1 framework, sử dụng một số thư viện có sẵn, tự xây dựng từ đầu tùy theo yêu cầu của vấn đề. Mặc dù ý tưởng tự xây dựng toàn bộ nghe có vẻ hợp lý về mặt gì đó (thường thì các lập trình viên mới ra nghề rất thích tự xây dựng từ đầu) nhưng nó lại không phải là một hướng tốt để chúng ta đưa vào sử dụng. Việc thiếu kinh nghiệm và không lường trước những khó khăn sẽ phát sinh lại tốn quá nhiều thời gian viết những đoạn code đã có, mà người ta chia sẽ sẽ khiến dự án của bạn tăng thêm xác suất thất bại.

Việc lựa chọn Framework hoặc các thư viện thường được ưu tiên trong lựa chọn này. Vậy nên dùng framework khi nào và lúc nào dùng thư viện( thường thì ta có thể hiểu rằng framework là tổng hợp các thư viện nhỏ lại với nhau theo một cấu trúc nhất định) . Cách thức tiếp cận Framework hoặc thư viện có phần khác lạ, chính điều này làm nổi bật lợi ích của phương pháp này.

Với một framework bất kì bạn chỉ có thể thực hiện:

  • Inversion of control -đảo ngược kiểm soát: trong framework các luồng thông tin và cách thức sử lý dữ liệu được chính Framework đó quy định mà không phải do người lập trình tự quy đinh, điều bạn cần làm là thêm thắt các xử lý logic trên các mô hình mà Framework cung cấp. Việc cải biến luồng đi của dữ liệu khiến cho mô hình và các ích lợi mà Framwork đem lại không còn giá trị nữa. Hãy cứ thử tưởng tượng nếu bạn sử dụng 1 Framework hỗ trợ MVC nhưng lại viết code không theo chuẩn này thì rõ ràng đây là một tai họa.
  • Extensibility – khả năng mở rộng: người dùng framework có thể mở rộng bằng cách kế thừa những gì mà framework đang cung cấp và mở rộng nó bằng việc ghi đè có chọn lọc lên các lớp, các phương thức. Lập trình viên có quyền viết thêm các chức năng mới cho nền tảng này, miễn là nó hợp lệ và đúng chuẩn.
  • Non-modifiable framework code – mã nguồn của framework hạn chế sửa đổi: việc sửa đổi trực tiếp lên mã nguồn của framework là một ý tường tồi tệ và hoàn toàn không nên thực hiện. Bằng cách thêm các extension mở rộng, các chức năng của framework có thể cung cấp được hầu hết các yêu cầu đặt ra.

Thư viện mã nguồn lập trình

Trong đời thực thư viện là nơi mà chúng ta có thể đến và mượn đọc đa số các cuốn sách có trong đây. Thư viện lập trình trong ngành lập trình cũng vậy, nó là một định nghĩa dùng để chỉ một tập hợp các đối tượng, chức năng, tiện ích tùy thuộc vào các ngôn ngữ lập trình nó giúp đỡ các lập trình viên giải quyết các vấn đề trong quá trình viết phần mềm. Khả năng tái sử dụng, mở rộng và chia sẽ giữa các ứng dụng là đặc điểm chính của thư viện.

Thư viện thường được tạo khi một vấn đề hay một tác vụ nào đó thường phát sinh với tần suất cao, khi đó các lập trình viên sẽ đóng gói các giải pháp của mình thành một package và chia sẽ nó thông qua một giao thức chia sẽ nào đó như: npm, package, composer, github …

Về cơ bản các library này cung cấp 1 cổng kết nối thông qua các API nơi mà các vấn đề phức tạp của bạn có thể được giải quyết. Đây là điều khác biệt lớn nhất giữa thư viên và framework, khi sử dụng thư viện mã code của bạn sử dụng thư viện, khi dùng framework thì mã code của bạn được framework sử dụng.

Một số framework cần được biết điến:

CodeIgnite: là nền tảng ứng dụng web nguồn mở được viết bằng ngôn ngữ PHP bởi Rick Ellis. Phiên bản đầu tiên được phát hành vào ngày 28/02/2006. Hiện tại CodeIgniter đang được phát triển bởi ExpressionEngine Development Team thuộc EllisLab, Inc. Framework này được xây dựng dựa trên mô hình MVC giúp tách biệt quá trình xử lý và hiển thị giữa các lớp.

Laravel Framework;là một Framework Open Source Php miễn phí được khởi tạo bởi Taylor Otwell vào năm 2011 nhằm mục đích tạo lựa chon thay thế cho CodeIgniter, Laravel cung cấp một bộ khung chuẩn dựa trên mẫu kiến trúc design parttent MVC và hàng loạt các quy tắc tạo code, các mẫu thiết kế, chính điều này giúp Laravel hỗ trợ đắc lực cho các lập trình viên trong quá trình triển khai các ứng dụng web trên nền tảng mã nguồn mở Php một cách nhanh chóng. Tổ chức code của Laravel rất linh động, mềm dẻo và không kém phần chặt chẽ, chính điều này làm cho các khối code được lập trình viên viết luôn luôn đảm bảo đúng chuẩn, sạch sẽ và dễ nâng cấp sau này.

CakePHP: là một Web Framework MVC cho các ứng dụng web php . Mục đích của nó là cung cấp một nền tảng phát triển dành cho cộng đồng lập trình viên PHP giúp họ tạo ra được những ứng dụng web nhanh, mạnh mẽ ,linh họa .Và điều quan trọng là CakePHP là một OpenSource (miễn phí).

Node.js: là nền tảng môi trường để thực thi các câu lệnh được viết bằng ngôn ngữ web javascript. Nghe đến đây thì có lẽ bạn sẽ rối vì không phải chỉ cần có trình duyệt thì javascript chạy được hay sao. Tương tự như Java Virtual MachineNode.js cung cấp môi trường thực thi cho ngôn ngữ javascript trên các thiết bị có thể cài đặt được nó.

Spring Framework: là một bộ khung ứng dụng và bộ chứa đảo ngược điều khiển cho nền tảng Java. Chức năng tính của bộ khung này có thể áp dụng cho bất kỳ ứng dụng Java nào, tuy vậy, nhiều bản mở rộng dành cho việc xây dựng ứng dụng nền web cũng được phát triển trên nền tảng Java EE. Tuy bộ khung không ấn định lên một cụ thể nào, Spring Framework đã trở nên phổ biến trong cộng đồng Java như một phương án song hành, thay thế, hoặc thậm chí bổ sung cho mô hình Enterprise JavaBeans (EJB). Đây là bộ khung mã nguồn mở.

.NET Framework: là một nền tảng lập trình và cũng là một nền tảng thực thi ứng dụng chủ yếu trên hệ điều hành Microsoft Windows được phát triển bởi Microsoft. Các chương trình được viết trên nền.NET Framework sẽ được triển khai trong môi trường phần mềm (ngược lại với môi trường phần cứng) được biết đến với tên Common Language Runtime (CLR). Môi trường phần mềm này là một máy ảo trong đó cung cấp các dịch vụ như an ninh phần mềm (security), quản lý bộ nhớ (memory management), và các xử lý lỗi ngoại lệ (exception handling). Dot NET framework bao gồm tập các thư viện lập trình lớn, và những thư viện này hỗ trợ việc xây dựng các chương trình phần mềm như lập trình giao diện; truy cập, kết nối cơ sở dữ liệu; ứng dụng web; các giải thuật, cấu trúc dữ liệu; giao tiếp mạng… CLR cùng với bộ thư viện này là 2 thành phần chính của.NET framework. Dot NET framework đơn giản hóa việc viết ứng dụng bằng cách cung cấp nhiều thành phần được thiết kế sẵn, người lập trình chỉ cần học cách sử dụng và tùy theo sự sáng tạo mà gắn kết các thành phần đó lại với nhau. Nhiều công cụ được tạo ra để hỗ trợ xây dựng ứng dụng.NET, và IDE (Integrated Developement Environment) được phát triển và hỗ trợ bởi chính Microsoft là Visual Studio.

About the author

Kevin Dang

Hey there! My name is Kevin Dang, I am website, software, mobile app develop, web admin system. Expert living in Hồ Chí Minh (Việt Nam). I am very interested in digital marketing with: SEO, Facebook, Google Ads ... This blog is where I will share the experiences, techniques and knowledge I have learned.