Các đ c tính k thu t nh WS-Addressing, WS-Security, WS-Trust, WS-Secure Conversation, WS-Reliable Messaging, WS-Coordination và WS-Atomic Transaction, WS-Policy và WS-Metadata exchange..
Trang 1
L I CÁM N
Chúng em chân thành g i l i c m n đ n th y Ninh Xuân H ng, trong th i gian th c hi n khóa lu n, th y đã t n tình h ng d n, ch b o, phân tích nh ng thi u sót, cho chúng em nh ng l i khuyên k p th i và vô cùng quan tr ng, c n thi t trong t ng giai đo n t tìm hi u, nghiên c u đ n hi n th c ng d ng N u không có s h ng d n t n tình c a th y, chúng em đã không th th c hi n đ tài đúng th i gian quy đ nh c a khoa
Chúng em c ng chân thành c m n các th y, cô ph trách v n phòng khoa đã
t o đi u ki n t t nh t đ chúng em hoàn thành khóa lu n t t nghi p
Chúng em c ng chân thành c m n gia đình, b n bè đã ng h chúng em trong th i gian th c hi n khóa lu n
TP HCM, ngày tháng n m 2011
Các sinh viên th c hi n
Phan Kinh Thanh Lâm
Trang 2NH N XÉT GI NG VIÊN H NG D N
TP H Chí Minh, ngày tháng n m 2011
Trang 3NH N XÉT GI NG VIÊN PH N BI N
TP H Chí Minh, ngày tháng n m 2011
Gi ng viên ph n bi n
Trang 4M C L C
DANH M C B NG viii
DANH M C HÌNH ix
DANH M C CÁC T VI T T T x
L I M U xi
T NG QUAN V TÀI 1
Gi i thi u đ tài 1
C s lý thuy t 1
Hi n th c ng d ng minh h a 1
PH N 1 : C S LÝ THUY T 3
CH NG 1 : S L C V WCF 3
1.1 Gi i thi u 3
1.1.1 Gi i thi u s l c WCF 3
1.1.2 Service Oriented Architecture 3
1.1.3 Web Services 4
1.2 c tính k thu t WCF 5
1.2.1 Thông đi p (WS-Addressing) : 5
1.2.2 B o m t (WS-Security, WS-Trust, WS-Secure Conversation): 5
1.2.3 tin c y (WS-Reliable Messaging): 5
1.2.4 Giao d ch (WS-Coordination và WS-Atomic Transaction) : 6
1.2.5 Siêu d li u (WS-Policy và WS-Metadata exchange) : 6
1.3 Ki n trúc WCF (Net Framework 4) 6
1.3.1 H p đ ng và miêu t (Contracts and Descriptions) 7
1.3.2 D ch v th c thi (Service Runtime) 7
1.3.3 B n tin (Messaging) 8
1.3.4 L u tr và kích ho t (Hosting and Activation) 8
CH NG 2 : CONTRACT 9
2.1 Khái ni m h p đ ng (contract) 9
2.2 H p đ ng d ch v (service contract) 9
2.2.1 Khái ni m 9
2.2.2 Cách th c ho t đ ng 9
2.2.3 Thu c tính service contract (Net Framework 4) 11
2.2.4 Thu c tính operation contract 12
2.3 H p đ ng d li u (data contract) 12
2.4 H p đ ng thông đi p (message contract) 13
CH NG 3 : SERVICE 15
3.1 Khái ni m 15
3.2 Các lo i d ch v 17
3.2.1 nh ki u (Typed Service) 17
3.2.2 Không đ nh ki u (Untyped Service) 18
3.2.3 B n tin đ nh ki u 20
Trang 5CH NG 4 : CHANNEL 21
4.1 Khái ni m 21
4.2 Các d ng kênh (Channel Shape) 22
4.2.1 Mô hình truy n thông m t chi u 22
4.2.2 Mô hình truy n thông song công 22
4.2.3 Mô hình truy n thông yêu c u tr l i 23
4.3 M i quan h gi a Operation Contract và Channel Shape 24
4.4 Channel listener 24
4.5 Channel Factory 25
CH NG 5 : BINDINGS VÀ ADDRESS 26
5.1 Khái ni m ràng bu c (binding) 26
5.2 Các ràng bu c thông d ng 26
5.3 Ch n ràng bu c (bindings) theo yêu c u s d ng 27
5.4 Ràng bu c tùy ch nh(Custom Binding) 28
5.4.1 T o ràng bu c tùy ch nh b ng l p trình 28
5.4.2 T o ràng bu c tùy ch nh b ng c u hình 29
5.4.3 Ràng bu c do ng i dùng đ nh ngh a (User-Defined Binding) 29
5.5 Các thành ph n c a ràng bu c (Binding Elements) 30
5.5.1 V n chuy n (Transport) 30
5.5.2 B mã hóa (Encoder) 31
5.5.3 B o m t (security) 32
5.6 Khái ni m đ a ch trong WCF 33
5.7 Các ki u đ a ch 33
5.7.1 a ch đi m cu i (Endpoint Address) 33
5.7.2 a ch c s (Base Address) 33
5.7.3 a ch MEX (MEX Address) 34
5.8 Các đ nh d ng đ a ch 34
5.8.1 a ch TCP(TCP Address) 35
5.8.2 a ch HTTP (HTTP Address) 35
5.8.3 a ch HTTPS (HTTPS Address) 35
5.8.4 a ch MSMQ (MSMQ Address) 36
5.8.5 a ch IPC (Inter-Process Communication) 37
5.8.6 a ch IIS(IIS Address) 37
CH NG 6 : BEHAVIORS 38
6.1 Khái ni m 38
6.2 Các lo i hành vi 38
6.2.1 Hành vi d ch v (Service Behaviors) 38
6.2.2 Hành vi đi m cu i (Endpoint Behaviors) 38
6.2.3 Hành vi ho t đ ng (Operation Behaviors) 38
6.3 Ch c n ng c a các hành vi 39
6.4 Hành vi d ch v (Service Behavior) 40
6.4.1 Concurrency và Instancing 40
6.4.2 Các ch c n ng khác 41
Trang 66.4.3 C u hình ServiceBehaviors 41
6.5 Hành vi ho t đ ng (Operation Behaviors) 43
6.5.1 Giao d ch (Transaction) 43
6.5.2 Xác đ nh hàm g i 43
6.5.3 Vi c s d ng l i đ i t ng 43
6.6 Hành vi b o m t (Security Behaviors) 44
7.1 T l u tr (self-hosting) 45
7.1.1 Khái ni m 45
7.1.2 T l u tr (self-hosting) đ c qu n lý b i d ch v windows (windows service) 45
7.2 L u tr trên Windows Activation Services 46
7.3 L u tr trên IIS (IIS hosting) 49
7.3.1 L u tr d ch v trên IIS 49
7.3.2 Ch c n ng ASMX 51
CH NG 8 : B O M T VÀ X LÝ NGO I L 52
8.1 Khái ni m v b o m t 52
8.1.1 Authentication (xác th c) 52
8.1.2 Authorization ( y quy n) 52
8.1.3 Confidentiality(B o m t) 52
8.1.4 Integrity (tính toàn v n) 52
8.1.5 Ch đ v n chuy n (Transport) and b o m t b n tin 52
8.2 B o m t m c transport 53
8.2.1 Mã hóa s d ng SSL 53
8.2.2 Client Authentication 54
8.2.3 Service Identity (ch ng th c service) 55
8.3 M c đ b o m t b n tin 56
8.3.1 Ch ng th c v i wsHttpBinding 56
8.4 X lý l i b ng cách th c tách bi t 56
8.4.1 Cách th c cô l p 56
8.4.2 L i Kênh (fault channel) 57
8.5 X lý thông báo l i 60
8.5.1 H p đ ng l i (Fault contract) 60
8.5.2 X lý l i t biên d ch 63
8.5.3 Ph c h i (callback) 65
Trang 7PH N 2 : NG D NG MINH H A 67
CH NG 1 : PHÂN TÍCH VÀ THI T K 67
1.1 Ý t ng 67
1.2 Thi t k c s d li u 68
1.3 Thi t k ng d ng 72
1.3.1 Ph n m m qu n tr h th ng thi tr c nghi m 72
1.3.2 Website TracNghiemOnline 74
CH NG 2 : HI N TH C NG D NG 75
2.1 Ph n m m qu n tr h th ng thi tr c nghi m 75
2.1.1 Phân tích vi c áp d ng c s lý thuy t WCF vào ng d ng 75
2.1.2 Giao di n ph n m m 78
2.2.1 H c Sinh 83
2.2.2 Giáo viên 86
2.3 S đ ho t đ ng gi a ph n m m qu n tr h th ng thi tr c nghi m và Website 91
CH NG 3 : ÁNH GIÁ VÀ H NG PHÁT TRI N 92
3.1 ánh giá k t qu đ t đ c 92
3.2 H ng phát tri n 92
PH L C 93
Ph l c 1 : H ng d n cài đ t 93
1.1 Gi i thi u c u hình c a ng d ng 93
1.2 Yêu c u c u hình 93
1.3 Ghi chú v h đi u hành 93
1.5 C u trúc th m c FTP server 102
Ph l c 2 : H ng d n s d ng 103
2.1 S d ng ph n m m qu n tr h th ng 103
2.2 S d ng trang web 106
GHI CHÚ 111
TÀI LI U THAM KH O 112
Trang 8DANH M C B NG
2.1 Thu c tính service contract Tài li u tham kh o WCF c a
MSDN Vi t Nam
2.2 Thu c tính operation contract Tài li u tham kh o WCF c a
MSDN Vi t Nam
4.1 M i quan h gi a Operation
Contract và Channel Shape Essential WCF, 2008
5.1 Li t kê các giao th c v n chuy n và
ph ng pháp mã hóa Programming WCF with NET 4.0
5.2 Danh sách các kênh v n chuy n
Trang 94.1 Các ch ng kênh (channel stack) Essential WCF, 2008
4.2 Mô hình truy n thông m t chi u Essential WCF, 2008
4.3 Mô hình truy n thông song công Essential WCF, 2008
4.4 Mô hình truy n thông yêu c u tr l i Essential WCF, 2008
5.1 L c đ ph ng pháp ch n ràng bu c Programming WCF with NET 4.0
5.2 Cách làm vi c c a MSMQ Tài li u tham kh o WCF c a MSDN
Vi t Nam 6.1 Mô hình ho t đ ng c a các hành vi Essential WCF, 2008
6.2 Ho t đ ng giao d ch Essential WCF, 2008
7.1 Ki n trúc c a WAS Essential WCF, 2008
7.2 Kích ho t Windows Process
Activation Services Essential WCF, 2008
7.3 Thi t l p WCF non-HTTP activation Essential WCF, 2008
7.4 IIS th c thi trên WAS Essential WCF, 2008
Trang 10DANH M C CÁC T VI T T T
WCF Windows Communication
SOA Service Oriented Architecture Ki n trúc h ng d ch v
URL Uniform Resource Locator c dùng đ tham chi u t i tài
nguyên trên Internet
SOAP Simple Object Access Protocol Giao th c d a trên XML đ trao đ i
thông tin ng d ng qua HTTP
XML Extensible Markup Language Ngôn ng xây d ng c u trúc tài li u
v n b n
CLR Common Language Runtime
Môi tr ng th c thi cung c p c s
h t ng c b n c a Microsoft NET framework
SSL Secure Socket Layer Giao th c cho phép b n truy n t i
thông tin m t cách an toàn qua m ng
WAS Windows activation services C ch kích ho t ti n trình m i c a
Trang 11L I M U
Windows Communication Foundation (WCF) là công ngh n n t ng nh m
th ng nh t nhi u mô hình l p trình giao ti p thành m t mô hình duy nh t giúp cho vi c liên l c gi a các h đi u hành khác nhau, các ngôn ng l p trình khác nhau có th trao đ i v i nhau
Microsoft cung c p các hàm API riêng bi t cho các liên l c d a trên SOAP đ t i u hoá công vi c gi a các n n t ng s d ng Web Services, còn cung c p các API đ t i u vi c liên l c d a trên mã nh phân gi a các ng d ng
ch y trên h th ng Windows g i là NET Remoting, các API cho các giao d ch phân tán, và API cho liên l c d b WCF th ng nh t các API này thành m t mô hình duy nh t nh m đáp ng mô hình l p trình h ng d ch v
ây là m t b c đ t phá c a Microsoft trong vi c t o m t n n t ng th ng
nh t trong công ngh truy n thông V i vi c ra đ i c a WCF, m i ph ng pháp liên l c tr c kia đ u có th th c hi n trên WCF Do v y nhà phát tri n ch c n làm ch đ c công ngh WCF là có th xây d ng các ng d ng m t cách nhanh chóng
WCF là m t mô hình l p trình cho phép nhà phát tri n xây d ng các gi i pháp d ch v đ m b o tính n đ nh, b o m t và th m chí là đ m b o giao d ch phát tri n các ng d ng k t n i và đ a ra cho nhà phát tri n nh ng giá tr ti m
n ng trong t ng lai, đó là cách ti p c n phát tri n h th ng phân tán th ng nh t,
đ n gi n
Vì v y chúng em ch n đ tài này là m t cách ti p c n m t công ngh m i đ y
ti m n ng phát tri n trong t ng lai
Trang 12T NG QUAN V TÀI
Gi i thi u đ tài
Trong đ tài này t p trung nghiên c u v công ngh WCF và d a trên n n
t ng công ngh này cùng v i nh ng ki n th c đã h c, xây d ng m t h th ng thi
tr c nghi m trong tr ng trung h c ph thông đ làm rõ h n nh ng ti n ích và s
c i ti n công ngh trong WCF
C s lý thuy t
Gi i thi u v s l c, m c tiêu và ý ngh a WCF, mô hình ki n trúc WCF (trên n n t ng NetFramework 4.0) trình bày các khái ni m nh Service Oriented Architecture, Web Services Các đ c tính k thu t nh WS-Addressing, WS-Security, WS-Trust, WS-Secure Conversation, WS-Reliable Messaging, WS-Coordination và WS-Atomic Transaction, WS-Policy và WS-Metadata exchange Các đ nh ngh a riêng trong WCF
Các ch c n ng n i b c c a WCF nh h p đ ng (contract), d ch v (services), kênh(channels), hành vi(behaviors), ràng bu c (binding), đ a ch (address), l u
tr (host), x lý b o m t(security), phân lo i và u đi m v các cách th c l u tr
m t ng d ng WCF
Hi n th c ng d ng minh h a
D a trên nh ng tìm hi u v lý thuy t, xây d ng h th ng thi tr c nghi m trong tr ng trung h c ph thông ng d ng đ c thi t k d a trên mô hình client – server s d ng WCF đ minh h a cho các ch c n ng c a WCF nh :
• C s d li u đ c l u tr bên server và client k t n i đ n service c a server đ truy xu t c s d li u Minh ho kh n ng truy n thông đa
d ng trong WCF
• Hi n th c ch c n ng b o m t trên các đ ng truy n t i và n i dung
b n tin đây s d ng ch c n ng mã hoá và xác nh n ký hi u trên
Trang 13đ ng truy n t i và n i dung b n tin, qua đó b o m t kênh v n chuy n
và n i dung b n tin
• S d ng DataContract, DataMember, OperationContract,
ServiceContract,…Các ch c n ng trên minh ho tính đa d ng trong
ki n trúc d ch v Trao đ i d li u d a trên các b n tin xây d ng, do
đó có th t ng tác v i các h đi u hành khác nhau, các ngôn ng khác nhau
• Xây d ng ch đ x lý l i và ngo i l d a trên ch c n ng FaultContract
• H tr đa d ng k t n i nh MSMQ, named pipes, TCP,… ng d ng minh ho ch c n ng TCP
Trang 14PH N 1 : C S LÝ THUY T
1.1 Gi i thi u
1.1.1 Gi i thi u s l c WCF
WCF là mô hình l p trình th ng nh t đ l p trình các ng d ng phân b trên
n n t ng Microsoft WCF có ý ngh a quan tr ng trong vi c t o ra m t ki n trúc chung đ h tr cho các phong cách giao ti p truy n thông khác nhau Hai ý
t ng này là kênh (channels) và ràng bu c (bindings)
Kênh (channel) : M i kênh đ c dành riêng cho m t khía c nh c s h t ng
c th , ví d nh an ninh, đ tin c y Vi c thi t l p đ y đ các nhu c u c s h
t ng c a m t công ngh truy n thông đ n l đ c x lý b i m t ng n x p kênh (stack of channels) đ c xác đ nh tr c ho c tùy ch nh
B ng cách xác đ nh m t ràng bu c (binding) c th , m t máy khách ho c
d ch v WCF ng m t o ra m t ng n x p kênh (stack of channels) đ th c hi n
m t t p h p các hành vi giao ti p D ch v đ c xác đ nh b i m t giao di n WCF c th có th đ c truy c p thông qua m t ràng bu c ho c đ ng th i truy
c p thông qua nhi u h n m t ràng bu c
D a trên d ch v WCF có th ng d ng vào h u h t các môi tr ng ng d ng
nh ASP.NET hay ph n m m, ti n trình Khi s d ng WCF, l p trình viên ch
c n t p trung vào ng d ng không c n quan tâm đ n các giao th c giao ti p
1.1.2 Service Oriented Architecture
Ki n trúc h ng d ch v là m t h ng ti p c n v i vi c thi t k và tích h p các ph n m m, ch c n ng, h th ng theo d ng module, trong đó m i module đóng vai trò là m t d ch v có k t n i l ng l o (loose coupling service) và có kh
n ng truy c p qua môi tr ng m ng
SOA không ph i là m t công ngh c th và c ng không là m t ngôn ng c
th Nó ch là m t k ho ch chi ti t ho c m t cách ti p c n thi t k h th ng ây
Trang 15là m t mô hình ki n trúc nh m nâng cao hi u qu , t c đ x lý, và n ng su t c a
đ a ra các d ch v , khách hàng có th g i nó và s d ng nó Các thông tin liên
l c gi a m t d ch v web và ng d ng phía khách hàng s d ng thông đi p XML M t d ch v web đ c l u tr trong m t máy ch web và HTTP đ c s
d ng nh các giao th c v n chuy n gi a các máy ch và các ng d ng phía máy khách
M i d ch v web có m t URL duy nh t và bao g m các ph ng th c khác nhau Khi g i m t d ch v web, ph i xác đ nh ph ng th c nào mu n g i, và
v t qua các thông s c n thi t c a ph ng th c d ch v web M i ph ng th c
d ch v web c ng s cung c p cho m t gói đáp ng đ cho ng i g i bi t k t qu
th c hi n
Trang 161.2 c tính k thu t WCF
1.2.1 Thông đi p (WS-Addressing) :
WS-Addressing là m t c ch cho phép các d ch v web giao ti p thông tin
đ a ch V i các d ch v web truy n th ng, thông tin đ a ch đ c th c hi n b i
t ng v n chuy n (transport), và các thông đi p c a d ch v web không bi t v
đi m đ n c a nó V i tiêu chu n m i này, thông tin đ a ch đ c ch a trong thông đi p XML M t tiêu đ SOAP (SOAP header) có th đ c thêm vào thông
đi p cho m c đích này T ng v n chuy n ch ch u trách nhi m cung c p thông
đi p đó đ n m t đi u ph i có kh n ng đ c các siêu d li u
1.2.2 B o m t (WS-Security, WS-Trust, WS-Secure Conversation): WS-Security mô t làm th nào đ x lý các v n đ an ninh trong thông đi p SOAP Nó đính kèm ch ký, mã hóa thông tin và các token b o m t trong thông
đi p SOAP Ngoài ph ng pháp xác th c HTTP / HTTPS truy n th ng, nó còn
k t h p thêm các tính n ng b o m t trong tiêu đ c a thông đi p SOAP, đ c
th c hi n trong l p ng d ng (Application layer) Vì v y nó đ m b o b o m t cho vi c g i nh n thông đi p
Có m t s chi ti t k thu t liên quan v i WS-Security, ví d nh WS-SecureConversation, WS-Federation, WS-Authorization, WS-Policy, WS-Trust, WS-Privacy
WS-ReliableMessaging mô t m t giao th c cho phép thông đi p SOAP
đ c v n chuy n đáng tin c y gi a các ng d ng phân tán
Các mô hình WS-ReliableMessaging th c hi n vi c v n chuy n thông đi p
m t cách tin c y gi a ngu n và đích đ n N u m t thông đi p không th g i đ n đích, thông báo m t ngo i l ho c báo cho ngu n thông đi p không th đ n đích Có m t s tùy ch n đ m b o v n chuy n cho WS-ReliableMessaging, bao
g m AtLeastOnce, AtMostOnce, Exactly Once, and InOrder
Trang 171.2.4 Giao d ch (WS-Coordination và WS-Atomic Transaction) :
Hai tiêu chu n cho phép giao d ch v i các thông đi p c a SOAP
1.2.5 Siêu d li u (WS-Policy và WS-Metadata exchange) :
WSDL [Web Service Description Language] là hi n th c c a WS-Metadata Exchange
WS-Policy đ nh ngh a các ch c n ng linh đ ng h n c a d ch v mà không
th hi n đ c b ng WSDL
1.3 Ki n trúc WCF (Net Framework 4)
Hình 1.1 : Các l p chính trong ki n trúc WCF
Trang 181.3.1 H p đ ng và miêu t (Contracts and Descriptions)
H p đ ng đ nh ngh a các khía c nh khác nhau c a thông đi p h th ng Các
chính sách và ràng bu c quy đ nh các đi u ki n giao ti p trong d ch v Bao g m
các chính sách b o m t và các đi u ki n khác khi k t n i Ví d : Xác đ nh s
d ng giao th c nào HTTP ho c TCP, Có s d ng mã hóa không ?
• H p đ ng d li u (data contract) miêu t các tham s c a b n tin mà
m t d ch v có th t o ra và s d ng Các tham s c a b n tin đ c
đ nh ngh a b ng ngôn ng XML T o đi u ki n thu n l i cho các h
th ng có h tr XML
• H p đ ng thông đi p (message contract) đ nh ngh a nh ng thông
đi p đ c bi t s d ng giao th c SOAP Và cho phép qu n lý chi ti t
h n các ph n c a b n tin khi c n s chính xác cao
• H p đ ng d ch v (service contract) đ c t các ph ng th c c a d ch
v Và đ c hi u nh là giao di n trong các ngôn ng l p trình
1.3.2 D ch v th c thi (Service Runtime)
L p d ch v th c thi (service runtime) ch a các s ki n trong quá trình th c
• Instance behavior : Quy đ nh các tr ng h p service có th th c thi
• Transaction behavior : Thi t l p ph c h i h th ng giao d ch khi có
l i x y ra
• Dispatch behavior : Quy đ nh cách th c x lý c a b n tin và đ c x
lý b i WCF
Trang 19• Message inspection : Qu n lý các b ph n c a tin nh n, có ch c n ng
l c và x lý
1.3.3 B n tin (Messaging)
L p b n tin (Messaging) là t p h p các kênh Kênh là m t thành ph n x lý
b n tin M t t p h p các kênh g i là ng n x p kênh Kênh ho t đ ng d a trên
b n tin và tiêu đ b n tin i m khác bi t gi a l p này v i l p service runtime là
s x lý các khác bi t trong n i dung b n tin G m hai kênh : Kênh v n chuy n
và các kênh giao th c
• Kênh v n chuy n : c và ghi các b n tin t m ng Có x lý mã hóa
khi v n chuy n (đ c bi u di n nh là Infosets XML)
• Kênh giao th c : X lý các b n tin theo giao th c, đ c ho c ghi b sung tiêu đ vào b n tin
L p b n tin (Messaging) xác đ nh các đ nh d ng có th có và các mô hình
c a d li u nh WS-Security quy đ nh ch đ b o m t trong bàn tin, Reliable Messaging đ m b o ch đ tin c y khi v n chuy n b n tin H tr ch
WS-đ mã hóa WS-đa d ng cho t ng kênh Nh HTTP, TCP, Named Piped …m i kênh
D ch v c ng có th th c thi t đ ng nh m t d ch v trên windows (windows service) Các thành ph n COM+ c ng đ c l u tr nh các d ch v WCF
Trang 20CH NG 2 : CONTRACT 2.1 Khái ni m h p đ ng (contract)
H p đ ng là t p h p các ho t đ ng quy đ nh s truy n t i gi a thi t b đ u
cu i v i môi tr ng giao ti p M i ho t đ ng là s trao đ i b n tin đ n gi n
Trang 21thành công Ho t đ ng d ch v đ c đánh d u là m t chi u nên c s h t ng s
t i u hóa cho tr ng h p trên
Ho t đ ng hai chi u : Yêu c u đáp ng thông tin liên l c là mô hình trao đ i thông tin ph bi n nh t gi a máy khách và d ch v Do tính ch t yêu c u và đáp
ng, n u x y ra tr ng h p quá nhi u máy khách cùng k t n i vào m t d ch v
s gây ra b t đ ng b trong ng d ng, WCF s s d ng tính ch t g i l i (callback) đ x lý
Hình 2.1 : Mô t ho t đ ng hai chi u c a d ch v h p đ ng
Trang 222.2.3 Thu c tính service contract (Net Framework 4)
Thu c tính service contract đ c s d ng đ mô t giao di n
CallbackContract Thi t l p ho c tr v ki u c a callback contract khi t ng tác
ch đ song công
ConfigurationName Thi t l p ho c tr v tên c a t p tin c u hình
Name Thi t l p ho c tr v tên c a thành ph n <portType> trong
phép, không cho phép, ho c có đi u ki n
HasProtectionLevel Tr v m c đ b o v c a thành viên đ c thi t l p
TypeId Tr v đ nh danh c a thu c tính
B ng 2.1 : Thu c tính service contract
Trang 232.2.4 Thu c tính operation contract
Ph ng th c xác đ nh các ho t đ ng c a service contract trong ng d ng
Action Thi t l p ho c tr v ho t đ ng c a WS-Addressing trong
IsTerminating Quy đ nh ph ng th c k t thúc trong m t phiên làm vi c Name Tr v tên c a ph ng th c đang ho t đ ng
ProtectionLevel Thi t l p ho c tr v s mã hóa, ký k t ho c c hai t b n
tin c a m t ho t đ ng
ReplyAction Thi t l p ho c tr v giá tr c a hành đ ng SOAP cho các
tin nh n tr l i trong ho t đ ng đó
TypeId Tr v đ nh danh c a thu c tính
B ng 2.2 : Thu c tính operation contract
2.3 H p đ ng d li u (data contract)
H p đ ng d li u mô t các vi c trao đ i d li u c a d ch v (service WCF)
v i máy khách Qua đó máy khách và d ch v có th t ng tác v i nhau mà không c n ph i qua b t k khai báo trung gian nào.H p đ ng d li u đ nh ngh a cách s p x p th t cho t ng tham s và ki u tr v
Quá trình serialization d li u là quá trình chuy n m t c u trúc d li u thành
m t đ nh d ng s d ng trong d ch v WCF cho quá trình g i đi c a d ch v Quá trình deserialization là quá trình nh n d li u t d ch v và chuy n
ng c l i thành c u trúc d li u[2]
Trang 24H p đ ng d li u g m hai thu c tính là DataContract và DataMember
Thu c tính DataContract dùng đ đ nh ngh a các l p, thu c tính DataMember dùng đ đ nh ngh a các ph ng th c mà h p đ ng d ch v (service contract) s
d ng
C u trúc m t DataContract :
Cách th c s d ng DataContract :
2.4 H p đ ng thông đi p (message contract)
H p đ ng thông đi p là tính n ng c i ti n cho vi c s d ng đi u khi n toàn
b đ nh d ng c a các b n tin SOAP, t ng tác tr c ti p v i thông đi p SOAP (tiêu đ và n i dung), mô t c u trúc c a b n tin SOAP và có th t ng tác thông qua các chu n XML Schema Definition (XSD), vì v y có th t ng tác v i b t
k h th ng nào qua SOAP
Có th chuy n đ i t DataContractSerializer qua XmlSerializer khi c n ki m soát hoàn toàn thay vì tu n t hóa d li u Và chuy n đ i t h p đ ng d li u (data contract) sang h p đ ng thông đi p (message contract) khi c n s ki m soát toàn di n trong b n tin SOAP
Trang 25H p đ ng thông đi p còn cung c p các kh n ng tùy ch nh trong b o m t
(không s d ng WS-Security), ch ký c ng nh mã hóa trên các tiêu đ SOAP
Nh ng nh c đi m c a h p đ ng thông đi p (message contract) là máy khách (client) và d ch v (service) ph i t thêm các thông tin c a tiêu đ
H p đ ng thông đi p có hai đ nh d ng :
H p đ ng thông đi p mang đ n tính đa d ng trong vi c đ nh d ng các tham
s trong các b n tin SOAP, ví d xác đ nh b n tin có n i dung b n tin hay đ u đ hay không đ nh ngh a h p đ ng thông đi p ta s d ng các l p thu c tính mô
t sau : MessageContract, MessageHeader, và MessageBodyMember cùng v i các tham s t ng ng v i t ng l p
Trang 26CH NG 3 : SERVICE 3.1 Khái ni m
D ch v (service) là m t ch c n ng k t n i đ n các máy khác trên m ng theo
mô hình d ch v D ch v đ nh h ng (service orientation) là cách th c thi t l p
th c hi n trên các m c th i gian khác nhau
Khi nghiên c u v d ch v s th y các khái ni m nh là ngôn ng , công ngh
n n t ng, phiên b n…và gi a các d ch v ch đ c quy đ nh theo mô hình truy n thông
Máy khách c a d ch v ch s d ng các ph ng th c mà d ch v cung c p
ng d ng client có th là ng d ng window, website hay m t l p Silverlight
Trang 27ho c nh ng ng d ng khác Máy khách và d ch v t ng tác v i nhau b ng b n tin, b n tin có th đ c g i tr c ti p ho c qua trung gian
Vì d ch v có th đ c l p trình t nh ng ngôn ng khác nhau nên m t d ch
v WCF th ng có nhi u siêu liên k t Ch ng h n nh WSDL (Web Services Description Language) qua giao th c HTTP ho c m t giao th c chu n nào đó
N u nh s t ng tác gi a máy khách và d ch v mà m t bên không s d ng WCF có th giao ti p qua các l p CLR
V i WCF, máy khách không th t ng tác tr c ti p v i d ch v ngay c khi
đ a ph ng hay b nh c a d ch v Thay vào đó máy khách th ng s d ng
d ch v thông qua proxy
WCF cho phép máy khách k t n i b ng nhi u cách th c khác nhau Trên cùng m t máy khách có th s d ng d ch v trong ng d ng mi n (domain), ng
d ng mi n thông qua nh ng ti n trình khác, ho c qua các ti n trình khác
Hình 3.2 : T ng tác WCF trên cùng m t máy
Trang 28Lo i d ch v này th ng đ c g i là “mô hình tham s ”, mô hình này đ nh ngh a m t cách chính xác cách th c làm vi c c a
d ch v , các d ch v ki u này có th ch p nh n các ki u đ n gi n c ng nh ph c
t p, không gi i h n vi c đ nh ki u c a các tham s hay k t qu tr v Nh ng
c n l u ý là ph i đ nh ngh a datacontract cho các d ch v khi truy n các tham s hay tr v giá tr ki u ph c t p d ch v này không c n làm vi c tr c ti p
m c b n tin, d ch v này còn h tr các ki u tham s ref và out
Trang 293.2.2 Không đ nh ki u (Untyped Service)
D ch v ki u này ph c t p h n so v i d ch v đ nh ki u (Typed Service) Trong ki u d ch v này ph i làm vi c tr c ti p m c b n tin, các đ i t ng b n tin đ c chuy n qua l i gi a máy khách và d ch v , và d ch v có th tr v m t
đ i t ng b n tin n u đ c yêu c u Trong ki u d ch v này còn có th truy c p
Trang 30public class BookOrder
{
private string isbn;
private int quantity;
private string ordernumber;
public BookOrder(BookOrder message) {
isbn = message.isbn;
quantity = message.quantity; }
public class ServiceClass : IServiceClass {
string IServiceClass.InitiateOrder() ; {
Trang 31return "Initiating Order ";
} public BookOrder PlaceOrder(BookOrder request) {
BookOrder response = new BookOrder(request);
response.OrderNumber = "12345678";
return response;
} string IServiceClass.FinalizeOrder() {
return "Order placed successfully.";
} } }
3.2.3 B n tin đ nh ki u
Ki u d ch v này còn đ c g i là “ mô hình h p đ ng b n tin ”[4]
Trong ki u
d ch v này, ph i đ nh ngh a các b n tin và n i dung c a chúng Trong ki u d ch
v này, các b n tin đ c mô t v i thu c tính MessageContract, là các h p đ ng
b n tin th ng đ c s d ng đ đ nh ngh a các l p b n tin Các b n tin này s
đ c s d ng đ g i qua l i trong các thao tác c a d ch v
Trang 32CH NG 4 : CHANNEL 4.1 Khái ni m
Kênh (channel) chính là đ ng d n truy n t i các b n tin trong các ng d ng WCF, th c hi n nh t quán các b n tin Quy đ nh thông s cho các giao th c v n chuy n, giao th c và c cách th c ch n nh ng b n tin không mong đ i
T p h p các kênh (channel) g i là các ch ng kênh (channel stack) Ch ng kênh là t p h p các ti n trình c a b n tin Ch ng kênh đ c t o nên b ng cách
s d ng m t giao th c TCP c a kênh v n chuy n (transport channel) và m t giao
th c c a kênh giao d ch (protocol channels) Vì v y nó cho phép g i nh n các
b n tin trên m ng b ng giao th c TCP
Nhi m v c a ch ng kênh là chuy n đ i các b n tin sang đ nh d ng chung
c a d ch v và máy khách Có hai lo i kênh đ c s d ng đ làm đi u này : Kênh v n chuy n (transport channel) và kênh giao th c (transport channel) WCF cung c p nhi u kênh v n chuy n (transport channel) nh HTTP, TCP, MSMQ, peer-to-peer, và named pipes cho các vi c nh b o m t, giao d ch và truy n t i tin c y Và m t vài giao th c v n chuy n (transport) khác có s n ho c thông qua trung gian cho nhi u các ph ng ti n v n chuy n (transport) nh SMTP, FTP, UDP, WebSphere MQ, và SQL Service Broker
Hình 4.1 : Các ch ng kênh (channel stack)
Trang 334.2 Các d ng kênh (Channel Shape)
WCF h tr ba mô hình trao đ i b n tin : M t chi u, song công, và yêu c u
tr l i ng v i m i mô hình, WCF cung c p nh ng giao di n riêng bi t, các giao di n đó đ c g i là các d ng kênh
M t s d ng kênh nh : IOutputChannel, IInputChannel, IDuplexChannel, IResquestChannel, IReplyChannel ng v i các d ng kênh trên có các d ng khác
h tr ho t đ ng trên phiên làm vi c nh : IOutputSessionChannel,
IInputSessionChannel, IDuplexSessionChannel, IResquestSessionChannel,
IReplySessionChannel
4.2.1 Mô hình truy n thông m t chi u
Là liên l c ch theo m t chi u duy nh t Là chi u t phía máy khách t i d ch
v M t chi u ph bi n khi máy khách không c n thông tin tr v Sau khi b n tin đ c g i đi, thì k t thúc c a vi c trao đ i thông tin liên l c t o ra d ch v cho liên l c m t chi u, ta đ t tham s IsOneWay c a thu c tính mô t
B n tin
Hình 4.2 Mô hình truy n thông m t chi u
4.2.2 Mô hình truy n thông song công
Là s k t h p c a hai mô hình truy n thông m t chi u v i m t giao di n IDuplexChannel D ch v không ch có th tr l i các b n tin đ n mà còn có th
Trang 34kh i t o liên l c v i máy khách b ng cách g i b n tin yêu c u ph n h i t phía máy khách
Hình 4.3 Mô hình truy n thông song công
4.2.3 Mô hình truy n thông yêu c u tr l i
Máy khách g i m t b n tin cho d ch v nó s ch đ nh n m t ph n h i t
d ch v Trong th i gian ch ph n h i t d ch v , máy khách s không th c hi n
b t k thao tác nào M c đ nh trong WCF là mô hình yêu c u và tr l i
Hình 4.4 Mô hình truy n thông yêu c u tr l i.
Trang 354.3 M i quan h gi a Operation Contract và Channel Shape
B ng 4.1 : M i quan h gi a Operation Contract và Channel Shape
4.4 Channel listener
K th a t d ch v truy n thông c a WCF c s d ng đ t o b ph n ch
x lý cho b n tin g i đ n Và t o ra các ch ng kênh (channel stack), thi t l p
Trang 36con tr cho các ng d ng Thông th ng không x lý tr c ti p trên channel shape mà thông qua ServiceHost
4.5 Channel Factory
Channel Factory t o ra m t kênh (channel) đ g i các b n tin và duy trì tr ng thái ho t đ ng mà các kênh do nó t o ra Nh ng thông th ng không s d ng channel factory m t cách tr c ti p, thay vào đó th ng s d ng các l p k th a
t ClientBase<>, t o t svcutil.exe ho c Service Reference trong Visual Studio
Trang 37CH NG 5 : BINDINGS VÀ ADDRESS 5.1 Khái ni m ràng bu c (binding)
Ràng bu c là t p h p các c u hình m c đ nh c a kênh Qui đ nh gi a máy khách (client) và d ch v (service) nh giao th c (protocol), mã hóa (encoding), giao th c
v n chuy n (transport)
• Giao th c (protocol) : nh ngh a tính b o m t, kh n ng th c hi n giao
d ch, ho c kh n ng truy n b n tin m t cách tin c y
• Giao th c v n chuy n (transport) : nh ngh a giao th c c b n đ c s
d ng trong truy n thông
• Mã hoá (encoding) : nh ngh a vi c mã hoá trong b n tin
5.2 Các ràng bu c thông d ng
Có 5 lo i ràng bu c đ c s d ng th ng xuyên là:
• Ràng bu c c b n (Basic Binding) : c cung c p b i l p BasicHttpBinding, ràng bu c c b n đ c thi t k đ làm cho các d ch v WCF gi ng nh các d ch v Web ASMX, đ các máy khách c có th làm
vi c v i các d ch v m i
• Ràng bu c TCP (TCP Binding) : c cung c p b i l p NetTcpBinding, ràng bu c TCP s d ng giao th c TCP cho vi c giao ti p gi a các máy trong m ng n i b (intranet) Có m t s tính n ng n i b c nh đ tin c y, giao d ch, b o m t, và t i u hóa giao ti p WCF – to – WCF, m c đích là đ
c máy khách và d ch v đ u s d ng WCF
• Ràng bu c IPC (IPC Binding) : c cung c p b i l p NetNamedPipeBinding, ràng bu c IPC s d ng giao th c đ ng ng đ t tên cho vi c giao ti p trong cùng m t máy ây là ràng bu c an toàn nh t vì không nh n k t n i t bên ngoài, ràng bu c IPC có các tính n ng t ng t
nh ràng bu c TCP
• Ràng bu c d ch v Web (Web Service Binding) : c cung c p b i l p WSHttpBinding, ràng bu c d ch v Web s d ng giao th c HTTP và
Trang 38HTTPS làm giao th c v n chuy n, có các tính n ng t ng t nh ràng bu c TCP trên m ng Internet c bi t ràng bu c này s d ng tiêu chu n WS-*
• Ràng bu c MSMQ (MSMQ Binding) : c cung c p b i l p NetMsmqBinding, ràng bu c MSMQ s d ng giao th c MSMQ làm giao
B ng 5.1 : li t kê các giao th c v n chuy n và ph ng pháp mã hóa
5.3 Ch n ràng bu c (bindings) theo yêu c u s d ng
N u d ch v có nhu c u giao ti p v i các máy khách không s d ng WCF
Non-WCF client và máy khách này c n các d ch v web c b n, chúng ta ch n lo i ràng
bu c c b n (Basic Binding), nh ng n u máy khách có th hi u đ c tiêu chu n
WS-*, có th s d ng ràng bu c d ch v web (Web Service Binding) đ có th s d ng các
N u máy khách và d ch v cùng n m trên cùng m t máy thì ràng bu c đ ng ng
đ t tên (IPC Binding) là l a ch n t t nh t
Trang 39Hình 5.1 : L c đ ph ng pháp ch n ràng bu c
5.4 Ràng bu c tùy ch nh(Custom Binding)
N u nh c 5 ràng bu c thông d ng đ u không th a đ c yêu c u s d ng, có th
t đ nh ngh a m t lo i ràng bu c riêng, ràng bu c này đ c g i là ràng bu c tùy ch nh (Custom Binding)
Trang 40Ví d :
CustomBinding customBinding = new CustomBinding() ;
customBinding.Elements.Add(new BinaryMessageEncodingBindingElement ()) ; customBinding.Elements.Add(new UdpBindingElement ()) ;
5.4.2 T o ràng bu c tùy ch nh b ng c u hình
Thành ph n customBinding trong c u hình h tr l p trình viên t o ra m t ràng
bu c tùy ch nh Khi t o m t ràng bu c tùy ch nh c n quan tân đ n các ràng bu c v giao th c v n chuy n và b mã hóa N u mu n t o m t ràng bu c tùy ch nh có th thay đ i, dùng ph ng pháp c u hình, tr ng h p ng c l i, ph ng pháp l p trình s thích h p h n