CHƯƠNG 1: TỔNG QUAN CÔNG NGHỆ SỬ DỤNG 1. RESTful API REST ( REpresentational State Transfer) là một dạng chuyển đổi cấu trúc dữ liệu, một kiểu kiến trúc để viết API. Nó sử dụng phương thức HTTP đơn giản để tạo cho giao tiếp giữa các máy. Vì vậy, thay vì sử dụng một URL cho việc xử lý một số thông tin người dùng, REST gửi một yêu cầu HTTP như GET, POST, DELETE, vv đến một URL để xử lý dữ liệu.
RESTful API là một tiêu chuẩn dùng trong việc thiết kế các API cho các ứng dụng web để quản lý các resource. RESTful là một trong những kiểu thiết kế API được sử dụng phổ biến ngày nay để cho các ứng dụng (web, mobile…) khác nhau giao tiếp với nhau. Chức năng quan trọng nhất của REST là quy định cách sử dụng các HTTP method (như GET, POST, PUT, DELETE…) và cách định dạng các URL cho ứng dụng web để quản các resource. RESTful không quy định logic code ứng dụng và không giới hạn bởi ngôn ngữ lập trình ứng dụng, bất kỳ ngôn ngữ hoặc framework nào cũng có thể sử dụng để thiết kế một RESTful API.1: Mô hình hoạt động của REST API REST hoạt động chủ yếu dựa vào giao thức HTTP.
Các hoạt động cơ bản nêu trên sẽ sử dụng những phương thức HTTP riêng. GET (SELECT): Trả về một Resource hoặc một danh sách Resource. POST (CREATE): Tạo mới một Resource. PUT (UPDATE): Cập nhật thông tin cho Resource.
DELETE (DELETE): Xoá một Resource. SVTH: Nguyễn Nhật Quang GVHD: PSG.TS Nguyễn Thanh Bình 2 Website rao vặt dành cho sinh viên Những phương thức hay hoạt động này thường được gọi là CRUD tương ứng với Create, Read, Update, Delete – Tạo, Đọc, Sửa, Xóa. RESTful API có 2 format chính là JSON và XML, hiện nay JSON được sử dụng phổ biến hơn. Web api ASP.NET core là một mã nguồn mở và là nền tảng mới cho xây dựng cloud trên internet kết nối các ứng dụng web, loT và mobile backends.NET Core có thể chạy trên .NET Core hoặc chạy đầy đủ trên .NET Core được kiến trúc để cung cấp một nền tảng phát triển tối ưu cho các ứng dụng được triển khai tới cloud hoặc chạy on-premises.NET Core bao gồm các thành phần mô-đun cần thiết tối thiểu, do đó bạn giữ lại được tính linh hoạt trong khi xây dựng các solution của bạn.
Bạn có thể phát triển và chạy ASP.NET Core trên Windows, MAC và LINUX. Cải tiến của ASP.NET core so với .Net Framework - Web UI và Web API được hợp nhất - Tích hợp các frameworks hiện đại cho khách hàng và nhà phát triển Hỗ trợ dependency injection - Khả năng lưu trữ trên IIS hoặc tự chủ trong tiến trình riêng của bạn - Công cụ vừa mới và đơn giản để phát triển các web hiện đại - Xây dựng và chạy nền tảng ứng dụng ASP.NET không chỉ trên Windows mà còn trên MAC và Linux nữa - Mã nguồn mở và có một cộng đồng lớn 1.NET SignalR core ASP.NET SignalR core là một thư viện cho các lập trình viên Asp.Net core đơn giản hóa quá trình thêm chức năng web real-time trong phát triển ứng dụng. Real-time web functionality là gì ? Đó là khả năng server đẩy những nội dung tới client đã được kết nối một cách tức thì. Nó khác với giao thức HTTP thông thường: server đợi những yêu cầu từ client và trả về nội dung tương ứng.
SignalR có thể sử dụng trong bất kì chức năng web real-time nào. Trong đó ứng dụng chat trên web là một ví dụ điển hình. SignalR xử lý quản lý kết nối một cách tự động, và cho bạn truyền đi thông điệp tới tất cả các client đã được kết nối một cách đồng loạt, giống như một chat room. Bạn cũng có thể gửi những thông điệp tới những client được xác định.
Kết nối giữa client và server là liên tục, không giống như kết nối HTTP cổ điển, cái mà sẽ thành lập lại kết nối cho mỗi lần giao tiếp. SVTH: Nguyễn Nhật Quang GVHD: PSG.TS Nguyễn Thanh Bình 3 Website rao vặt dành cho sinh viên 1. Entity Framework core Entity Framework core là một nền tảng được sử dụng để làm việc với CSDL quan hệ thông qua cơ chế ánh xạ Object Relational Mapping (ORM), qua đó sử dụng LINQ để truy vấn và cập nhật dữ liệu với sự hỗ trợ của ADO.NET Data Provider.2: Mô hình Entity Framework EDM (Entity Data Model): bao gồm ba phần chính Conceptual model, Mapping and Storage model. − Conceptual Model (khái niệm mô hình): là các lớp và mối quan hệ tương ứng với cơ sở dữ liệu.
Điều này sẽ được độc lập từ cơ sở dữ liệu; − Storage Model (mô hình lưu trữ): mô hình thiết kế cơ sở dữ liệu bao gồm Table, View, Store procedure, Relationship, Key,…; − Mapping (bản đồ): gồm thông tin các khái niệm mô hình do developer ánh xạ tới mô hình lưu trữ hay cơ sở dữ liệu. LINQ to Entities: là ngôn ngữ truy vấn được sử dụng để truy vấn với mô hình đối tượng Object model. Giá trị trả về tuỳ thuộc theo developer, theo Model. Entity SQL: là ngôn ngữ truy vấn giống như LINQ to Entities.
Nhưng nó hơi phức tạp hơn. Object Service: phục vụ cho việc truy cập, trả giá trị dữ liệu từ cơ sở dữ liệu. Object Service cung cấp đầy đủ dịch vụ để quá trình chuyển đổi dữ liệu từ thực thể đến cấu trúc đối tượng dễ dàng hơn. Entity Client Data Provider: giúp chuyển đổi L2E hoặc truy vấn Entity SQL vào truy vấn SQL trong cơ sở dữ liệu.
Nó sẽ giao tiếp với ADO.NET data provider hoặc lấy dữ liệu từ cơ sở dữ liệu.Net Data Provider: lớp này giao tiếp với cơ sở dữ liệu sử dụng theo chuẩn ADO. SVTH: Nguyễn Nhật Quang GVHD: PSG.TS Nguyễn Thanh Bình 4 Website rao vặt dành cho sinh viên Entity Framework cung cấp 3 mô hình tiếp cận xây dựng ứng dụng: − Database First: Sẽ tự động tạo ra Data model và các Object class từ Database có sẵn thông qua công cụ Entity Data Model Wizard; − Model First: cho phép tạo Data model bằng công cụ Entity Data Model Designer, sau đó phát sinh các Object class và Database; − Code First: cho phép thiết kế các Object class tương ứng với các Table trong Database. Việc sử dụng Code First đòi hỏi phải code nhiều nhưng bù lại nó linh hoạt và được sử dụng rất phổ biến. Elasticsearch Elasticsearch là một công cụ tìm kiếm dựa trên nền tảng Apache Lucene.
Nó cung cấp một bộ máy tìm kiếm dạng phân tán, có đầy đủ công cụ với một giao diện web HTTP có hỗ trợ dữ liệu JSON. Elasticsearch được phát triển bằng Java và được phát hành dạng nguồn mở theo giấy phép Apache: - Elasticsearch là một search engine. - Elasticsearch được kế thừa từ Lucene Apache - Elasticsearch thực chất hoặt động như 1 web server, có khả năng tìm kiếm nhanh chóng (near realtime) thông qua giao thức RESTful - Elasticsearch có khả năng phân tích và thống kê dữ liệu - Elasticsearch chạy trên server riêng và đồng thời giao tiếp thông qua RESTful do vậy nên nó không phụ thuộc vào client viết bằng gì hay hệ thống hiện tại của bạn viết bằng gì. Nên việc tích hợp nó vào hệ thống bạn là dễ dàng, bạn chỉ cần gửi request http lên là nó trả về kết quả.
- Elasticsearch là 1 hệ thống phân tán và có khả năng mở rộng tuyệt vời (horizontal scalability). Lắp thêm node cho nó là nó tự động auto mở rộng cho bạn. - Elasticsearch là 1 open source được phát triển bằng Java Indexing - Elasticsearch cho phép trả về kết quả cực nhanh bởi thay vì tìm kiếm bởi text, ES tìm kiếm bởi inverted index - Như vậy với việc dùng inverted index với các keywords, Thay vì đọc từng page để tìm kiếm, ES sẽ tìm kiếm keyword trong index nên kết quả trả về sẽ rất nhanh. Elasticsearch sử dụng search engine Apache Lucence để tạo và quản lý inverted index.
Document - Document là đơn vị tìm kiếm và đánh index. Một index có thể bao gồm một hay nhiều Document, và một Document có thể chứa một hay nhiều Fields. Trong thuật ngữ SVTH: Nguyễn Nhật Quang GVHD: PSG.TS Nguyễn Thanh Bình 5 Website rao vặt dành cho sinh viên về Database, thì một Document có thể hiểu như một table row và một Field tương ứng với một table column. Mapping - Là quá trình định nghĩa làm thế nào một document và các fields của nó được lưu trữ và đánh index.
- Mapping được tạo thông qua API.3: Mapping trong Elasticsearch Cluster - Trong Elasticsearch, mỗi một cluster là một tập các node(server), cluster chứa toàn bộ dữ liệu đồng thời cung cấp khả năng đánh index và tìm kiếm trên toàn bộ các node thuộc cluster đó. Mỗi cluster được định danh bởi một tên duy nhất, nếu không chỉ định cụ thể thì tên mặc định của nó là “elasticsearch”. Node - Một node là một single server, là một phần của cluster, tham gia vào quá trình đánh index và tìm kiếm của cluster. Cũng giống như cluster mỗi node được định danh bởi một tên và được sinh ngẫu nhiên tại thời điểm khởi động hệ thống.
Tất nhiên chúng ta có thể chỉ định tên cho các node này cho mục đích quản lý. Mỗi node có thể join với một cluster mặc định là join với elasticsearch cluster nếu không được chỉ định. Shards vs Replicas - Elasticsearch cung cấp cơ chế cho phép chia index thành nhiều phần nhỏ các phần này được gọi là shards. khi tạo một index có thể configure số lượng shards mà SVTH: Nguyễn Nhật Quang GVHD: PSG.TS Nguyễn Thanh Bình 6 Website rao vặt dành cho sinh viên chúng ta muốn lưu trữ index này.
Mỗi shards, bản thân nó là một index đầy đủ chức năng và độc lập do đó chúng có thể được host bởi bất kỳ node (server) nào. - Elasticsearch cũng cho phép bạn tạo một hay nhiều bản copy của một shards, gọi là replica shards ngắn gọn là replicas.4: Vai trò của Elasticsearch trong hệ thống Các dữ liệu tổng hợp, dữ liệu được người dùng tải lên sẽ lưu vào database sau đấy đồng bộ hóa sang Elasticsearch. Khi người dùng tìm kiếm thì sẽ tìm kiếm trên Elasticsearch, tốc độ vừa nhanh, vừa giảm tải cho database.js là 1 thư viện JavaScript mã nguồn mở để xây dựng các thành phần giao diện có thể tái sử dụng tạo ra bởi Facebook. - Trang web xây dựng dựa trên Client-side giao tiếp với server thông qua API - Hiện nay ReactJS là thư viện hàng đầu trong thiết kế website bới vì tính linh động và tối ưu tối của nó.
- React Native được Facebook công bố 2 năm sau React, cung cấp kiến trúc React để phát triển các ứng dụng Native (iOS, Android UWP) và đang tiếp nối React thành một kẻ khổng lồ trong lĩnh vực lập trình ứng dụng mobile. Kết chương Chương này cung cấp cho người đọc hiểu được các cơ sở lý thuyết, công nghệ được áp dụng trong đề tài Website Rao vặt dành cho sinh viên.