Trong kỹ thuật phần mềm, các thuật ngữ giao diện người dùng và hệ thống phía sau chỉ sự phân chia giữa phần giao diện người dùng và phần quản lý dữ liệu hoặc cơ sở hạ tầng hỗ trợ. Trong mô hình khách -- chủ, máy khách thường đại diện cho giao diện người dùng, trong khi máy chủ thường là hệ thống phía sau, mặc dù một số chức năng giao diện cũng có thể được thực hiện trên máy chủ.
Giới thiệu
Trong thiết kế phần mềm, có thể tồn tại nhiều lớp giữa phần cứng và người dùng cuối. Giao diện người dùng là một lớp trừu tượng hóa, giúp người dùng tương tác dễ dàng hơn với phần mềm, trong khi hệ thống phía sau chủ yếu quản lý dữ liệu và xử lý các quy trình nghiệp vụ.
Trong lĩnh vực viễn thông, 'front' có thể ám chỉ các thiết bị hoặc dịch vụ cụ thể, trong khi 'back' thường liên quan đến cơ sở hạ tầng hỗ trợ việc cung cấp các dịch vụ đó.
Quy tắc cơ bản là mọi thành phần người dùng tương tác thuộc về client-side (phía khách), trong khi server-side (phía chủ) thường nằm trên máy chủ và có thể cách xa người dùng về mặt vật lý.
Khái niệm về phần mềm
- Trong các hệ thống quản lý nội dung, front end và back end thường đề cập đến các giao diện người dùng và giao diện quản trị tương ứng.
- Trong công nghệ tổng hợp giọng nói, giao diện người dùng thực hiện việc chuyển đổi văn bản thành biểu thị ngữ âm, trong khi giao diện cuối chuyển đổi các biểu thị ngữ âm thành âm thanh thực tế.
- Trong các hệ thống 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 và shell là giao diện với hệ điều hành. Front-end đối diện với người dùng và back-end thực hiện các chương trình của hệ điều hành để xử lý yêu cầu.
- Trong trình biên dịch, front-end chuyển đổi mã nguồn thành biểu diễn trung gian, trong khi back-end xử lý biểu diễn này để tạo mã cuối cùng. Back-end thường tối ưu hóa mã để chạy hiệu quả hơn. Sự phân chia này tách biệt phần phân tích cú pháp mã nguồn và phần tối ưu hóa mã. Một số thiết kế, như GCC, cung cấp nhiều lựa chọn cho front-end (phân tích các ngôn ngữ nguồn khác nhau) và back-end (tạo mã cho các bộ xử lý khác nhau).
- Sử dụng giao diện dòng lệnh (CLI) yêu cầu nhớ các lệnh và thuật ngữ đặc biệt, trong khi giao diện đồ họa người dùng (GUI) cung cấp môi trường máy tính front-end dễ sử dụng hơn.
Nhà phát triển full-stack
Nhà phát triển full-stack là người có khả năng phát triển cả giao diện người dùng và phần dịch vụ phía sau. Họ hiểu biết về toàn bộ công nghệ cần thiết để xây dựng một trang web và có thể làm việc với cả hai phần front-end và back-end. Họ chủ yếu tập trung vào phát triển web từ cả hai phía.
Thông thường, các lập trình viên không bắt đầu với vai trò full-stack ngay lập tức. Họ thường trải qua nhiều vị trí khác trước khi đảm nhận công việc toàn diện này. Họ cũng thường thoải mái với cả khía cạnh logic kinh doanh và trải nghiệm người dùng, có đủ kiến thức để tư vấn cho người khác.
- Các ngôn ngữ đánh dấu và web như HTML, CSS, JavaScript và các thư viện như Sass hay jQuery
- Quản lý yêu cầu bất đồng bộ và AJAX
- Các ứng dụng một trang sử dụng các khung phần mềm như React, AngularJS hoặc Vue.js
- Hiệu suất web (như thời gian hiển thị nội dung quan trọng đầu tiên, thời gian phản hồi, hoạt ảnh và hiệu suất 60 FPS, sử dụng bộ nhớ, v.v.)
- Thiết kế web đáp ứng
- Vấn đề tương thích trình duyệt và cách giải quyết
- Kiểm thử đầu cuối với trình duyệt không giao diện đồ họa
- Tự động hóa quy trình xây dựng và đóng gói 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
- Khả năng tiếp cận
- Cơ bản về công cụ chỉnh sửa hình ảnh như GIMP hoặc Photoshop
- Giao diện người dùng
Những yếu tố của Back-end
- Các ngôn ngữ lập trình như PHP, Python, Ruby, Perl, Node.js hoặc các ngôn ngữ biên dịch như C#, Java, Go
- Kiểm thử tự động cho ngôn ngữ đang sử dụng
- Quản lý quyền truy cập dữ liệu ứng dụng
- Logic nghiệp vụ của ứng dụng
- Quản trị cơ sở dữ liệu
- Khả năng mở rộng
- Độ sẵn sàng cao
- Yếu tố bảo mật, xác thực và ủy quyền
- Kiến trúc phần mềm
- Chuyển đổi dữ liệu
- Phương pháp và phần mềm sao lưu
Cả hai vai trò, mặc dù làm việc trên cùng một sản phẩm, nhưng đòi hỏi các bộ kỹ năng hoàn toàn khác nhau.
Khái niệm về phần cứng
Trong mạng máy tính, front-end thường chỉ những phần cứng được thiết kế để tối ưu hóa hoặc bảo vệ lưu lượng mạng. Đây là phần cứng phía trước của ứng dụng, vì nó nằm ở front end hoặc DMZ, tách biệt lưu lượng Internet khỏi mạng nội bộ. Lưu lượng mạng sẽ đi qua phần cứng front-end trước khi vào mạng chính.
Trong thiết kế bộ xử lý, phần thiết kế front end mô tả hoạt động của mạch bằng các ngôn ngữ mô tả phần cứng như Verilog, trong khi thiết kế back end là quá trình liên kết các phần tử trong một tập hợp với các phần tử của tập hợp khác, chuyển đổi hành vi đó thành các transistor vật lý trên khuôn mẫu.