Danh mục

Dịch vụ Web XML và Remoting Microsoft .NET Framework phần 2

Số trang: 7      Loại file: pdf      Dung lượng: 193.68 KB      Lượt xem: 11      Lượt tải: 0    
Hoai.2512

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Vì bản chất phi trạng thái (stateless) của giao thức HTTP, nên một phương thức web chỉ có thể góp phần làm gốc của một phiên giao dịch; nghĩa là bạn không thể đưa nhiều hơn một phương thức web vào cùng một phiên giao dịch.
Nội dung trích xuất từ tài liệu:
Dịch vụ Web XML và Remoting Microsoft .NET Framework phần 2Vì bản chất phi trạng thái (stateless) của giao thức HTTP, nên một phương thức web chỉcó thể góp phần làm gốc của một phiên giao dịch; nghĩa là bạn không thể đưa nhiều hơnmột phương thức web vào cùng một phiên giao dịch. Mặc dù thuộc tínhTransactionOption chấp nhận tất cả các giá trị TransactionOption chuẩn, nhưng các giátrị này không mang ý nghĩa như mong đợi. Ví dụ, Disabled, NotSupported, và Supportedđều có cùng tác dụng là vô hiệu việc hỗ trợ giao dịch. Tương tự, cả Required vàRequiresNew đều kích hoạt việc hỗ trợ giao dịch và khởi chạy một phiên giao dịch mới.Bạn nên sử dụng RequiresNew trong các phương thức web vì tên của nó tương xứng vớihành vi thật sự (!). Các giao dịch COM+ làm việc một cách trong suốt với hầu hết các nguồn dữ liệu vì chúng cung cấp các bộ quản lý tài nguyên tương thích. Nhưng luôn nhớ rằng, nếu bạn tương tác với một tài nguyên không hỗ trợ giao dịch, mã lệnh sẽ không được roll-back. Một số hoạt động không phải là giao dịch: ghi file, đặt thông tin vào trạng thái phiên làm việc, và truy xuất một thiết bị phần cứng (như máy in). Mặt khác, các thao tác dữ liệu với hầu hết các hệ cơ sở dữ liệu Enterprise (bao gồm Microsoft SQL Server và Oracle) đều là tương thích COM+. 1.1 Thiết lập thông tin xác thực cho dịch vụ Web XML Bạn muốn gửi các thông tin đăng nhập từ client của dịch vụ Web XML đến IIS authentication. Sử dụng thuộc tính Credentials của lớp proxy. Bạn có thể tạo một đối tượng NetworkCredential mới chứa username và password; hoặc sử dụng CredentialCache để lấy các thông tin xác thực của người dùng hiện hành.Cũng giống như trang web, dịch vụ Web XML có thể được sử dụng cùng với IISauthentication. Những gì bạn cần làm là đặt dịch vụ Web XML vào một thư mục ảo hạnchế việc truy xuất nặc danh. Tuy nhiên, nếu người dùng có thể cung cấp các thông tin ánhxạ đến một tài khoản người dùng hợp lệ, người dùng này sẽ được xác thực và bạn có thểlấy các thông tin xác thực này thông qua đối tượng WebService.User.Khác với trang web, dịch vụ Web XML không có sẵn phương thức nào để thu lấy thôngtin xác thực từ client vì dịch vụ Web XML được thực thi bởi các ứng dụng khác, chứkhông phải bởi người dùng. Do đó, ứng dụng đang tương tác với dịch vụ Web XML sẽchịu trách nhiệm nhập bất kỳ thông tin xác thực cần thiết nào.Ví dụ sau mô phỏng một dịch vụ Web XML có thực hiện xác thực người dùng.GetIISUser trả về người dùng đã được IIS xác thực. Nếu truy xuất nặc danh được phépthì kết quả sẽ là một chuỗi rỗng. Nếu truy xuất nặc danh bị từ chối thì kết quả sẽ là mộtchuỗi có dạng [DomainName][UserName] hay [ComputerName][UserName].public class AuthenticationTest : System.Web.Services.WebService { // Lấy thông tin về người dùng đã được IIS xác thực. [WebMethod()] public string GetIISUser() { return User.Identity.Name; }}Bước cuối cùng là tạo một client có thể cung cấp các thông tin xác thực. Các thông tinnày được nhập thông qua thuộc tính Credentials của đối tượng proxy (thiết lập thuộc tínhnày tương tự như thiết lập thuộc tính WebRequest.Credentials khi lấy về một trangweb—tham khảo mục 11.3). Đoạn mã dưới đây trình bày cách truy xuất một dịch vụ WebXML sử dụng Basic authentication (xác thực cơ bản):// Tạo proxy.localhost.AuthenticationTest proxy = new localhost.AuthenticationTest();// Tạo thông tin xác thực.proxy.Credentials = new System.Net.NetworkCredential( myUserName, myPassword);Console.WriteLine(proxy.GetIISUser());Đoạn mã dưới đây trình bày cách truy xuất một dịch vụ Web XML sử dụng IntegratedWindows authentication (xác thực được tích hợp với Windows):// Tạo proxy.localhost.AuthenticationTest proxy = new localhost.AuthenticationTest();// Gán thông tin xác thực của người dùng hiện hành cho lớp proxy.proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;Console.WriteLine(proxy.GetIISUser()); 1.2 Gọi bất đồng bộ một phương thức web Bạn cần gọi một phương thức web trong một tiểu trình khác để chương trình của bạn có thể thực hiện các tác vụ khác trong khi chờ đáp ứng. Sử dụng các phương thức bất đồng bộ có sẵn trong lớp proxy. Các phương thức này có tên là BeginXXX và EndXXX với XXX là tên của phương thức đồng bộ gốc.Lớp proxy (được tạo tự động) có các tính năng cơ bản mà bạn cần để gọi bất kỳ phươngthức web nào một cách bất đồng bộ. Ví dụ, phương thức web dưới đây có chức năng tạmdừng một khoảng thời gian ngẫu nhiên từ 10 đến 19 giây:using System;using System.Web.Services;public class Wait : System.Web.Services.WebService { [WebMethod] public int Wait() { DateTime start = DateTime.Now; Random rand = new Random(); TimeSpan delay = new TimeSpan(0, 0, rand.Next(10, 20)); while (DateTime.Now < start.Add(delay)) {} return delay.Seconds ...

Tài liệu được xem nhiều: