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
OperationContract là True. Máy khách WCF 永ng d映ng máy khách Máy ch栄 WCF 永ng d映ng máy ch栄 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
kh 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. Máy Khách WCF ID u p le xC h a n n e l II n p u tC h a n n e l IO u tp u tC h a n n e l 永ng d映ng máy khách Máy Ch栄 WCF ID u p le xC h a n n e l IIn p u tC h a n n e l 永ng d映ng máy ch栄 IO u tp u tC h a n n e l B違n tin B違n tin
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.
4.3 M i quan h gi a Operation Contract và Channel Shape M t chi u Yêu c u – M t chi u Yêu c u – Tr l i Phiên Ph c h i Các D ng Kênh Khác Khác Không Có IDuplexChannel Khác Khác Không Có IDuplexSessionChannel Khác Khác Có Có IDuplexSessionChannel
Có Có Không Không IDuplexChannel
Có Có Không Không IRequestChannel
Có Có Không Không IDuplexSessionChannel
Có Có Có Không IDuplexSessionChannel
Có Có Có Không IRequestSessionChannel
Có Không Không Không IOutputChannel
Có Không Không Không IDuplexChannel
Có Không Không Không IDuplexSessionChannel
Có Không Không Không IRequestChannel
Có Không Có Không IOutputSessionChannel
Có Không Có Không IDuplexSessionChannel
Có Không Có Không IRequestSessionChannel
Có Không Không Không IRequestChannel
Có Không Không Không IDuplexChannel
Có Không Không Không IDuplexSessionChannel
Không Có Có Không IRequestSessionChannel
Không Có Có Không IDuplexSessionChannel
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
con 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.
CH 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à
HTTPS 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 th c v n chuy n.
M i ràng bu c s d ng giao th c v n chuy n và ph ng pháp mã hóa khác nhau.
Tên Giao th c v n
chuy n
Mã hoá T ng thích
BasicHttpBinding Http/Https V n b n ,MTOM Có
NetTcpBinding TCP Nh phân Không
NetNamedPipeBinding IPC Nh phân Không
WSHttpBinding Htttp/Https V n b n ,MTOM Có
NetMsmqBinding MSMQ Nh phân Không
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 ti n ích và tính n ng hi n đ i c a giao th c WS-*.
N u máy khách s d ng WCF (WCF client) và yêu c u giao ti p không c n k t n i và không tr c tuy n, s d ng ràng bu c MSMQ.
N u máy khách yêu c u giao ti p có k t n i, ch n ràng bu c TCP (TCP Biding) là thích h p nh t.
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.
Hì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).
Có 2 cách đ t o ra ràng bu c tùy ch nh : • T o b ng l p trình.
• T o b ng c u hình.
5.4.1 T o ràng bu c tùy ch nh b ng l p trình
WCF đã cung c p cho ng i l p trình m t l p đ t o ràng bu c tùy ch nh, đó là l p CustomBinding đ c ch a trong không gian tên System.ServiceModel .Channels.
L p này có ch a các thành ph n c a ràng bu c đ ng i l p trình thêm vào, và cho phép ng i l p trình t o ra ràng bu c m i d a trên các thành ph n ràng bu c đã có s n.
Ví 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. Ví d : <?xml version=”1.0” encoding=”utf-8 ” ?> <configuration> <system.serviceModel> <bindings> <customBinding>
<binding name = “CustomBinding”> <binaryMessageEncoding /> <udpTransport /> </binding> </customBinding> </bindings> </system.serviceModel> </configuration> 5.4.3 Ràng bu c do ng i dùng đ nh ngh a (User-Defined Binding) c t o ra b ng cách k th a t l p Binding. i m khác bi t chính gi a ràng bu c tùy ch nh và ràng bu c do ng i dùng đnh ngh a là: Ràng bu c do ng i dùng đ nh ngh a s d ng m t đ i t ng c th c a l p trong t t c các b c ta ràng bu c. Ph ng pháp này t o thu n l i cho vi c tái s d ng l i ràng bu c.
Có th t o ràng bu c do ng i dùng đnh ngh a b ng ph ng pháp c u hình v i ph n m r ng ràng bu c đ c th c hi n b ng cách t o m t l p k th a t l p BindingElementExtensionElement đ c ch a trong không gian tên System.ServiceModel.Configuration.
5.5 Các thành ph n c a ràng bu c (Binding Elements)
5.5.1 V n chuy n (Transport)
Sau đây là danh sách các kênh v n chuy n (Transport Channels) cùng v i các l p ràng bu c (Binding Class), các m r ng ràng bu c (Binding Extension), thành ph n c u hình XML (XML Configuration Element).
Transport
Channels Binding Class Binding Extension
Configuration Element
TCP Transport
Channel
TcpTransportBindingElement TcpTransportElement <tcpTransport>
Named Pipe Transport
Channel
NamedPipeBindingElement NamedPipeTransportElement <namedPipeTransp ort>
HTTP Transport
Channel
HttpBindingElement HttpTransportElement <httpTransport>
HTTPS Transport
Channel
HttpBindingElement HttpTransportElement <httpTransport>
MSMQ Transport
Channel
MSMQTransportBindingEle
ment MSMQTransportElement <msmqTransport> UDP
Transport Channel
5.5.2 B mã hóa (Encoder)
Sau đây là danh sách các b mã hóa đ c dùng trong WCF.
B n tin mã hoá v n b n B n tin SOAP h tr các mã hoá v n b n
Binding Class TextMessageEncodingBindingElement Binding Extension TextMessageEncodingElement
Configuration Element <text MessageEncoding>
Mã hoá b n tin nh phân B n tin SOAP h tr các mã hoá nh phân
Binding Class BinaryMessageEncodingBindingElement Binding Extension BinaryMessageEncodingElement
Configuration Element <binaryMessageEncoding>
Mã hoá b n tin MTOM B n tin SOAP h tr các mã hoá MTOM
Binding Class MTOMMessageEncodingBindingElement Binding Extension MTOMMessageEncodingElement
Configuration Element <mtomMessageEncoding>
5.5.3 B o m t (security)
Sau đây là danh sách các giao th c b o m t đ c dùng trong WCF.
B o m t không đ i x ng Các kênh b o m t s d ng b o m t không đ i x ng
Binding Class AsymmetricSercurityBindingElement Binding Extension SercurityElement
Configuration Element <sercurity>
B o m t đ i x ng Các kênh b o m t s d ng b o m t đ i x ng
Binding Class SymmetricSercurityBindingElement Binding Extension SercurityElement
Configuration Element <sercurity>
B o m t giao th c v n chuy n H tr các ch đ h n h p
Binding Class TransportSercurityBindingElement Binding Extension SercurityElement
Configuration Element <sercurity>
5.6 Khái ni m đ a ch trong WCF
Trong WCF m i d ch v (service) đ u đ c gán v i m t đa ch xác đnh. a ch xác đnh hai y u t quan tr ng : V trí c a d ch v (service) và giao th c v n chuy n đ c s d ng đ t ng tác v i d ch v . Ph n v trí c a đa ch cho bi t tên máy tính cung c p d ch v , trang web, thông tin v c ng (port), ng (pipe), hàng đ i, đ ng d n c th ho c URL (Universal Resource Identifier).
WCF có m t s ki u đnh d ng đa ch sau : • HTTP/HTTPS • TCP • IPC • Peer network • MSMQ • Service bus 5.7 Các ki u đ a ch 5.7.1 a ch đi m cu i (Endpoint Address)
Quy đnh đa ch c a m t đi m cu i d ch v c th . Máy khách có th truy c p d ch v thông qua đ a ch đi m cu i, t đó máy khách có th giao ti p v i
máy ch và m i ho t đ ng giao ti p t máy khách đ n máy ch đ u ph i thông qua đa ch đi m cu i[5].
Ví d : http://localhost:8745/TracNghiemOnline
5.7.2 a ch c s (Base Address)
a ch luôn có d ng :
[base address]/[optional URI] Trong đó [base address] có d ng:
[transport]://[machine or domain][:optional port] [transport] : Giao th c v n chuy n. Ví d : http.
[machine or domain] : Tên máy ch ho c tên mi n. [:optional port]: C ng nh n k t n i t máy khách.
Ví d : http://localhost:8745/MyService
Dùng giao th c http giao ti p v i máy ch là localhost t i c ng (post) 8745 đ truy xu t MyService. Ngoài vi c xác đnh m t đa ch đ n nh t cho m t d ch v , đ a ch c s còn đ c dùng đ gán các đa ch t ng đ i cho t ng đi m cu i riêng l . Ví d : V i đ a ch c s http://localhost:8745/MyService chúng ta có 3 đi m cu i các đ a ch t ng đ i. http://localhost:8745/MyService/8755 http://localhost:8745/MyService/8756 http://localhost:8745/MyService/8757
5.7.3 a ch MEX (MEX Address)
MEX (Metadata Exchange (trao đ i siêu d li u)) là m t đa ch đi m cu i cho phép máy khách thu th p các thông tin c a d ch v d i d ng siêu d li u.
Ví d : http://localhost:8745/TracNghiemOnline/mex
5.8 Các đ nh d ng đ a ch
a ch đi m cu i đ c đnh d ng khi ta l a ch n giao th c truy n thông, xác đ nh giao th c và cách th c s d ng. i m c n l u ý đây là các l p trình viên có th ch n đa ch và cách nó đ c phân ph i. c bi t v i b t kì đnh d ng nào, máy khách ph i có kh n ng l y đ c đa ch d ch v và s d ng d ch v [6].
C n l u ý 2 đi m khi phát tri n m t d ch v :
• Môi tr ng ch a d ch v : Quy t đ nh cách th c đnh d ng c a đa ch . • N i đa ch đ c ch a : Tùy theo yêu c u s d ng, có th tùy ch n n i l u
đa ch sao cho thích h p.
Ph n l n các đnh d ng đa ch ch a các ph n sau:
• Ph ng th c (scheme) : Xác đnh giao th c k t n i đ n máy ch . • Tên mi n (domain) : Xác đnh tên máy ch .
• C ng (port) : C ng nh n k t n i t máy khách (client), m c đnh là 80. • ng d n (path) : Xác đnh n i ch a d ch v .
5.8.1 a ch TCP(TCP Address)
S d ng net.tcp làm giao th c v n chuy n, th ng có m t s c ng c th . Ví d :
net.tcp://localhost:8002/MyService.
N u s c ng không đ c quy đnh thì đa ch TCP s m c đ nh s c ng là 808 Ví d :
net.tcp://localhost/MyService.
Hai đa ch TCP cùng m t host có th cùng chia s m t c ng. Ví d :
net.tcp://localhost:8002/MyService. net.tcp://localhost:8002/MyOtherService.
5.8.2 a ch HTTP (HTTP Address)
S d ng giao th c http làm giao th c v n chuy n, đnh d ng c a đa ch HTTP nh sau: http://domainname|hostname [:8080]/path. Ví d : http://localhost:8745/TracNghiemOnline N u s c ng không đ c quy đnh thì đa ch HTTP s m c đ nh s c ng là 80. Ví d : http://localhost/TracNghiemOnline
C ng gi ng nh đa ch TCP, hai đa ch HTTP cùng m t host có th cùng chia s m t c ng, ho c là trên cùng m t máy.
5.8.3 a ch HTTPS (HTTPS Address)
S d ng giao th c https làm giao th c v n chuy n.
a ch HTTPS khác đa ch HTTP kh n ng v n chuy n an toàn h n nh s d ng SSL.
N u s c ng không đ c quy đnh thì đa ch HTTP s m c đ nh s c ng là 443. Ví d : https://localhost/TracNghiemOnline
s d ng đ c HTTPS c n ph i có m t ch ng nh n t m t nhà ch ng nh n h p l nh Verisign hay Thawte.
5.8.4 a ch MSMQ (MSMQ Address)
S d ng giao th c net.msmq làm giao th c v n chuy n đ s d ng hàng đ i thông đi p c a Microsoft (Microsoft Message Queue).
nh d ng c a đa ch MSMQ.
net.msmq://hostname / [private] /queue-name [7]
Ví d :
net.msmq://localhost/msmqshare/ThiTracNghiem Các thành ph n quan tr ng c a đa ch MSMQ :
• Scheme: Quy đnh giao th c MSMQ.
• HostName: Là tên đ y đ c a máy th c hi n MSMQ (localhost n u MSMQ đ c cài máy c c b ).
• [private]: Là ph n tu ch n, khi s d ng nó ch a đ a ch t i m t hàng đ i đích là m t hàng đ i riêng. Giá tr này không c n xác đnh khi truy nh p