Front-end và back-end

Bách khoa toàn thư mở Wikipedia

Trong kỹ thuật phần mềm, các thuật ngữ front-end (đầu trước) và back-end (đầu sau) đề cập đến sự tách biệt các mối quan tâm giữa tầng trình diễn (giao diện người dùng) và tầng truy cập dữ liệu (kết thúc sau) của một phần mềm, hoặc cơ sở hạ tầng vật lý hoặc phần cứng. Trong mô hình khách -- chủ, máy khách thường được coi là front end và máy chủ thường được coi là back end, ngay cả khi một số công việc trình bày thực sự được thực hiện trên chính máy chủ.

Giới thiệu[sửa | sửa mã nguồn]

Trong kiến trúc phần mềm, có thể có nhiều lớp giữa phần cứng và người dùng cuối. Front-end là một sự trừu tượng hóa, đơn giản hóa thành phần bên dưới bằng cách cung cấp giao diện thân thiện với người dùng, trong khi back-end thường xử lý lưu trữ dữ liệu và logic nghiệp vụ.

Trong viễn thông, front có thể được coi là một thiết bị hoặc dịch vụ, còn back là cơ sở hạ tầng hỗ trợ cung cấp dịch vụ.

Một quy tắc chung là client-side (phía khách) là bất kỳ thành phần nào do người dùng thao tác. Server-side (phía chủ) thường nằm trên máy chủ, thường bị xóa khá xa về mặt vật lý với người dùng

Định nghĩa phần mềm[sửa | sửa mã nguồn]

  • Trong hệ thống quản lý nội dung, các thuật ngữ front end và back end có thể đề cập đến chế độ xem CMS và chế độ xem quản trị đối với người dùng cuối tương ứng.[1]
  • Trong tổng hợp giọng nói, giao diện người dùng đề cập đến một phần của hệ thống tổng hợp chuyển đổi văn bản đầu vào thành biểu thị ngữ âm tượng trưng và giao diện cuối chuyển đổi biểu thị ngữ âm biểu tượng thành âm thanh thực tế.[2]
  • Đối với các hệ thống con chính của máy tính, trình quản lý tệp đồ họa là giao diện người dùng cho hệ thống tệp của máy tính và giao diện shell với hệ điều hành. Front-end đối diện với người dùng và bank-end khởi chạy các chương trình của hệ điều hành để đáp ứng.[cần dẫn nguồn]
  • Trong trình biên dịch, front-end chuyển mã nguồn lập trình máy tính thành một biểu diễn trung gian và back-end làm việc với biểu diễn trung gian để tạo ra mã bằng ngôn ngữ đầu ra của máy tính. Back-end thường tối ưu hóa để tạo ra mã chạy nhanh hơn. Sự phân biệt front-end / back-end có thể tách biệt phần phân tích cú pháp xử lý mã nguồn và phần cuối tạo mã và tối ưu hóa. Một số thiết kế, chẳng hạn như GCC, cung cấp các lựa chọn giữa nhiều front-end (phân tích các ngôn ngữ nguồn khác nhau) hoặc back-end (tạo mã cho các bộ xử lý mục tiêu khác nhau).[3]
  • Sử dụng giao diện dòng lệnh (CLI) yêu cầu thu thập các thuật ngữ đặc biệt và ghi nhớ các lệnh, do đó, giao diện đồ họa người dùng (GUI) hoạt động như một môi trường máy tính front-end để bàn.

Lập trình viên full-stack[sửa | sửa mã nguồn]

Một lập trình viên full-stack[4] là người có thể phát triển phần mềm cho cả người dùng và nhà cung cấp dịch vụ. Nói một cách dễ hiểu, một lập trình viên Full-Stack có kiến thức về toàn bộ công nghệ tạo nên một trang web. Họ có thể làm việc trong cả hai ngôn ngữ front-end và back-end. Họ chủ yếu tập trung vào phát triển web ở cả hai đầu.

