Hiển thị các bài đăng có nhãn WCF. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn WCF. Hiển thị tất cả bài đăng

Chủ Nhật, 1 tháng 3, 2009

ASP.NET Ajax : Cách Gọi WCF Web Services

WCF (Windows Communication Framework) cung cấp dữ liệu một cách linh hoạt đến các ứng dụng Ajax. Hướng dẫn này cung cấp step-by-step xem cách WCF có thể được sử dụng với ASP.NET Ajax Library lấy dữ liệu từ services và gắn nó vào hệ thống điều khiển bằng cách sử dụng các DataView component và template. Từng bước được thực hiện bao gồm:
  • Tạo một WCF Services
  • Loading Scripts Bắt buộc
  • Gọi một WCF Services sử dụng DataView
Bước 1: Tạo một WCF Service

Để tạo một Ajax-enabled WCF Service, kích chuột phải vào một dự án ứng dụng web hay Website trong Visual Studio và chọn Add New Item. Chọn AJAX-enabled WCF Service mẫu như trong hình 1.


Hình 1. Thêm một Ajax-enabled WCF Service vào một Visual Studio ứng dụng web hay project Website.

Sau khi Ajax-enabled WCF Service được tạo ra một hoạt động có thể được thêm tùy chỉnh trả về dữ liệu đến các Ajax application. Các code sau đây cho thấy cách một danh sách các Customer objects có thể được trả lại từ một hoạt động service:

