Bài giảng Xây dựng và triển khai Web Service cho ứng dụng di động Bài 2: Các công nghệ dùng để xây dựng Web Service cho ứng dụng di động cung cấp cho người học các kiến thức tổng quan về LinQ, hướng dẫn xây dựng Web Service dùng API RESTful Service. c
Trang 1Trường ĐH Khoa Học Tự Nhiên Tp Hồ Chí Minh
TRUNG TÂM TIN HỌC
2015
Bài 2: Các công nghệ dùng để xây dựng Web
Service cho ứng dụng di động – Phần 1
Ngành Mạng & Thiết bị di động
www.t3h.vn
Trang 21. Tìm hiểu LinQ
• Tổng quan
• Môi trường hỗ trợ LinQ
• Cách truy vấn:
Dùng LinQ đọc danh sách đối tượng và thực hiện truy vấn
Dùng LinQ đọc dữ liệu XML và thực hiện truy vấn
2. Hướng dẫn xây dựng Web Service dùng API RESTful Service
Nội dung
Trang 31.1 Tổng quan
Xây dựng và triển khai Web Service cho ứng dụng di động 3
LinQ là gì?
ngữ truy vấn thông minh)
câu truy vấn dữ liệu ngay trong một ngôn ngữ lập trình, như C# hoặc VB.NET
trình CSDL hướng đối tượng mạnh mẽ
• Cú pháp đơn giản, dễ hiểu
• Có thể hiển thị, binding trực tiếp lên các giao diện
Trang 41.1 Tổng quan
LinQ là gì?
Chú ý:
• LINQ không làm tăng tốc độ thực thi chương trình mà nó
giúp viết mã lệnh nhanh hơn và dễ quản lý mã hơn
Trang 51.1 Tổng quan
Xây dựng và triển khai Web Service cho ứng dụng di động 5
Mô hình kiến trúc LinQ
Trang 71.2 Môi trường hỗ trợ LinQ
Xây dựng và triển khai Web Service cho ứng dụng di động 7
hỗ trợ được sử dụng phổ biến và mạnh mẽ nhất hiện nay (từ
Visual Studio 2008 trở đi)
Trang 81.3 Cách truy vấn
LINQ có 2 kiểu truy vấn LinQ:
• Lamda (Method) Syntax
Ví dụ:
var doDaiToiDas = dodais.Where( d => d.length > 10);
• Query (Comprehension) Syntax
Ví dụ:
var doDaiToiDas = from d in dodais where d.length > 10;
Trang 91.3 Cách truy vấn
Xây dựng và triển khai Web Service cho ứng dụng di động 9
Các biểu thức truy vấn (Query Expressions) của LINQ với các từ khóa
Select, From, Where và OrderBy tương tự như cú pháp truy vấn của SQL
Ví dụ:
// Tạo một mảng kiểu int chứa các điểm số
int[] diems = new int[] { 7, 8, 10, 9};
// Sử dụng cú pháp truy vấn của LINQ để lấy danh sách điểm trên 8 điểm
IEnumerable<int> diemQuery = from diem in diems where diem > 80 select
diem ;
// Xử lý hiển thị ra màn hình
foreach (int i in diemQuery) {
Console.Write(i + " ");
} Console.ReadLine();
Trang 101.3 Cách truy vấn
Các phương thức truy vấn mở rộng (Extension Methods)
• Các phương thức này chỉ được khai báo trong các lớp tĩnh
(static class)
• Được sử dụng để biên dịch các biểu thức truy vấn (Query
Expressions) thành các phương thức gọi truyền thống
(object-oriented)
Trang 111.3 Cách truy vấn
Xây dựng và triển khai Web Service cho ứng dụng di động 11
Các toán tử truy vấn (Query Operators)
(nối), Projection (phép chiếu), Sorting (sắp xếp) , Grouping
(gom nhóm), Conversions (chuyển đổi), Concatenation
(ghép nối), Aggregation (kết hợp), Quantifier (toán tử định
lượng) , Partition (phân hoạch), Generation , Set , Equality
(bằng nhau), Element
Trang 121.3 Cách truy vấn
Các toán tử truy vấn (Query Operators)
• Toán tử lọc (Filtering Operators)
Sử dụng từ khóa: where
Dùng để lọc các giá trị theo yêu cầu
Ví dụ:
string[] cacTu= { “toi", “yeu", “lap", “trinh"};
IEnumerable<string> query = from tu in cacTu where
tu Length == 3 select tu;
Trang 131.3 Cách truy vấn
Xây dựng và triển khai Web Service cho ứng dụng di động 13
Các toán tử truy vấn (Query Operators)
• Toán tử nối (Join Operators):
Cú pháp sử dụng:
Toán tử Join:
join … in … on … equals …
join … in … on … equals … into …
Trang 141.3 Cách truy vấn
Các toán tử truy vấn (Query Operators)
• Toán tử nối (Join Operators):
Ví dụ sử dụng toán tử Join:
var danhSachNV = (from nv in nhanviens
Trang 151.3 Cách truy vấn
Xây dựng và triển khai Web Service cho ứng dụng di động 15
Các toán tử truy vấn (Query Operators)
• Phép chiếu (Projection Operations)
Sử dụng từ khóa: select
Ví dụ sử dụng select:
List<string> dsCacTu = new List<string>() { “chu", “meo", “con" };
var query = from tu in dsCacTu select tu.Substring(0, 1);
Ví dụ sử dụng SelectMany:
List<string> dsCacCumTu = new List<string>() { “chu meo con", “chay lon ton trong san" };
var query = from cumTu in dsCacCumTu from tu in
cumTu.Split(' ') select tu;
Trang 161.3 Cách truy vấn
Các toán tử truy vấn (Query Operators)
• Sắp xếp (Sorting Operators )
Trang 171.3 Cách truy vấn
Xây dựng và triển khai Web Service cho ứng dụng di động 17
Các toán tử truy vấn (Query Operators)
• Sắp xếp (Sorting Operators )
Ví dụ:
int[] num = { -20, 12, 6, 10, 0, -3, 1 };
// Sắp xếp dãy số trên thứ tự tăng dần
var daySo = from n in num orderby n select n;
// Sắp xếp dãy số trên theo thứ tự giảm dần
var daySoTangDan = from n in num orderby n descending select n;
Trang 181.3 Cách truy vấn
Các toán tử truy vấn (Query Operators)
• Gom nhóm (Grouping Operators )
GroupBy
group … by Hoặc:
group … by … into …
ToLookup
Trang 191.3 Cách truy vấn
Xây dựng và triển khai Web Service cho ứng dụng di động 19
Các toán tử truy vấn (Query Operators)
Trang 201.3 Cách truy vấn
Các toán tử truy vấn (Query Operators)
• Concatenation
Concat
Trang 211.3 Cách truy vấn
Xây dựng và triển khai Web Service cho ứng dụng di động 21
Các toán tử truy vấn (Query Operators)
Trang 231.3 Cách truy vấn
Xây dựng và triển khai Web Service cho ứng dụng di động 23
Các toán tử truy vấn (Query Operators)
Trang 251.3 Cách truy vấn
Xây dựng và triển khai Web Service cho ứng dụng di động 25
Các toán tử truy vấn (Query Operators)
Trang 261.3 Cách truy vấn
Các toán tử truy vấn (Query Operators)
• Equality
SequenceEqual
Trang 271.3 Cách truy vấn
Xây dựng và triển khai Web Service cho ứng dụng di động 27
Các toán tử truy vấn (Query Operators)
Trang 281.3 Cách truy vấn
LINQ To Objects
thực thi giao diện IEnumerable hoặc IEnumerable<T>
liệu
Trang 29static void Main(string[] args){
string[] tenHocViens = { “Tí", “Tèo", “Bin", “Bo", “Bom" };
var list = from t in tenHocViens select t;
StringBuilder sb = new StringBuilder();
foreach (string s in list) { sb.Append(s + Environment.NewLine);
} Console.WriteLine(sb.ToString());
Console.ReadLine();
} } }
Trang 301.3 Cách truy vấn
LINQ To XML
• Sử dụng LINQ với mục đích truy vấn file XML
• Có các phương thức hỗ trợ sau: Xattribute, XCData, Xcomment,
Xcontainer, Xdeclaration, Xdocument, XDocumentType, Xelement,
Xname, Xnamespace, Xnode, XNodeDocumentOrderComparer,
XProcessingInstruction, Xtext
Trang 311.3 Cách truy vấn
Xây dựng và triển khai Web Service cho ứng dụng di động 31
LINQ To XML
Ví dụ sử dụng LINQ để đọc tập tin XML:
//Khai báo các thư viện
using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;
Trang 32static void Main(string[] args) {
string myXML = @"<Departments> <Department>Account</Department>
<Department>Sales</Department><Department>Pre-Sales</Department> <Department>Marketing</Department> </Departments>";
XDocument xdoc = new XDocument();
xdoc = XDocument.Parse(myXML);
var result = xdoc.Element("Departments").Descendants();
Trang 331. Tìm hiểu LinQ
2. Hướng dẫn xây dựng Web Service dùng API RESTful Service
Nội dung
Xây dựng và triển khai Web Service cho ứng dụng di động 33
Trang 342 1 Giới thiệu về ASP.NET Web API
ASP.NET Web API là gì?
Là framework giúp chúng ta tạo ra các Web API - API trên nền
web (HTTP)
Web API là các dịch vụ Web (Web service) được xây dựng dựa
trên HTTP sử dụng mô hình lập trình convention (như ASP.NET
MVC)
Trang 352 1 Giới thiệu về ASP.NET Web API
Xây dựng và triển khai Web Service cho ứng dụng di động 35
Đặc điểm Web API (.NET 4.0 trở lên)
nào hỗ trợ XML, JSON
caching, versioning, content formats
thiết bị di động
Trang 362 1 Giới thiệu về ASP.NET Web API
Đặc điểm Web API (.NET 4.0 trở lên)
Trang 372 1 Giới thiệu về ASP.NET Web API
Xây dựng và triển khai Web Service cho ứng dụng di động 37
Ưu điểm của Web API
action result, filter, model binder, IoC container, dependency injection, unit test, …
Trang 382 2 Giới thiệu cơ bản về RESTful Service
- Là một dịch vụ web đơn giản sử dụng HTTP và tính chất của
REST
- Nó tuân thủ theo 4 nguyên tắc thiết kế cơ bản sau:
cả hai
Trang 392 3 Nguyên tắc cơ bản để tạo ra RESTful
Service
Xây dựng và triển khai Web Service cho ứng dụng di động 39
4 nguyên tắc thiết kế cơ bản sau:
• Sử dụng các phương thức HTTP một cách rõ ràng
Thiết lập một ánh xạ 1-1 giữa các hành động: tạo, đọc, cập nhật và xoá (CRUD) các quá trình vận hành và các phương thức HTTP:
nó
Trang 404 nguyên tắc thiết kế cơ bản sau:
• Phi trạng thái
Ví dụ:
Thiết kế trạng thái:
Thiết kế phi trạng thái:
2 3 Nguyên tắc cơ bản để tạo ra RESTful
Service
Trang 41Xây dựng và triển khai Web Service cho ứng dụng di động 41
4 nguyên tắc thiết kế cơ bản sau:
• Hiển thị cấu trúc thư mục như URls
Cấu trúc địa chỉ của RESTful service:
.asp)
hai loại)
phần đường dẫn thì luôn luôn cung cấp một trang mặc định hoặc tài nguyên như một phản hồi
2 3 Nguyên tắc cơ bản để tạo ra RESTful
Service
Trang 424 nguyên tắc thiết kế cơ bản sau:
• Chuyển đổi JavaScript Object Notation (JSON) và XML
hoặc cả hai
Là một bản tóm tắt các thuộc tính của những thứ trong mô
hình dữ liệu hệ thống
đáp ứng yêu cầu/ phản hồi hoặc trong phần thân của HTTP
Các chủ thể trong mô hình dữ liệu có liên quan với nhau
Cấu trúc dịch vụ sao cho nó tận dụng được phần đầu chấp
2 3 Nguyên tắc cơ bản để tạo ra RESTful
Service
Trang 432 4 Xây dựng Web Service
Xây dựng và triển khai Web Service cho ứng dụng di động 43
Bước 1:
Khởi động Visual Studio → tạo một project ASP.NET Web Application
và chọn template Web API
Bước 2:
Tạo Data Model sử dụng Entity Framework để Web API service có thể tương tác CRUD (Create, Read, Update, Delete) dữ liệu được
Bước 3: Tạo ra các Web API
Nhấp chuột phải vào thư mục Controllers và chọn thêm controller
•Web API 2 Controller Empty: tự viết các phương thức từ đầu
•Web API 2 Controller with read/write actions: phát sinh các phương thức ví dụ để bạn có thể biết cách viết các service này
Bước 4: Chạy thử và kiểm tra