Danh mục

Hướng dẫn thực hành WCF Part 1

Số trang: 21      Loại file: pdf      Dung lượng: 1.64 MB      Lượt xem: 5      Lượt tải: 0    
tailieu_vip

Hỗ trợ phí lưu trữ khi tải xuống: 14,000 VND Tải xuống file đầy đủ (21 trang) 0
Xem trước 3 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Trong phần 1: chúng tôi sẽ chưa đi sâu về bảo mật, khả năng chịu tải, cũng như các chuẩn truyền thông đặc biệt như tcpBinding, MSMQ, chi tiết lập trình WCF với WF….. Trong phần 2, chúng tôi sẽ đề cập sâu hơn.Bước 1: Tạo Console ApplicationBước 2: Thêm reference tới Service.Model.Bước 3: Khai báo using System.ServiceModel;Bước 4: Tạo Service ContractBước 5: Định nghĩa Operation ContractBước 6: Viết hàm thực hiện operation contractBước 7: Viết code để định nghĩa cấu hình và khởi tạo servicehostBước 8: Chạy thử...
Nội dung trích xuất từ tài liệu:
Hướng dẫn thực hành WCF Part 1Hướng dẫn thực hành WCF Part 11 Lưu ýTrong phần 1: chúng tôi sẽ chưa đi sâu về bảo mật, khả năng chịu tải, cũng như các chuẩn truyền thông đặc biệt nhưtcpBinding, MSMQ, chi tiết lập trình WCF với WF….. Trong phần 2, chúng tôi sẽ đề cập sâu hơn.2 Tạo project WCF Service LibraryFigure 1: Chọn WCF Service Library project templateFigure 2: Chạy thử phương thức Add của MathServerFigure 3: Trong một ứng dụng, có thể thêm nhiều WCF Service3 Tạo ứng dụng WCF Console không dùng Project Template 3.1 Không dùng định nghĩa dịch vụ WCF trong app.configXem ví dụ: 02_ConsoleWCFBước 1: Tạo Console ApplicationBước 2: Thêm reference tới Service.ModelFigure 4: Add Reference System.ServiceModelBước 3: Khai báo using System.ServiceModel;Bước 4: Tạo Service ContractBước 5: Định nghĩa Operation ContractBước 6: Viết hàm thực hiện operation contractBước 7: Viết code để định nghĩa cấu hình và khởi tạo servicehostBước 8: Chạy thử 3.2 Khai báo cấu hình dịch vụ WCF bằng file app.configBước 9: Thay bằng định nghĩa cấu hình trong code bằng khai báo trong file XML app.config Câu hỏi: Trong một ứng dụng có thể có khai báo nhiều thẻ được không?Trong một thẻ có thẻ khai báo nhiều thẻ được không?Thẻ khi nào cần và khi nào không cần? 3.3 Thử kết nối bằng WCF Test ClientChạy WCF Test Client ở thư mục. Đường dẫn file này là:“C:Program FilesMicrosoft Visual Studio 9.0Common7IDEWcfTestClient.exeFigure 5: Lỗi phát sinh vì không lấy được Metadata từ dịch vụ.Câu hỏi: Tại sao bị lỗi? Giải thích nguyên nhân4 Thêm MEX endpoint để cho client tìm hiểu dịch vụXem ví dụ 02_ConsoleWCFWithConfig 4.1 Thêm MEX endpoint bằng codeBước 1: Thêm dòng khai báo using System.ServiceModel.Description;Bước 2: Thêm đoạn lệnh sau đây vào App.csServiceMetadataBehavior behavior = new ServiceMetadataBehavior();behavior.HttpGetEnabled = true;serviceHost.Description.Behaviors.Add(behavior);serviceHost.AddServiceEndpoint(typeof(IMetadataExchange),MetadataExchangeBindings.CreateMexHttpBinding(), mex); 4.2 Thêm MEX endpoint bằng khai báo trong app.configThay nội dung app.config bằng nội dung của app-mex.config Câu hỏi: giải thích ý nghĩa của:  behaviorConfiguration   5 Tạo client để sử dụng dịch vụ WCFXem ví dụ 02_WPFClientBước 1: Tạo Windows Form như hình dướiBước 2: Add Service ReferenceBước 3: Viết đoạn code để gọi dịch vụ thông qua lớp proxy được tự tạo ra sau bước Add Service Referenceprivate void btnAdd_Click(object sender, EventArgs e){ try //Thói quen tốt, nên dùng try catch trước những lời gọi dịch vụ để bắt lỗi { MathService.MathClient mathClient = new MathService.MathClient(); int result = mathClient.Add(int.Parse(txtA.Text), int.Parse(txtB.Text)); txtResult.Text = result.ToString(); } catch (Exception exception) { MessageBox.Show(exception.Message, Exception, MessageBoxButtons.OK,MessageBoxIcon.Warning); }}6 Gọi một hàm một chiều (one way operation)Xem ví dụ 03_OneWay Oneway.slnBước 1: Chạy server 03_OneWayOneWay.slnBước 2: Chạy client 03_OneWayClientTest.slnBước 3: Liên tục ấn vài lần nút “Call OneWay operation”Bước 4: So sánh với liên tục ấn vài lần nút “Call Non OneWay operation” rồi cho nhận xét.Câu hỏi: Dùng dịch vụ một chiều khi nào?Trả lời: Dùng dịch vụ một chiều khi client gọi một hàm không giá trị trả về (void) của service. Ngay sau lời gọi, client cóthể tiếp tục chạy lệnh tiếp ngay sau khi lời gọi dịch vụ được gửi đi. Có ý nghĩa khi hàm dịch vụ ở máy chủ chạy chậm.7 Gọi hàm dị bộ (call asynchronous operation)Xem ví dụ: 04_AsynchronousAsynchronousCall.slnBước 1: Tạo AsyncMathServer với các hàm sau:public class MathServer : IMathServer{ public int AddSlow(int A, int B) { Thread.Sleep(4000); //Làm cho hàm trễ để giả lập một tác vụ chạy tốn thới gian return A + B; } public int AddFast(int A, int B) { //Thread.Sleep(4000); return A + B; }}Bước 2: Tạo Winform client , rồi Add Service Reference đến AsyncMathServer.Figure 6 : Ấn nút Advanced... để sửa đổi thông số của tham chiếu đến dịch vụFigure 7 : Chọn check box Generate asynchronous operationsBước 3: Định nghĩa event handler cho sự kiện hàm được gọi dị bộ (Asynchronous call) hoàn tất công việc. Lưu ý ấn phímTab để tự động điền mã.Bước 4: chạy thử chương trình.  Khi ấn nút Add Sync, nếu trong hàm tính toán ở phía dịch vụ chạy (ở đây là rất lâu) thì người phải chờ cho đến khi hàm tính toán hoàn tất.  Khi ấn nút Add Async, trong lúc hàm tính toán ở phía dịch vụ chạy, người dùng vẫn có thể tương tác với control trên giao diện, ví dụ: kéo thanh trượt ...

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