Mô hình tru yn thông mt ch iu

Một phần của tài liệu Tìm hiểu windows communication foundation (Trang 33)

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

Một phần của tài liệu Tìm hiểu windows communication foundation (Trang 33)