Trường ĐH Khoa Học Tự Nhiên Tp. Hồ Chí Minh
TRUNG TÂM TIN HỌC
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
2015
ộ
N i dung
ể
1. 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 ấ
1. Hướng dẫn xây dựng Web Service dùng API RESTful Service
Xây dựng và triển khai Web Service cho ứng dụng di động
2
ổ
1.1 T ng quan
̀ ̀
́ ́ ̀ ̉
́
ộ ậ ở ộ ầ ợ t các câu
ữ ệ ữ ậ ặ ấ ộ LinQ la gi ? •LINQ la tên viê t tă t cua Language Integrated Query (ngôn ng ̃ ư truy vâ n thông minh). •Là m t t p h p các thành ph n m r ng cho phép vi ế ư truy v n d li u ngay trong m t ngôn ng l p trình, nh C# ho c
ỗ ợ ậ ̣
ố ượ ướ
́ ́ ̉ ̉
Xây dựng và triển khai Web Service cho ứng dụng di động
ể ể ế ệ VB.NET. •Là môt mô hình ORM (Objectrelational mapping) h tr l p trình ẽ ạ CSDL h ng m nh m . ng đ i t •Cu pha p đ n gian, dê hiêu. ̃ ơ •Có th hi n th , binding tr c ti p lên các giao di n . ự ị
3
ổ
1.1 T ng quan
̀ ̀ LinQ la gi ?
̀ ́ ̀ ́ ́ ̣ ự ươ ̀ ng tri nh ma no giu p
́ ̃ ̀ ̃ ̃ ơ ̣ ̉ ́ ́ Chu y : •LINQ không la m tăng tô c đô th c thi ch ́ ơ viê t ma lênh nhanh h n va dê quan ly ma h n.
́ ́ ́ ́ ợ ơ ̉ ̉
•Co thê kê t h p LINQ v i ADO.Net đê truy vâ n.
Xây dựng và triển khai Web Service cho ứng dụng di động
4
ổ
1.1 T ng quan
Xây dựng và triển khai Web Service cho ứng dụng di động
̀ ́ ́ Mô hi nh kiê n tru c LinQ
5
̉
1.1 Tông quan
́ ́ ̣
́ ́ ̉ ̉
Xây dựng và triển khai Web Service cho ứng dụng di động
Co ca c loai LinQ sau: •LINQ To Objects. •LINQ To XML (XLINQ). ́ ́ ơ ợ Co thê kê t h p v i ADO.Net đê truy vâ n: •LINQ To Dataset. •LINQ To SQL (DLINQ). •LINQ To Entities.
6
ườ
1.2 Môi tr
ỗ ợ ng h tr LinQ
́ ̃ ̀ ̀ ư ợ ̣
́ ̀ ̃ ́ ợ ượ ử ̣ ̣ ̉ ̣ ̣
• Co nhiê u công cu hô tr LinQ, nh ng Visual Studio la công c s dung phô biê n va manh me nhâ t hiên nay
̃ cu hô tr đ
ở Visual Studio 2008 tr đi).
ượ ợ trên n n t ng ̃ c hô tr ề ả .NET 3.5 tr lênở .
Xây dựng và triển khai Web Service cho ứng dụng di động
́ ư ̣ ̉ ̣ System.LinQ. ̀ư (t • LinQ đ • Đê s dung LINQ phai khai ba o th viên ̉ ử
7
1.3 Cách truy v nấ
́ ́ ̉
̣ LINQ co 2 kiêu truy vâ n LinQ: •Lamda (Method) Syntax ́ Vi du:
́ ̣ var doDaiToiDas = dodais.Where( d => d.length > 10); •Query (Comprehension) Syntax Vi du:
Xây dựng và triển khai Web Service cho ứng dụng di động
var doDaiToiDas = from d in dodais where d.length > 10;
8
1.3 Cách truy v nấ
́
́
ơ
ư
̉
Các biểu thức truy vấn (Query Expressions) cua LINQ v i ca c t
̀
̀
́
́
́
ươ
ự
ư
kho a Select, From, Where va OrderBy t
ng t
́ nh cu pha p truy vâ n
cua SQL.
́
̉
Vi du:
̣
// 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
select diem ;
// Xử lý hiển thị ra màn hình
foreach (int i in diemQuery) {
Console.Write(i + " ");
Xây dựng và triển khai Web Service cho ứng dụng di động
9
} Console.ReadLine();
1.3 Cách truy v nấ
́ ́ ở ư ̣ ) ng th c truy vâ n m rông (Extension Methods
́ ̀ ́ ́ ́ ̃ ươ ̉ ượ ư ơ ng th c na y chi đ c khai ba o trong ca c l p ti nh
́ ́ ́ ượ ử ư ̣ ̉ ̣ ̉
Query
́ ươ Ca c ph •Ca c ph ́ (static class) •Đ c s dung đê biên dich ca c biêu th c truy vâ n (
̀ ́ ́ ́ ươ ư ̣
Expressions) tha nh ca c ph
̀ ng th c goi truyê n thô ng (object
Xây dựng và triển khai Web Service cho ứng dụng di động
oriented).
10
1.3 Cách truy v nấ
́ ử ) truy vâ n (Query Operators
́ ́ ́ ử ̉ ̣ ơ truy vâ n c ban sau: Filtering (loc), Join
́ ́ ́ ́ ́ ́ Ca c toa n t •LINQ co ca c toa n t ́ (nô i), ́ Projection (phe p chiê u), Sorting (să p xê p) , Grouping
́ ̉ (gom nho m), Conversions (chuyên đôi), ̉ Concatenation (ghe p ́
́ ợ ́ ử ượ ̣ nô i), đinh l ng) , ́ Aggregation (kê t h p), Quantifier (toa n t
̀ ̣ Partition (phân hoach), Generation , Set , Equality (bă ng nhau),
Xây dựng và triển khai Web Service cho ứng dụng di động
Element.
11
1.3 Cách truy v nấ
́ ử ) truy vâ n (Query Operators
̣ Filtering Operators) loc (
ư ̣ ́ ́ Ca c toa n t •Toa n t ́ ử ử S dung t ́ ̀ kho a: where
̀ ̀ ́ ́ ̉ ̣ ̣ Du ng đê loc ca c gia tri theo yêu câ u.
string[] cacTu= { “toi", “yeu", “lap", “trinh"};
IEnumerable
tu.Length == 3
select tu;
Xây dựng và triển khai Web Service cho ứng dụng di động
̣ ́ Vi du:
12
1.3 Cách truy v nấ
́ ử ) truy vâ n (Query Operators
Join Operators): ử ́ nô i (
́ ́ Ca c toa n t •Toa n t ́ Cú pháp sử dụng:
́ ử Toa n t Join:
join … in … on … equals …
́ ử Toa n t GoupJoin:
Xây dựng và triển khai Web Service cho ứng dụng di động
join … in … on … equals … into …
13
1.3 Cách truy v nấ
́ ử ) truy vâ n (Query Operators
Join Operators): ử ́ nô i (
́ ́ Ca c toa n t •Toa n t ́ ́ ́ ̣ ử ử ̣ Join:
join p in phongbans on
nv.PhongBanId equals d.PhongBanId
select new
{
TenNhanVien = nv.TenNhanVien,
TenPhongBan = d.TenPB
});
Xây dựng và triển khai Web Service cho ứng dụng di động
Vi du s dung toa n t var danhSachNV = (from nv in nhanviens
14
1.3 Cách truy v nấ
́ ́ ử ) truy vâ n (Query Operators
́ ́
ử ̣ ́ Ca c toa n t •Phe p chiê u (Projection Operations) ́ ̀ ư kho a: S dung t select
́ ̣ Co 2 dang: select va ̀ SelectMany
́ ̣ ử ̣
var query = from tu in dsCacTu select tu.Substring(0, 1);
Vi du s dung select:
List
List
lon ton trong san" };
var query = from cumTu in dsCacCumTu from tu in
cumTu.Split(' ')
Xây dựng và triển khai Web Service cho ứng dụng di động
́ ̣ ử ̣ Vi du s dung SelectMany:
15
select tu;
1.3 Cách truy v nấ
́ ́ ́ ử ) truy vâ n (Query Operators
́ ́ Ca c toa n t •Să p xê p (Sorting Operators )
́ ̣ Co 5 loai:
OrderBy
OrderByDescending: orderby ... descending
ThenBy: orderby …, …
ThenByDescending: orderby …, … descending
Xây dựng và triển khai Web Service cho ứng dụng di động
Reverse
16
1.3 Cách truy v nấ
́ ́ ́ ử ) truy vâ n (Query Operators
́ ́
int[] num = { -20, 12, 6, 10, 0, -3, 1 };
̣ Ca c toa n t •Să p xê p (Sorting Operators ) ́ Vi du:
// 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;
Xây dựng và triển khai Web Service cho ứng dụng di động
17
1.3 Cách truy v nấ
́ ́ ́ ử ) truy vâ n (Query Operators
́ Ca c toa n t •Gom nho m (Grouping Operators )
GroupBy
group … by
Hoặc:
group … by … into …
Xây dựng và triển khai Web Service cho ứng dụng di động
ToLookup
18
1.3 Cách truy v nấ
́ ́ ) truy vâ n (Query Operators
́ ử Ca c toa n t •Conversions
AsEnumerable
AsQueryable
Cast
OfType
ToArray
ToDictionary
ToList
Xây dựng và triển khai Web Service cho ứng dụng di động
ToLookup
19
1.3 Cách truy v nấ
́ ́ ử ) truy vâ n (Query Operators
Xây dựng và triển khai Web Service cho ứng dụng di động
́ Ca c toa n t •Concatenation Concat
20
1.3 Cách truy v nấ
́ ́ ) truy vâ n (Query Operators
́ ử Ca c toa n t •Aggregation
Aggregate
Average
Count
LonCount
Max
Min
Xây dựng và triển khai Web Service cho ứng dụng di động
Sum
21
1.3 Cách truy v nấ
́ ́ ) truy vâ n (Query Operators
́ ử Ca c toa n t •Quantifier Operations
All
Any
Xây dựng và triển khai Web Service cho ứng dụng di động
Contains
22
1.3 Cách truy v nấ
́ ́ ử ) truy vâ n (Query Operators
́ Ca c toa n t •Partition Operators
Skip
SkipWhile
Take
Xây dựng và triển khai Web Service cho ứng dụng di động
TakeWhile
23
1.3 Cách truy v nấ
́ ́ ́ ) truy vâ n (Query Operators
ử Ca c toa n t •Generation Operations DefaultIfEmpty
Empty
Range
Xây dựng và triển khai Web Service cho ứng dụng di động
Repeat
24
1.3 Cách truy v nấ
́ ́ ử ) truy vâ n (Query Operators
́ Ca c toa n t •Set Operations Distinct
Except
Intersect
Xây dựng và triển khai Web Service cho ứng dụng di động
Union
25
1.3 Cách truy v nấ
́ ử ) truy vâ n (Query Operators
́ ́ Ca c toa n t •Equality
Xây dựng và triển khai Web Service cho ứng dụng di động
SequenceEqual
26
1.3 Cách truy v nấ
́ ́ ử ) truy vâ n (Query Operators
ElementAtOrDefault
First
FirstOrDefault
Last
LastOrDefault
Single
SingleOrDefault
DefaultIfEmpty
Xây dựng và triển khai Web Service cho ứng dụng di động
́ Ca c toa n t •Element Operators ElementAt
27
1.3 Cách truy v nấ
̀ ử ụ ố ớ ố ượ ng Collection mà đã
ự ặ c th c thi giao di n IEnumerable ho c IEnumerable
ấ ủ ử ụ ườ ả ơ ợ ệ ớ ng h p s d ng đ n gi n nh t c a LINQ khi làm vi c v i
Xây dựng và triển khai Web Service cho ứng dụng di động
LINQ To Objects •La cách s d ng LINQ đ i v i các đ i t ệ ượ đ •Là tr ữ ệ d li u.
28
1.3 Cách truy v nấ
LINQ To Objects
́ Vi du:
namespace LINQtoObjects{
class HocVien{
static void Main(string[] args){ ́
̀
string[] tenHocViens = { “Ti ", “Te 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();
}
}
}
Xây dựng và triển khai Web Service cho ứng dụng di động
̣
29
1.3 Cách truy v nấ
ử ụ ấ ớ
́ ́ ̃ ươ ư ợ ng th c hô tr sau: Xattribute, XCData,
LINQ To XML • S d ng LINQ v i m c đích truy v n file XML. ụ • Co ca c ph ́ Xcomment, Xcontainer, Xdeclaration, Xdocument, XDocumentType,
Xelement, Xname, Xnamespace, Xnode,
XNodeDocumentOrderComparer, XNodeEqualityComparer,
Xobject, XObjectChange, XObjectChangeEventArgs,
Xây dựng và triển khai Web Service cho ứng dụng di động
XObjectEventHandler, XProcessingInstruction, Xtext.
30
1.3 Cách truy v nấ
LINQ To XML
́ ̣ ử ̣ ̉ ̣ ̣ Vi du s dung LINQ đê đoc tâp tin XML:
́ ́ ư ̣ //Khai ba o ca c th viên
using System;
using System.Collections.Generic;
using System.Linq;
Xây dựng và triển khai Web Service cho ứng dụng di động
using System.Xml.Linq;
31
1.3 Cách truy v nấ
́
̣ ử
LINQ To XML
Vi du s dung LINQ đê đoc tâp tin XML:
namespace LINQtoXML {
class MinhHoaDocXML {
static void Main(string[] args) {
string myXML = @"
Sales
";
XDocument xdoc = new XDocument();
xdoc = XDocument.Parse(myXML);
var result = xdoc.Element("Departments").Descendants();
foreach (XElement item in result) {
Xây dựng và triển khai Web Service cho ứng dụng di động
̣ ̉ ̣ ̣
32
Console.WriteLine("Department Name - " + item.Value); } } }}
ộ
N i dung
ể
1. Tìm hi u LinQ
ớ ề ệ i thi u v ASP.NET Web API
ơ ả ệ ớ ề i thi u c b n v RESTful Service
ể ạ ắ
ự
2. Hướng dẫn xây dựng Web Service dùng API RESTful Service • Gi • Gi • Các nguyên t c c b n đ t o ra RESTful Service ơ ả • Xây d ng Web Service
Xây dựng và triển khai Web Service cho ứng dụng di động
33
ớ
ề
ệ
2. 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 dich vu 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
Xây dựng và triển khai Web Service cho ứng dụng di động
MVC).
34
ớ
ề
ệ
2. 1 Gi
i thi u v ASP.NET Web API
ở ̣ ̉
ệ ấ ơ ự ả , nhanh chóng
̃ ể ượ ở ấ ở Open Source) và có th đ c s d ng b i b t kì client
Đăc điêm Web API (.NET 4.0 tr lên) •Giúp cho vi c xây d ng các HTTP service r t đ n gi n •Ma nguô n m ( ̀ ử ụ ỗ ợ nào h tr XML, JSON .
ỗ ợ ầ ủ ầ
•H tr đ y đ các thành ph n HTTP: URI, request/response headers,
ụ ặ
́ ́ ớ ạ ế ị ưở ế ̣ t b có băng thông gi ng cho các thi i h n nh ư ca c thiê t bi
̣
Xây dựng và triển khai Web Service cho ứng dụng di động
ữ ệ ữ ệ ể ể ặ ạ ộ ị caching, versioning, content formats. •Có th host trong ng d ng ho c trên IIS ứ ể . •Ki n trúc lý t di đông. •Đ nh d ng d li u có th là JSON, XML ho c m t ki u d li u b t k ấ ỳ.
35
ớ
ề
ệ
2. 1 Gi
i thi u v ASP.NET Web API
ở ̣ ̉
ị ớ ặ ạ ự
ộ ẫ ự
ứ ụ ề ộ
̃
ấ ồ ỗ ợ ườ ộ ng h tr cho các ph ng pháp b t đ ng b
Xây dựng và triển khai Web Service cho ứng dụng di động
ủ ầ Đăc điêm Web API (.NET 4.0 tr lên) •Làm m i và hi n đ i hóa các m u d án m c đ nh ệ ẫ •M u d án trên đi n tho i di đ ng ạ ệ •Nhi u tính năng m i đ h tr các ng d ng di đ ng ớ ể ỗ ợ •Tùy ch nh sinh ma (code). ỉ •Tăng c ươ •Đ c danh sách đ y đ tính năng trong các ghi chú phát hành ọ
36
ớ
ề
ệ
2. 1 Gi
i thi u v ASP.NET Web API
̉ ̉
́ ̀ ́ ơ ̉
́ ̣
̀ ̃ ợ ̉
́ ̃ ̀ ư ợ ̉
Ư u điêm cua Web API •Câ u hi nh đ n gian h n nhiê u so v i WCF. ̀ ơ ơ •Hiêu suâ t (performance) cao. •Hô tr RESTfull đâ y đu. •Hô tr đâ y đu ca c tha nh phâ n MVC nh : routing, controller, ̀ ̀ action result, filter, model binder, IoC container, dependency
injection, unit test, …
̀ ̃ ở
•Ma nguô n m (Open source).
Xây dựng và triển khai Web Service cho ứng dụng di động
37
ớ
ơ ả
ệ
2. 2 Gi
ề i thi u c b n v RESTful Service
̀ ̀ ́ ́ ơ ̣ ̣ ̣ ̉ ̣ ̉ ử La môt dich vu web đ n gian s dung HTTP va ti nh châ t cua
REST.
ắ ủ ế ế ơ ả 4 nguyên t c thi t k c b n sau:
ứ ươ ộ ng th c HTTP m t cách rõ r àng
ạ
ư ụ ị ấ
ể ổ No ́ tuân th theo • S d ng các ph ử ụ • Phi tr ng thái • Hi n th c u trúc th m c nh URls ể ư • Chuy n đ i JavaScript Object Notation (JSON) và XML ho c ặ
Xây dựng và triển khai Web Service cho ứng dụng di động
ả c hai.
38
ơ ả
ể ạ
ắ
2. 3 Nguyên t c c b n đ t o ra RESTful Service
ắ ế ế ơ ả t k c b n sau:
ử ụ ươ ứ ộ ng th c HTTP m t cách rõ r àng
ế ậ ữ ạ ậ ạ ậ ọ ộ 4 nguyên t c thi •S d ng các ph Thi t l p m t ánh x 11 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 :
ạ ộ ủ POST T o m t tài nguyên trên máy ch
ộ GET Truy xu t m t tài nguyên ấ
ổ ạ ể ậ ậ ặ ộ PUT Thay đ i tr ng thái m t tài nguyên ho c đ c p nh t nó
Xây dựng và triển khai Web Service cho ứng dụng di động
ỷ ỏ ộ DELETE Hu b ho c xoá m t tài nguyên ặ
39
ơ ả
ể ạ
ắ
2. 3 Nguyên t c c b n đ t o ra RESTful Service
ế ế ơ ả ắ t k c b n sau:
̣ 4 nguyên t c thi •Phi tr ng thái ạ ́ Vi du:
ế ế ạ Thi t k tr ng thá i:
Xây dựng và triển khai Web Service cho ứng dụng di động
Thiết kế phi trạng thái:
40
ơ ả
ể ạ
ắ
2. 3 Nguyên t c c b n đ t o ra RESTful Service
ắ ế ế ơ ả t k c b n sau:
ể ư ị ấ ư ụ
ấ
ệ
ở ộ
ủ
ủ
ố
.
ữ ườ
ể ọ
ứ
ng.
ế
ả
ằ
ạ
ặ
ạ
ố
ộ
ỗ
ườ
ầ
ầ
ộ
ỉ
ị
ng
ư ộ
ấ
ặ
ộ
ị
ị ỉ ủ
Xây dựng và triển khai Web Service cho ứng dụng di động
4 nguyên t c thi •Hi n th c u trúc th m c nh URls ấ C u trúc đ a ch c a RESTful service: •Gi u các đuôi tài li u m r ng c a b n g c trong máy ch (.jsp, .php, .asp) ả •Đ m i th là ch th •Thay th các kho ng tr ng b ng g ch chân ho c g ch n i (m t trong hai lo i). ạ ố •Tránh các chu i yêu c u. ầ •Thay vì s d ng mã (404 Not Found) khi yêu c u đ a ch cho m t ph n đ ử ụ d nẫ thi ̀ 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. ồ ả ặ
41
ơ ả
ể ạ
ắ
2. 3 Nguyên t c c b n đ t o ra RESTful Service
ắ ế ế ơ ả t k c b n sau:
ổ ể ặ
4 nguyên t c thi •Chuy n đ i JavaScript Object Notation (JSON) và XML ho c c ả hai.
́ ̀ ́ ́ ́ ̃ ́ ư ư ̣ ̉ ̣ ̉ La môt ban to m tă t ca c thuôc ti nh cua nh ng th trong
̀ ̃ ́ ư ̣ ̣ mô hi nh d liêu hê thô ng.
̃ ́ ̀ ư ư ̣ ̣ ̣ ̣ ̉ ̣ ̣ Đinh dang d liêu ma ̀ ng dung va trao đôi dich vu trong
́ ́ ́ ̀ ̀ ̀ ư ư ̉ ̣ ̉ m c đa p ng yêu câ u/ phan hô i hoăc trong phâ n thân cua
HTTP.
́ ̀ ̃ ́ ́ ư ơ ̉ ̉ ̣ Ca c chu thê trong mô hi nh d liêu co liên quan v i nhau.
́ ́ ́ ̀ ̀ ́ ượ ̣ ̣ ̣ ̣ Câ u tru c dich vu sao cho no tân dung đ c phâ n đâ u châ p
Xây dựng và triển khai Web Service cho ứng dụng di động
́ ̃ ̣ ̣ ̣ nhân HTTP co să n bên trong – môt loai MIME
42
ự
2. 4 Xây d ng Web Service
́ươ 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.
́ươ ạ T o ra các Web API B c 3:
ươ
ứ ừ ầ . đ u
ng th c t
t các ph
ươ
ứ
ng th c
ụ ể ạ
ể ế
́ ọ ̣ ̉ vào th m c Controllers và ch n thêm controller.
t các service này.
t cách vi
ư ụ Nhâ p chuôt phai •Web API 2 Controller Empty: t ự ế vi •Web API 2 Controller with read/write actions: pha t ́ sinh các ph ế ví d đ b n có th bi
Xây dựng và triển khai Web Service cho ứng dụng di động
̀ ́ươ ử ̣ ̉ Chay th va kiêm tra. B c 4:
43
Xây dựng và triển khai Web Service cho ứng dụng di động