[ServiceContract(Namespace = "http://www.mycompany.com/MyAjaxService")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class MyAjaxService
{
        [OperationContract]
        public List GetCustomers(int numberToFetch)
        {
                using (NorthwindDataContext context = new NorthwindDataContext())
               {
                      return context.Customers.Take(numberToFetch).ToList();
               }
         }
}

Bước 2: Loading Scripts Bắt buộc

The ASP.NET AJAX Thư viện cung cấp một thành phần DataView có thể được sử dụng để lấy dữ liệu từ một dịch vụ WCF và gắn nó vào một bản mẫu. Để tải tập lệnh được yêu cầu của các thành phần DataView bộ nạp Script có thể được sử dụng:


Bước 3: Kêu gọi một WCF Service sử dụng DataView

Các thành phần DataView có thể được dùng để gọi một dịch vụ web với một số tiền tối thiểu của mã. Để tạo một DataView Sys.create.dataView dụ sử dụng và vượt qua các bản mẫu để ràng buộc vào cũng như các tham số xác định các dịch vụ WCF để gọi. URI dịch vụ và hoạt động để gọi có thể được xác định bằng cách sử dụng dataProvider và các thông số fetchOperation như được hiển thị tiếp theo:

Sys.require([Sys.components.dataView, Sys.scripts.WebServices], function() {
      Sys.create.dataView("#CustomerView",
     {
             dataProvider: "/Services/MyAjaxService.svc",
             fetchOperation: "GetCustomers",
             autoFetch: true,
             fetchParameters: {numberToFetch: '10'},
             itemRendered: CustomerRendered
      });

     function CustomerRendered(dataView, ctx) {
           Sys.bind(Sys.get("li", ctx), "innerHTML", ctx.dataItem, "ContactName");
     }
});

Mã này kêu gọi các hoạt động GetCustomers ngày MyAjaxService.svc và vượt qua giá trị là 10 cho tham số numberToFetch. Bằng cách đặt các dịch vụ bất động sản autoFetch đúng sẽ được gọi là tự động khi tải trang. Sau khi trở về dữ liệu từ các dịch vụ WCF chức năng CustomerRendered sẽ được gọi là mỗi dòng dữ liệu là bị ràng buộc vào một khuôn mẫu được đặt tên CustomerView. CustomerRendered liên kết với các tài sản contactname của mỗi dòng dữ liệu đến một phần tử
  • . Các CustomerView mẫu được hiển thị tiếp theo:

          
                 
  •        

    Các DataView component và các thông số của nó có liên quan cũng có thể được định nghĩa trực tiếp trên một mẫu như sau:

       
           
              
              
              
           
           
               
                     dataview:dataprovider="/Services/MyAjaxService.svc"
                     dataview:fetchParameters="{{ {numberToFetch: 10} }}"
                     dataview:fetchoperation="GetCustomers">
                   
                        
  • {{ContactName}}
  •                
              
         

    Mã này bắt đầu bằng cách xác định một "dataview" các yếu tố với giá trị là "javascript: Sys.UI.DataView". Một ví dụ của các thành phần DataView được tạo ra như là tải trang bằng cách gắn các không gian tên vừa được định nghĩa dataview cho mẫu bằng cách sử dụngsys:attach="dataview". Tham số được sử dụng bởi các thành phần DataView được định nghĩa trực tiếp trên mẫu của
    tố và tiền tố với "dataview" tiền tố không gian tên.

    Chúc bạn thành công.
    DangTrung.

    Thứ Năm, 21 tháng 2, 2008

    Ví Dụ Cơ Bản WCF trong VS 2008

    WCF là công nghệ nền tảng nhằm thống nhất nhiều mô hình lập trình giao tiếp được hỗ trợ trong .NET 2.0 thành một mô hình duy nhất. Vào tháng 11 năm 2005, .NET 2.0 được Microsoft phát hành trong đó có cung cấp các hàm API riêng biệt cho các liên lạc dựa trên SOAP để tối đa hoá sự làm việc giữa các nền tảng sử dụng Web Services, đồng thời .NET 2.0 còn cung cấp các API để tối ưu việc liên lạc dựa trên mã nhị phân giữa các ứng dụng chạy trên hệ thống Windows gọi là .NET Remoting, các API cho các giao dịch phân tán, và API cho liên lạc dị bộ. WCF thống nhất các API này thành một mô hình duy nhất nhằm đáp ứng mô hình lập trình hướng dịch vụ.

    WCF có thể sử dụng các bản tin SOAP giữa hai tiến trình, do đó làm cho các ứng dụng dựa trên WCF có thể làm việc với các tiến trình khác thông qua việc giao tiếp sử dụng bản tin SOAP. Khi một tiến trình WCF liên lạc với một tiến trình không là WCF, các bản tin SOAP được mã hoá trên cơ sở XML, nhưng khi nó liên lạc với một tiến trình WCF khác, bản tin SOAP có thể được tối ưu hoá dựa trên mã hoá nhị phân.


    Bây giờ các bạn tạo một service windows đơn giản bằng WCF, WCF là viết tắt của cụm từ "Windows Communication Foundation" cái này các bạn tự hiểu nhé, WCF có sẵn trong .net 3.0 và 3.5 nếu các bạn dùng .net 2.0 là không chạy được đâu, code này mình dùng C# 3.0 để viết.

    Trước tiên các bạn mở VS ra đã, chọn "New Project", một dialogBox hiện ra tiếp đến chọn "WCF", tiếp chọn "Wcf Service Library", trong mục "Name" các bạn đặt tên cho project là "ServiceDemo".

    OK vậy là xong bước đầu tiên, một project "ServiceDemo" được tạo ra và VS cũng tự động sinh ra 2 file là: IService1.cs, và Service1.cs, mình xin nói qua một chút về 2 file này.

    Ở đây IService1.cs đây là một Interface khai báo các function, các function sẽ cài đặt trong class Service1,Service1.cs cài đặt các function mà Service làm việc, một cách tổng quan thì chức năng của service sẽ nằm ở đây.

    Bây giờ nếu "F5", chương trình sẽ hiện ra 1 form "WCF test Client" có 2 khung, khung trên là "Request" và khung dưới "Reponse" và nếu để ý một chút các bạn sẽ thấy xuất hiện 1 biểu tượng của WCF ở "TraySystem", mặc định thì VS tạo sẵn cho ta 2 function :

    Code:

    public interface IService1
    {
    [OperationContract]
    string GetData(int value);

    [OperationContract]
    CompositeType GetDataUsingDataContract(CompositeType composite);

    }
     
    Quay lại với form "WCF test Client", Double-click vài "GetData" -> sẽ hiện ra 1 cửa sổ để ta test -> ở khung "Request" trong cột "value " các bạn điền và "5" rồi -> click "Invoke", đợi 1 chút nhìn xuống dưới các bạn sẽ thấy cột "value" của "Response" có giá trị là "You entered 5".

    Giải thích 1 chút nhé, khung "Request" chứa mã trên Service (dịch vụ) xử lý các yêu cầu của " client " gửi đến, còn "Response" gửi các yêu cầu đã được xử lý trên "Service" về "Client"

    Tiếp đến mình sẽ hướng dẫn các bạn viể vào 1,2 method để hiểu kỹ hơn chút nữa về "Service", các bạn mở file IService1.cs và code vào 2 method, bây giờ các bạn có thể xóa bỏ 2 method mặc định đi cũng được :

    Code:

     public interface IService1
    {
    [OperationContract]
    int Add(int n1, int n2);

    [OperationContract]
    int Subtract(int n1, int n2);
    }

    Nhớ đừng quên "[OperationContract]", các bạn tam thời công nhận vậy, cái này để sau mình sẽ giải thích.
    OK chức năng của 2 method này quá rõ ràng rồi kô cần nói đến nữa, ở đây chỉ là 2 method simply các bạn có thể phát triển thêm nếu muốn, tiếp đến mở file Service1.cs code vào như sau.

    Code:

    public class Service1 : IService1

    {
    public int Add(int n1, int n2)
    {
    return n1 + n2;
    }
    public int Subtract(int n1, int n2)
    {
    return n1 - n2;
    }
    }



    OK giờ có thể "F5" được rồi đấy, cũng như ở bài trước các bạn sẽ thấy 2 method "Add" và "Subtract", giờ các bạn chỉ việc "click" điền giá trị cho n1 và n2 và "invoke". 

    DangTrung.