CHƯƠNG 1. CỞ SỞ LÝ THUYẾT 1. NODE JS NodeJS là một hệ thống phần mềm được thiết kế để viết các ứng dụng internet có khả năng mở rộng, đặc biệt là máy chủ web. Chương trình được viết bằng JavaScript, sử dụng kỹ thuật điều khiển theo sự kiện, nhập/ xuất không đồng bộ để tối thiểu tổng chi phí và tối đa khả năng mở rộng.
NodeJS bao gồm có V8 JavaScript Engine của Google, libUV và vài thư viện khác NodeJS. NodeJS có thể chạy trên nhiều nền tảng hệ điều hành khác nhau từ Window cho tới Linux, OSX nên đó cũng là một lợi thế. NodeJS cung cấp các thư viện phong phú ở dạng JavaScript Module khác nhau giúp đơn giản hóa việc lập trình và giảm thời gian ở mức thấp nhất. NodeJS được xây dựng và chạy trên V8 Engine.
V8 Engine dựa trên C++. Vì vậy, cuối cùng trái tim của NodeJS chính là C++.js chứa một thư viện built-in cho phép các ứng dụng hoạt động như một Webserver mà không cần phần mềm như Nginx, Apache HTTP Server hoặc IIS.js cung cấp kiến trúc hướng sự kiện (event-driven) và non-blocking I/O API, tối ưu hóa thông lượng của ứng dụng và có khả năng mở rộng cao Mọi hàm trong Node.js là không đồng bộ (asynchronous). Do đó, các tác vụ đều được xử lý và thực thi ở chế độ nền (background processing). Đặc điểm nổi bật của Node.js là nó nhận và xử lý nhiều kết nối chỉ với một single- thread.
Điều này giúp hệ thống tốn ít RAM nhất và chạy nhanh nhất khi không phải tạo thread mới cho mỗi truy vấn giống PHP. Ngoài ra, tận dụng ưu điểm non-blocking I/O của Javascript mà Node.js tận dụng tối đa tài nguyên của server mà không tạo ra độ trễ như PHP. JSON APIs Với cơ chế event-driven, non-blocking I/O(Input/Output) và mô hình kết hợp với Javascript là sự lựa chọn tuyệt vời cho các dịch vụ Webs làm bằng JSON. Ứng dụng trên 1 trang ( Single page Application) Nếu bạn định viết 1 ứng dụng thể hiện trên 1 trang (Gmail?) NodeJS rất phù hợp để làm.
Với khả năng xử lý nhiều Request/s đồng thời thời gian phản hồi nhanh. Các ứng dụng bạn định viết không muốn nó tải lại trang, gồm rất nhiều request từ người dùng cần sự hoạt động nhanh để thể hiện sự chuyên nghiệp thì NodeJS sẽ là sự lựa chọn của bạn. 15 do an Expressjs là một framework được xây dựng trên nền tảng của Nodejs. Nó cung cấp các tính năng mạnh mẽ để phát triển web hoặc mobile.
Expressjs hỗ trợ các method HTTP và midleware tạo ra API vô cùng mạnh mẽ và dễ sử dụng Socket.io là một module trong Node.js được phát triển vào năm 2010. Nó được phát triển để sử dụng các kết nối mở để tạo điều kiện giao tiếp thời gian thực, trả về giá trị thực ở tại thời điểm đó.io cho phép giao tiếp hai chiều giữa máy khách và máy chủ. Giao tiếp hai chiều được bật khi máy khách có Socket.io trong trình duyệt và máy chủ cũng đã tích hợp gói Socket.io Nó được sử dụng trong việc xây dựng các ứng dụng web real-time cần tốc độ phản hồi ngay lập tức như: chat, trực tiếp bóng đá.io xây dựng dựa trên Engine.IO, đầu tiên nó sẽ thiết lập một kết nối long-polling, sau đó cố gắng nâng cấp lên các kết nối khác tốt hơn giống như WebSocket 16 do an 1. REACT NATIVE React Native là một framework do công ty công nghệ nổi tiếng Facebook phát triển nhằm mục đích giải quyết bài toán hiệu năng của Hybrid và bài toán chi phí khi mà phải viết nhiều loại ngôn ngữ native cho từng nền tảng di động.
React Native cho phép build ứng dụng Native đa nên tảng một cách dễ dàng, khác với Mobile Web App, HTML5 App và Hybrid App Hình 1 React Native sử dụng hai Thread cho ứng dụng React Native hiển thị các ứng dụng native cho cả điện thoại di động iOS và Android. React chịu trách nhiệm về view-controller và tạo ra các chế độ xem native bằng cách sử dụng JavaScript. Nó nhắm mục tiêu đến nền tảng di động thay cho các trình duyệt. Nói cách khác, chúng ta có thể tóm tắt bằng lời, các nhà lập trình viên web cảm thấy thoải mái khi viết các ứng dụng dành cho thiết bị di động có giao diện tự nhiên, tất cả từ thư viện JavaScript.
Điểm nổi bật của framework này là hầu hết các đoạn code bạn viết có thể được chia sẻ trên các nền tảng- React native giúp phát triển đồng thời cho cả Android và iOS dễ dàng hơn. 17 do an Với React Native, ứng dụng logic được viết và chạy trong JavaScript, trong khi UI của ứng dụng hoàn toàn native; nhờ đó, bạn không cần các thỏa hiệp thường được liên kết với HTML5 UI. Tương tự như React cho Web, các ứng dụng React Native được viết bằng cách sử dụng hỗn hợp JavaScript và XML, được gọi là JSX. Hỗ trợ cho cả iOS và Android, React Native có tiềm năng mở rộng trên tất cả các nền tảng trong tương lai.
React Native mang lại tất cả hiệu suất ứng dụng tốt hơn của React.JS, DOM abstraction (cũng như thao tác trong virtual DOM) và các phương pháp lập trình đơn giản cho phát triển di động hybrid – tốc độ và sự linh hoạt của phát triển ứng dụng web với kết quả native. POSTGRESQL PostgreSQL là một hệ thống quản trị cơ sở dữ liệu quan hệ miễn phí và nguồn mở (RDBMS) tập trung vào khả năng mở rộng và tuân thủ các tiêu chuẩn kỹ thuật. Nó được thiết kế để xử lý một loạt các khối lượng công việc lớn, từ các máy tính cá nhân đến kho dữ liệu hoặc dịch vụ Web có nhiều người dùng đồng thời. Là một hệ quản trị cơ sở dữ liệu mạnh, PostgreSQL có các tính năng phức tạp như kiểm soát truy cập đồng thời nhiều phiên bản (MVCC), khôi phục dữ liệu tại từng thời điểm (Recovery), quản lý dung lượng bảng (tablespaces), sao chép không đồng bộ, giao dịch lồng nhau (savepoints), sao lưu trực tuyến hoặc nội bộ, truy vấn phức tạp và tối ưu hóa, và viết trước các khai báo để quản lý và gỡ lỗi.
PostgreSQL hỗ trợ bộ ký tự quốc tế, hỗ trợ bảng mã nhiều byte, Unicode, và cho phép định dạng, sắp xếp và phân loại ký tự văn bản (chữ hoa, thường). PostgreSQL còn được biết đến với khả năng mở rộng để nâng cao cả về số lượng dữ liệu quản lý và số lượng người dùng truy cập đồng thời. Đã từng có những hệ thống PostgreSQL hoạt động trong môi trường thực tế thực hiện quản lý vượt quá 4 terabyte dữ liệu. Sau đây là một số thong tin giới hạn khả năng của PostgreSQL.
Các tính năng toàn vẹn dữ liệu bao gồm khóa chính, khóa ngoại, tầng cập nhật / xóa, kiểm tra hạn chế, ràng buộc duy nhất, và những hạn chế không null. 18 do an Trên hết, mã nguồn của PostgreSQL được phát hành theo mã nguồn mở tự do. Với quyền này sẽ mang lại cho bạn sự tự do để sử dụng, sửa đổi và cài đặt PostgreSQL trong bất kỳ hình thức nào mà bạn thích. Bất kỳ sửa đổi, cải tiến, hoặc những thay đổi bạn thực hiện là phục vụ nhu cầu của bản thân các bạn.
Với PostgreSQL, đây không chỉ một hệ thống cơ sở dữ liệu mạnh mẽ chuyên nghiệp, PostgreSQL còn là một nền tảng phát triển ứng dụng đơn, web, hoặc các sản phẩm phần mềm thương mại yêu cầu một RDBMS. Chính vì những ưu điểm như vậy mà PostgreSQL đã đạt được sự hài lòng của những người sử dụng và cả chuyên gia về công nghệ thông qua các giải thưởng như Linux New Media dành cho hệ điều hành tốt nhất và năm lần chiến thắng giải do tạp chí Linux Journal Editors bình chọn về DBMS tốt nhất. JSON WEB TOKEN JSON Web Mã (JWT) là một chuẩn mở (RFC 7519) định nghĩa một cách nhỏ gọn và khép kín để truyền một cách an toàn thông tin giữa các bên dưới dạng đối tượng JSON. Thông tin này có thể được xác minh và đáng tin cậy vì nó có chứa chữ ký số.
JWTs có thể được ký bằng một thuật toán bí mật (với thuật toán HMAC) hoặc một public / private key sử dụng mã hoá RSA. Khả năng hỗ trợ trình duyệt giao tiếp với nhau theo thời gian thực bằng video, âm thanh hay truyền tải dữ liệu “Peer-to-Peer” (P2P) mà không cần browser phải cài thêm plugins hay phần mềm hỗ trợ nào từ bên ngoài. WebRTC có thể giúp chúng ta gọi điện video ngay trong trình duyệt mà không cần đăng kí tài khoản, ngoài ra chúng còn được xài để phát triển game chơi trực tiếp trong trình duyệt và rất nhiều loại ứng dụng khác. WebRTC cung cấp khả năng đa phương tiện một cách mạnh mẽ cho Web, bao gồm hỗ trợ âm thanh, video, trao đổi tệp… Kết nối giữa các peer có thể được 19 do an thực hiện mà không yêu cầu một trình điều khiển đặc biệt hoặc plugin nào và nó có thể thực hiện mà không cần bất kỳ máy chủ trung gian nào.
FIREBASE Đó là một dịch vụ cơ sở dữ liệu thời gian thực hoạt động trên nền tảng đám mây được cung cấp bởi Google nhằm giúp các lập trình phát triển nhanh các ứng dụng bằng cách đơn giản hóa các thao tác với cơ sở dữ liệu. Dịch vụ Firebase có thể được chia thành hai nhóm: • Phát triển và thử nghiệm ứng dụng của bạn: Realtime Database, Auth, Test Lab, Crashlytics, Cloud Functions, Firestore, Cloud Storage, Performance Monitoring, Crash Reporting, Hosting • Phát triển và thu hút đối tượng của bạn: Firebase Analytics, Invites, Cloud Messaging, Predictions, AdMob, Dynamic Links, Adwords, Remote Config, App Indexing. Về mặt lịch sử, Firebase (tiền thân là Evolve) trước đây là một start up được thành lập vào năm 2011 bởi Andrew Lee và James Tamplin. Ban đầu, Evolve chỉ cung cấp cơ sở dữ liệu để các lập trình viên thiết kế các ứng dụng chat (và hiện tại thì để làm quen với realtime database thì bạn cũng làm ứng dụng chat đó thôi).
Tuy nhiên, họ nhanh chóng nhận ra tiềm năng sản phẩm của mình khi nhận thấy các khách hàng không sử dụng cơ sở dữ liệu để làm ứng dụng chat, mà thay vào đó, để lưu các thông tin như game progress. Bộ đôi Lee và Tamplin quyết định tách mảng realtime ra để thành lập một công ty độc lập – chính là Firebase – vào tháng 4 năm 2012. Vào tháng 10 năm 2014, Firebase gia nhập gia đình Google. Cả Google và Firebase đều càng lớn mạnh hơn.
Firebase có điều kiện để phát triển thần tốc, mở rộng số lượng các dịch vụ con, còn Google có được một đội ngũ nhân lực chất lượng cao, năng động, cũng như cơ sở hạ tầng và sự hiệu quả mà các dịch vụ của Firebase mang lại, mà không phải xây dựng lại từ đầu.