Hầu hết vị trí này không phải là lập trình viên toàn diện ngay từ đầu. Họ thường làm việc ở nhiều vai trò trước khi chuyển sang full-stack. Họ cũng có xu hướng thoải mái với cả logic kinh doanh và trải nghiệm người dùng. Nói cách khác, họ có đủ kiến thức về kinh doanh để đưa ra lời khuyên cho người khác.

  • Các ngôn ngữ đánh dấu và ngôn ngữ web như HTML, CSS, JavaScript và các thư viện phụ trợ thường được sử dụng trong các ngôn ngữ đó như Sass hoặc jQuery
  • Xử lý yêu cầu bất đồng bộ và AJAX
  • Các ứng dụng một trang (với các khung phần mềm như React, AngularJS hoặc Vue.js)
  • Hiệu năng web (First Meaningful Paint hay hình ảnh có ý nghĩa đầu tiên, thời gian để tương tác, hoạt ảnh và tương tác 60 FPS, sử dụng bộ nhớ, v.v.)
  • Thiết kế web đáp ứng
  • Các vấn đề về khả năng tương thích trên nhiều trình duyệt và cách giải quyết
  • Kiểm thử đầu cuối với trình duyệt Headless Browser là một trình duyệt web không có giao diện đồ họa người dùng
  • Tự động hóa xây dựng để chuyển đổi và đóng gói các tệp JavaScript, giảm kích thước hình ảnh ... bằng các công cụ như Webpack hoặc Gulp.js
  • Tối ưu hóa công cụ tìm kiếm
  • Mối quan tâm về khả năng tiếp cận
  • Cách sử dụng cơ bản các công cụ chỉnh sửa hình ảnh như GIMP hoặc Photoshop
  • Giao diện người dùng

Back-end tập trung vào[sửa | sửa mã nguồn]

Lưu ý rằng cả hai vị trí, mặc dù có thể làm việc trên một sản phẩm, nhưng có một bộ kỹ năng rất khác biệt.

Định nghĩa phần cứng[sửa | sửa mã nguồn]

Trong máy tính mạng, front-end có thể đề cập đến bất kỳ phần cứng nào tối ưu hóa hoặc bảo vệ lưu lượng mạng.[5] Nó được gọi là phần cứng front-end của ứng dụng vì nó được đặt trên front end hoặc DMZ – là đơn vị lưu lượng Internet riêng rẽ từ mạng cục bộ. Lưu lượng mạng đi qua phần cứng front-end trước khi vào mạng.

Trong thiết kế bộ xử lý, thiết kế front end sẽ là mô tả ban đầu về hoạt động của mạch bằng ngôn ngữ mô tả phần cứng như Verilog, trong khi thiết kế back end sẽ là một phép toán liên kết từng phần tử của một tập hợp nhất định (miền) với một hoặc nhiều phần tử của tập hợp thứ hai (phạm vi) hành vi đó tới các transistor vật lý trên một khuôn[6]

Tham khảo[sửa | sửa mã nguồn]

  1. ^ Thapliyal, Vimal. “Difference Between Frontend and Backend MVC – Joomlatuts”. joomlatuts.net. Bản gốc lưu trữ ngày 30 tháng 12 năm 2016. Truy cập ngày 30 tháng 12 năm 2016.
  2. ^ Gutierrez--Osuna, Ricardo. “L18: Speech synthesis (back end)” (PDF). tamu.edu. Texas A&M University. Bản gốc (PDF) lưu trữ ngày 14 tháng 2 năm 2019. Truy cập ngày 29 tháng 12 năm 2016.
  3. ^ Bin Muhammad, Rashid. “Operating Systems Notes”. www.personal.kent.edu. Đại học Tiểu bang Kent. Truy cập ngày 30 tháng 12 năm 2016.
  4. ^ “Top 25 Full Stack Developer Interview Questions and Answers -”. 30 tháng 5 năm 2020. Truy cập ngày 21 tháng 12 năm 2020.
  5. ^ O'Dell, Mike. “Network Front-End Processors, Yet Again | June 2009 | Communications of the ACM”. cacm.acm.org. Truy cập ngày 30 tháng 12 năm 2016.
  6. ^ “Front-End Design | Online Documentation for Altium Products”. techdocs.altium.com. Truy cập ngày 30 tháng 12 năm 2016.