Danh mục

Các giải pháp lập trình CSharp- P62

Số trang: 10      Loại file: pdf      Dung lượng: 2.63 MB      Lượt xem: 4      Lượt tải: 0    
thaipvcb

Phí lưu trữ: miễn phí Tải xuống file đầy đủ (10 trang) 0
Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Các giải pháp lập trình CSharp- P62: Các giải pháp lập trình C# khảo sát chiều rộng của thư viện lớp .NET Framework và cung cấp giải pháp cụ thể cho các vấn đềthường gặp. Mỗi giải pháp được trình bày theo dạng “vấn đề/giải pháp” một cách ngắn gọn và kèm theo là các ví dụ mẫu.
Nội dung trích xuất từ tài liệu:
Các giải pháp lập trình CSharp- P62 501 Chương 12: Dịch vụ Web XML và Remoting private void TaskComplete(object sender, RemoteObject.TaskCompleteEventArgs e) { MessageBox.Show(Event received: + e.Result); }}Để có thể làm việc, bạn phải chắc rằng client đang sử dụng các kênh hai chiều. Do đó, thẻ trong file cấu hình phải trông giống như sau:Và không được giống như các ví dụ dưới đây:Ngoài ra, bạn phải kích hoạt việc hỗ trợ “full serialization”. Nếu không, server sẽ không đượcphép nhận ủy nhiệm cho phương thức Listener.TaskCompleted, và sẽ không thể kết nối đếnphương thức thụ lý sự kiện ở xa. Để kích hoạt việc hỗ trợ “full serialization” bên server, bạncần thay đổi file cấu hình của host như sau: Để kích hoạt việc hỗ trợ “full serialization” bên client, bạn cần thay đổi file cấu hình củaclient như sau: 502 Chương 12: Dịch vụ Web XML và Remoting 11. Kiểm soát thời gian sống của một đối tượng ở xa Bạn muốn cấu hình thời gian sống của một đối tượng đơn-nhất hay được-client- kích-hoạt khi nó không còn được sử dụng. Chỉ định các thiết lập mặc định về thời gian sống trong file cấu hình của host; chép đè phương thức InitializeLifetimeService trong lớp ở xa; hoặc hiện thực một cơ chế kiểm soát thời gian sống bên client.Nếu một đối tượng sử dụng chế độ kích hoạt gọi một lần (single-call activation), nó sẽ tựđộng bị hủy vào cuối mỗi lời gọi phương thức. Điều này khác với các đối tượng được-client-kích-hoạt (client-activated) và đơn-nhất (singleton), các đối tượng này có thời gian sống lâuhơn vì tuân theo “lifetime lease” (tạm dịch là “hợp đồng cho thuê thời gian sống”). Với cácthiết lập mặc định, một đối tượng ở xa sẽ tự động bị hủy nếu nó không hoạt động trong haiphút, miễn là nó đã tồn tại ít nhất năm phút.Host, đối tượng ở xa, và client đều có thể thay đổi các thiết lập về thời gian sống. • Host có thể chỉ định các thiết lập mặc định về thời gian sống trong file cấu hình. Các thiết lập này sẽ áp dụng cho tất cả các đối tượng ở xa mà nó quản lý. • Lớp ở xa có thể chép đè phương thức GetLifetimeService để điều chỉnh các thiết lập lease ban đầu bằng đối tượng ILease. 503 Chương 12: Dịch vụ Web XML và Remoting • Client có thể gọi phương thức MarshalByRefObject.GetLifetimeService với một đối tượng ở xa cụ thể để thu lấy một thể hiện ILease. Kế tiếp, client có thể gọi phương thức ILease.Renew để chỉ định lượng thời gian tối thiểu mà đối tượng sẽ sống.Ví dụ dưới đây sử dụng cách tiếp cận thứ nhất (dùng thẻ trong file cấu hình củahost). Các thiết lập lease áp dụng cho tất cả các đối tượng ở xa do host tạo ra. Sử dụng M đểchỉ phút hay S để chỉ giây. Đối tượng ở xa có thời gian sống ban đầu là 10 phút. Khi clienttruy xuất đối tượng, thời gian sống của nó tự động được làm mới ít nhất ba phút. Một cách tiếp cận khác là chép đè phương thức InitializeLifetimeService để một đối tượngở xa tự kiểm soát thời gian sống của nó. Bạn có thể thêm đoạn mã dưới đây vào lớp ở xa đểnó có thời gian sống mặc định là 10 phút và thời gian làm mới là 5 phút:public override object InitializeLifetimeService() { ILease lease = MyBase.InitializeLifetimeService(); // Lease chỉ có thể được cấu hình nếu nó đang ở trạng thái ban đầu. if (lease.CurrentState == LeaseState.Initial) { lease.InitialLeaseTime = TimeSpan.FromMinutes(10); lease.RenewOnCallTime = TimeSpan.FromMinutes(5); } 504 Chương 12: Dịch vụ Web XML và Remoting return lease;}Nếu muốn đối tượng có thời gian sống vô hạn, bạn chỉ cần trả về một tham chiếu null thay vìlà đối tượng ILease. Trường hợp thông thường nhất là bạn muốn tạo một đối tượng đơn-nhấtchạy độc lập (và lâu dài) ngay cả khi client không sử dụng nó.12. Kiểm soát phiên bản của các đối tượng ở xa Bạn muốn tạo một host có thể quản lý nhiều phiên bản của một đối tượng. Cài đặt tất cả các phiên bản của đối tượng vào GAC, và đăng ký mỗi phiên bản tại một endpoint URI khác biệt..NET Remoting không có sự hỗ trợ nội tại nào cho việc đánh phiên bản. Khi một client tạomột đối tượng ở xa, host tự động sử dụng phiên bản trong thư mục cục bộ hoặc, trong trườnghợp là một assembly dùng chung, phiên bản mới nhất trong GAC. Để hỗ trợ nhiều phiên bản,bạn có ba lựa chọn: • Tạo các ứng dụng host riêng biệt. Mỗi host sẽ có một phiên bản khác nhau của assembly “đối tượng ở xa” và sẽ đăng ký phiên bản của nó với một URI khác nhau. Cách này buộc bạn phải chạy nhiều ứng dụng host cùng một lúc và thiết thực nhất khi bạn đang sử dụng IIS (được mô tả trong mục 12.9). • Tạo một assembly “đối tượng ở xa” hoàn toàn mới (thay vì thay đổi phiên bản). Theo đó, bạn có thể đăng ký các lớp trong hai assembly tại các URI khác nhau, sử dụng cùng host. • Cài đặt tất cả các phiên bản của assembly “đối tượng ở xa” vào GAC. Theo đó, bạn có thể tạo một host ánh xạ các URI khác nhau đến các phiên bản cụ thể của assembly “đối tượng ở xa”.Tùy chọn cuối cùng là linh hoạt nhất trong trường hợp bạn cần hỗ trợ nhi ...

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