Pages

26 thg 2, 2010

WCF Tutorial : Hướng dẫn tạo ứng dụng WCF

WEBSERVER

Tạo Solution mới, trong đó có Project WCF và Project của ứng dụng client như winform hay webform,… cùng chung 1 Solution sẽ đơn giản hơn trong việc thực hiện kết nối client với các dịch vụ như Webservice hay WCF.

Ctrl + Shilf + N

Sau khi tạo thành công project WCF, trong template sẽ có sẵn 1 số class như giao diện và lớp thực thi giao diện service. Mở các file .cs ra và ngâm cứu các đoạn code trong chúng.

Lưu ý, 2 attribute quan trọng nhất trong WCF là [ServiceContract] và [OperationContract]. [ServiceContract] dùng để đánh dấu các class thực thi service hay các giao diện của các service, [OperationContract] đánh dấu các method được đưa ra service (expose) cho client gọi.

Việc đánh dấu [ServiceContract] cho giao diện không phải là bắt buộc, không nhất định phải là như vậy, có thể không dùng giao diện mà đánh dấu trực tiếp cho lớp thực thi service. Nhưng rõ ràng là, trong OOP thì việc tận dụng các interface, kế thừa luôn có ưu điểm hơn hẳn.

Ngoài 2 attribute kể trên còn các attribute khác như [DataContract] (đánh dấu các class), [DataMember] (đánh dấu các thành phần public trong class đó).

Hiển nhiên, không phải giao diện nào, phương thức nào, hay các class nào cũng phải đánh dấu, chỉ riêng các thành phần nào được expose mới cần đánh dấu tương ứng.

Mở giao diện service (IService1) thêm vào method mới cho service

[OperationContract]

string Hello(string name);

Tiến hành cài đặt nội dung cho method mới trong lớp Service1 được cài đặt giao diện IService1 trong file Service1.svc.cs

#region IService1 Members

static int only = 1;

public string Hello(string name)

{

only++;

return only.ToString() + " Hello, Mr " + name;

}#endregion

Run (F5)

WEBCLIENT

Cần tạo thêm 1 client để thực hiện lời gọi dịch vụ.

Ta cần tạo thêm project web Asp.net nữa trong cùng 1 Solution chứa WCF.

Thực hiện kết nối service trên cùng 1 Solution, trên panel Solution Explorer , click chuột phải vào thư mục References chứa các tham chiếu chọn Add Service Reference…



Kết quả sau khi dò tìm các service trên Solution. Nếu có chút kinh nghiệm thì tham khảo thêm trong phần Advanced à OK

Đến đây bạn thêm trong trang Default.aspx 1 textbox txtName và 1 button Button1

Viết code cho sự kiện click Button1

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using WebApplication1.ServiceReference1;

namespace WebApplication1

{

public partial class _Default : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

}

protected void Button1_Click(object sender, EventArgs e)

{

Service1Client client = new Service1Client();

string returnResult = client.Hello(txtName.Text);

Response.Write(returnResult);

}

}

}

Chạy trang web để test

Khi muốn thay đổi phần WCF ta ko cần thực hiện các bước kết nối nữa vì cả webserver và webclient cùng nằm chung 1 solution nên sẽ tự đồng bộ với nhau. Nếu muốn tạo client dạng winform cũng thực hiện các bước tương tự trên webform

2 nhận xét:

Unknown nói...
Nhận xét này đã bị tác giả xóa.
Unknown nói...

WCF service application có kết nối với client là winform ko ? Hay chỉ trên asp.net ? Vậy khi làm client là winform phải tao wcf service bằng wcf service library ah ???

Đăng nhận xét

Powered By Blogger