Infoway
Solutions CHƯƠNG VIII: GIAO TIẾP MNG TRONG SILVERLIGHT
CHƯƠNG VIII:
GIAO TIP MNG TRONG SILVERLIGHT
1 Giao tiếp HTTP và bo mt trong Silverlight
Silverlight cho phép HTTP / HTTPS giao tiếp vi các dch v lưu tr trên máy ch web
vi c hai trường hp bên trong và bên ngoài tên min ca bạn được lưu trữ trên cơ sở
ng dng Silverlight. Ch đề này tho lun v mt s kch bn HTTP giao tiếp và làm
thế nào để bn có th kích hot các kch bn.
1.1 Mặc định h tr giao thc HTTP
Có mt s kh ng cơ bn cho tt c nhng kiu giao tiếp HTTP/HTTPS ca
Silverlight
Trong cùng tên min thì mi triu gọi luôn được chp nhn
Khi các Web service được thiếp lập đúng trên máy chủ lưu tr thì vic truy cp
t tên min khác tới là được h tr.
Tt c các giao tiếp không đồng b
Ch h tr phương thức GET và POST
Hu hết các triu gi tu chun và các tùy chỉnh Header đã được h tr.
(Header phải được cho phép trong file cross-domain policy cho các triu gi ti
t domain khác.)
Ch có mã trng thái 200-“OK” và 400-“Không tìm thy”
1.2 Kch bn giao tiếp HTTP
Silverlight hỗ trợ một số kịch bản có sử dụng giao thức HTTP / HTTPS. Mặc dù có
nhiều cách thức và công nghệ có thể được sử dụng để thực hiện các triệu gọi giao thức
HTTP, bảng sau mô tả phương pháp tiếp cận đối với một số tình huống giao tiếp có th
xảy ra. Những phương pháp tiếp cận sẽ được thảo luận chi tiết hơn sau này trong tài
liu này
Kịch bản Phương pháp tiếp cận nên dùng
Download
Upload tài nguyên
trong cùng một
domain
Sử dụng lớp WebClient để thao tác
Triu gọi Web Sử dụng lớp WebClient hoặc những lớp
Infoway
Solutions CHƯƠNG VIII: GIAO TIẾP MNG TRONG SILVERLIGHT
service trên giao
thức HTTP trong
cùng một domain
HttpWebRequest/HttpWebResponse để thao tác
Triu gi SOAP,
WCF, hoc
ASP.NET AJAX
Web services được
lưu tr trong cùng
mt domain.
Triu gọi thông qua proxy cho Web service. Nếu bạn
không muốn xử dụng proxy thì sử dụng các lớp
Gọi Web service
trên tên miền khác.
Chắc chắn là file cross-domain policy nằm ở thư mục gốc
của domain(mặc định là wwwroot). Sử dụng proxy, lớp
WebClient hoặc các lớp
HttpWebRequest/HttpWebResponse.
Thiết lập header
cho triệu gọi cross-
domain
- Đảm bảo là header cho phép thông qua tập tin cross-
domain policy
- Đối với các yêu cầu trên các dữ liệu upload, sử dụng lớp
WebClient. Thiết lập các tập hợp các header muốn có.
- Đối với các kịch bản sử dụng lớp HttpWebRequest. Thiết
lập thuộc tính của nó với tập hợp những header mong
muốn.
1.3 Giao tiếp trong cùng mt domain
Mặc định Silverlight h tr triu goi ti Web service trong cùng mt domain. Trong
cùng domain có tc nhng triu gi phi trong cùng mt sub domain, giao thc, và
cổng. Điều này là vì lý do bo mt, để ngăn chặn s truy cp trái phép ti Web service.
Minh ho v triu gọi Web service sau đây về s cho phép và không cho phép s truy
cp ca ng dng Silverlight khi s dng nhng thiết lp mặc định:
Infoway
Solutions CHƯƠNG VIII: GIAO TIẾP MNG TRONG SILVERLIGHT
1.4 Giao tiếp Cross-domain
Bn có th cho phép ng dng Silverlight domain khác triu gi Web service ca bn
thông qua vic thiết lp chính xác tp tin cross-domain policy đt ti gc ca domain
(mặc định là thư mục wwwroot).Silverlight h tr 2 loi ca tp tin cross-domain policy;
- Silverlight Cross-Domain Policy (clientaccesspolicy.xml)
- Mt nhóm ca Flash Cross-Domain Policy(crossdomain.xml)
Ví d sau đây minh hoạ v giao tiếp cross-domain thông qua vic s dng tp tin
Cross-Domain Policy.
Nói chung, khi mt ng dng Silverlight phát hin rng triu gi ca nó là cross-domain,
trước tiên nó s tìm tp tin Silverlight Cross-Domain (clientaccesspolicy.xml) ti v t
gc ca Web service. Nếu triu gi này tr v mã li 404-Không tìm thy hoc các li
khác, ng dụng sau đó sẽ tìm tp tin Flash Cross-Domain (crossdomain.xml) ti v trí
gc domain.
Infoway
Solutions CHƯƠNG VIII: GIAO TIẾP MNG TRONG SILVERLIGHT
Bng sau lit kê các triu gọi và URIs nơi Silverlight dựa trên ng dng s tìm tp tin
cross-domain
Request URI
Cross
-
Domain Policy File Loc
ation
http://contoso.com/services/data http://contoso.com/clientaccesspolicy.xml
http://sales.contoso.com/services/data
http://sales.contoso.com/clientaccesspolicy.xml
http://contoso.com:8080/services/data
http://contoso.com:8080/clientaccesspolicy.com
Không th dùng GET request bao gm header khi s dng cross-domain. Ch s dng
được request header với POST request khi nó được ch ra tp tin cross-domain
policy.
Lưu ý bo mật Web service được dùng cho Silverlight vi triu gi cross-domain
nghiên cu klưỡng về bảo mật trước khi bạn cho phép các kết nối từ Silverlight truy
cập vào Web service s dụng tập tin cross-domain. Bất cứ khi nào bạn đặt tệp tin
cross-domain policy nơi mà bạn cấu hình máy chlưu trữ web service thì nên thiết
lập hiệu hoá bộ nhớ đệm của trình duyệt. Điều này cho phép bạn dễ dàng cập nhật
các tập tin hoặc hạn chế quyền truy cập vào các Web service của bạn nếu cần thiết.
Ngoài ra, tất cả c request của Silverlight được gửi với c tập tin cookie và xác thực.
Điều này nghĩa là nếu bạn Web service cho phép người sử dụng truy cập thông
tin nhân, bạn nên lưu trữ với tên miền khác nhau hơn trên Web service tiếp
xúc với bên th ba. dụ, bạn mt kho lưu tr trên máy ch web tại
http://contoso.com. Trang web của bạn cho phép khách hàng lưu trữ thông tin thanh
toán bao gồm số thẻ tín dụng. Bạn không nên làm một Web service để trả lại sản phẩm
tồn kho của bên khách hàng thba sdụng Silverlight tại cùng một tên miền. Bởi vì
các tập tin cookie và xác thực được gửi đi với mỗi request, nếu bạn lưu trữ các Web
service trên cùng một tên miền, thì các n thba sử dụng dịch vụ của bạn thể truy
cập vào dliệu thanh toán nhân của khách hang của bạn. Trong dnày, công
khai giao tiếp của Web service của bạn thđược lưu trữ trên máy ch an toàn tại
http://services.contoso.com, bởi vì đây là mt tên miền khác. Bạn phải cẩn thận xem xét
những đối tượng tiếp xúc với Web service, những Web service khác đang nằm tại
domain đó. Ngoài ra, bạn nên luôn luôn gitập tin cross-domain policy càng hn chế
càng tốt.
Ví dụ về tập tin Cross-Domain Policy
Tập tin cross-domain policy của Silverlight là một tập tin XML có định dạng đơn giản. Ví
d dưới đây chỉ ra tập tin cross-domain policy của Silverlight cho phép requests ti
Web service liên kết tới đường dẫn services” của domain. Tập tin cross-domain policy
cũng chỉ ra loại nội dung header là SOAPAction.
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
<cross-domain-access>
Infoway
Solutions CHƯƠNG VIII: GIAO TIẾP MNG TRONG SILVERLIGHT
<policy >
<allow-from http-request-headers="SOAPAction">
<domain uri="*"/>
</allow-from>
<grant-to>
<resource path="/services/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
Tp tin Flash Cross-Domain Policy
Silverlight hỗ trợ Flash Cross-Domain (crossdomain.xml). Silverlight hỗ trợ thẻ <allow-
access-from> với các thuộc tính sau:
+ domain với thuộc tính giá trị "*", có nghĩa là tất cả các domain đều có thể triệu
gọi.
+ secure chấp nhận giá trị là true hoặc falsesử dụng tương ứng HTTPS hay
HTTP.
+ headers nhận các giá trị header.
Sau đây là ví dụ của một tập tin Flash crossdomain.xml với Silverlight.
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM
"http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*"/ headers="SOAPAction"
secure="true">
</cross-domain-policy>
1.5 Thiết lp triu gi HTTP
Tùy thuc vào kch bn, bn th thc hin c cuc gi HTTP s dng lp clien-
side proxy hoc xây dng triu gi ca chính bn. Dưới đây là những phn mô t các
phương pháp khác nhau đ thc hin các cuc gi trên mng bng cách s dng
HTTP
S dng lp Proxy
Bn th to ra mt lp proxy t Web service metadata s dụng proxy đ kết
ni ti Web service t ng dng Silverlight ca bn. Silverlight s dng Windows
Communication Foundation(WCF) để to ra proxy và gi message SOAP 1.1 thông
qua giao thc HTTP. Nếu bn s dng Visual Studio, bn chut phi vào d án
Silverlight chn Add Service Reference s t động to proxy cho bn. Proxy s
to message và x lý giao tiếp mng cho bn.