Tải bản đầy đủ (.pdf) (29 trang)

Windows communication foundation -WCF pptx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (368.98 KB, 29 trang )

WINDOWS
COMMUNICATION
FOUNDATION
Khoa Công nghệ Thông tin
Ths. Nguyễn Văn Lót
Wednesday, March 21, 2012
1
WINDOWS COMMUNICATION FOUNDATION - WCF
GIỚI THIỆU
 Đƣợc giới thiệu ở .NET 3
 WCF cung cấp mô hình lập trình đơn giản, thống
nhất và có thể mở rộng và có thể tƣơng tác với các
công nghệ phân tán khác: DCOM, .NET
Remoting, XML web service, Sockets, P2P,…
 Tích hợp các công nghệ phân tán vào trong API
với namespace System.ServiceModel
 Cung cấp các công nghệ khác nhau để ngƣời sử
dụng service có thể sử dụng dễ dàng. Ví dụ WCF
có thể cung cấp service làm việc với giao thức TCP
hoặc sử dụng XML web service
Wednesday, March 21, 2012
2
WCF
CÁC NÉT ĐẶC TRƢNG
 Hỗ trợ “strongly typed” định dạng cũng nhƣ
“untyped” messages.
  Cho phép ứng dụng .net chia sẽ kiểu dữ liệu hiệu
quả giữa các nền (ví dụ J2EE)
 Hỗ trợ nhiều binding ( HTTP, TCP, MSMQ,
named pipes) cho phép chọn loại thích hợp để
truyền tải dữ liệu


 Hỗ trợ các web service chuyên biệt gần nhất (WS-
Policy, WS-Security, WS-Trust,…)
 Tích hợp đầy đủ mô hình anh ninh và các kỹ thuật
an ninh
 Hỗ trợ session cũng nhƣ hỗ trợ one-way message
Wednesday, March 21, 2012
3
KIẾN TRÚC CỦA WCF
Wednesday, March 21, 2012
4
CÁC THÀNH PHẦN CƠ BẢN CỦA ỨNG DỤNG WCF
 The WCF Service assembly: *.dll chứa đựng các
class và interface trình bày các chức năng
(functions) để ngƣời khác có thể gọi
 The WCF Service host: host WCF Service
assembly
 The WCF client: đây là một application truy xuất
các chức năng của service qua proxy
Wednesday, March 21, 2012
5
ABCS CỦA WCF
 Host và client trao đổi với nhau thông qua ABCs
(address, binding, contact)
 Address: Xác định vị trí của service
 Binding: chỉ định kênh trao đổi thông tin
 Contract: mô tả các phƣơng thức của service
Wednesday, March 21, 2012
6
WCF CONTRACT
 Là key để xây dựng WCF service. Nó giúp mô tả

service, kiểu dữ liệu và các hàm của service
 [ServiceContract]: mô tả interface của service
 [OperationContract]: mô tả hàm/thủ tục của
service
 [DataContract]: mô tả kiểu dữ liệu mới của service
Wednesday, March 21, 2012
7
[ServiceContract]
public interface IService1
{
[OperationContract]
string GetData(int value);
[OperationContract]
CompositeType GetDataUsingDataContract(CompositeType
composite);
}
[DataContract]
public class CompositeType
{
bool boolValue = true;
string stringValue = "Hello ";
…….
WCF BINDING
 Binding là đối tƣợng đƣợc sử dụng để chỉ định chi
tiết trao đổi dữ liệu đƣợc yêu cầu để nối kết đến
endpoint của WCF
 Binding có thể chứa các thông tin cơ bản sau:
 Protocol: Xác định bộ máy mã bảo mật
đƣợc sử dụng
 Encoding: xác định mã hoá

thông tin: text, binary
 Transport: xác định giao thức
truyền dữ liệu: tcp, http,…
Wednesday, March 21, 2012
8
WCF BINDING
 Một số wcf binding hệ thống thƣờng dùng
 HTTP-Based Bindings
 BasicHttpBinding: Đƣợc sử dụng để xây dựng WS-Basic
Profile (WS-I Basic Profile 1.1). Binding này sử dụng HTTP
nhƣ phƣơng tiện vận chuyển và Text/XML nhƣ mã hoá
message mặc định
 WSHttpBinding: Tƣơng tự BasicHttpBinding, nhƣng cung
cấp nhiều tính năng web service: cung cấp giao dịch
(transaction), thông tin tin cậy (reliable) và WS-Address
 TCP-Based Bindings
 NetNamedPipeBinding:Một Binding an ninh, tin cậy cho
việc trao đổi trên cùng máy giữa các ứng dụng .NET
 MSMQ-Based Bindings
 NetMsmqBinding: Binding hàng đợi (queued) thích hợp cho
trao đổi giữa các máy giữa các ứng dụng .NET
Wednesday, March 21, 2012
9
WCF ADDRESS
 WCF Address giúp xác định endpoint và chỉ cho
các customer của service địa chỉ của nó
 Address có các thông tin cơ bản sau:
 Scheme: giao thức vận chuyển. Ex. http, tcp, msmq
 MachineName: Tên domain của máy
 Port: Cổng đƣợc sử dụng. Ví dụ port 80 cho http

binding
 Path: đƣờng dẫn đến WCF Service
Wednesday, March 21, 2012
10
Scheme://<machineName>[:Port]/Path
http://localhost:8080/MyWCFService
net.tcp://localhost:8080/MyWCFService
net.msmq://localhost:8080/MyWCFService
XÂY DỰNG WCF SERVICE
 Khi xây dựng wcf service, nó bao gồm 2 phần:
 Interface và Implementation
Wednesday, March 21, 2012
11
[ServiceContract]
public interface IServiceTest
{
[OperationContract]
string GetData(int value);
[OperationContract]
CompositeType GetDataUsingDataContract(CompositeType composite);
}
public class Service1 : IServiceTest
{
public string GetData(int value)
{
return string.Format("You entered: {0}", value);
}

XÂY DỰNG WCF SERVICE
 Thuộc tính [ServiceContract]

 Dùng để mô tả Service
 Một số thuộc tính của ServiceContract
Wednesday, March 21, 2012
12
[ServiceContract(Namespace="")]
public interface IServiceTest
{

}
CallbackContract
Đƣợc sử dụng nếu Service yêu cầu callback cho việc trao
đổi two-way
ConfigurationName
Đƣợc sử dụng để xác định phần tử service trong ứng
dụng. Mặc định là tên class implementation
ProtectionLevel
Chỉ định mức độ binding yêu cầu mã hoá, chữ ký số
SessionMode
Đƣợc sử dụng để thiết đặt session
XÂY DỰNG WCF SERVICE
 Thuộc tính [OperationContract]
 Chỉ định phƣơng thức thuộc WCF Service
Wednesday, March 21, 2012
13
Action
Get hoặc Set WS-Addressing của message yêu cầu
AsyncPattern
Xác định toán tử đƣợc thực hiện không đồng bộ
Asynchronous
IsInitiating

Get hoặc set giá trị mà chỉ định có hay không phƣơng thức
thực hiện toán tử có thể khởi tạo một session
IsOneWay
Chỉ định one way message ( chỉ input message, không
output hoặc biến tham chiếu)
IsTerminating
Chỉ định WCF runtime kết thúc giao dịch hiện tại sau khi
toán tử thực hiện xong
XÂY DỰNG WCF SERVICE
VÍ DỤ
 Toán tử OneWay
 Khởi tạo Session
 Asyncronous
Wednesday, March 21, 2012
14
[OperationContract(IsOneWay = true)]
void AddTo(double n);
[OperationContract(IsOneWay = true)]
void SubtractFrom(double n);
[OperationContract(IsOneWay=true,IsInitiating=true,IsTerminating=false)]
public void MethodOne()
{
return;
}
[OperationContract(AsyncPattern = true)]
IAsyncResult BeginDoWork(int count, AsyncCallback callback, object
state);
XÂY DỰNG WCF SERVICE
 Thuộc tính [DataContract]
 Định nghĩa kiểu dữ liệu mới cho phƣơng thức của

WCF Service, dùng để mô tả dữ liệu đƣợc trao đổi giữa
client and service
Wednesday, March 21, 2012
15
[ServiceContract]
public interface ISampleInterface
{
[OperationContract]
bool ApprovePurchaseOrder(MyTypes.PurchaseOrder po);
}
XÂY DỰNG WCF SERVICE
 Thuộc tính [DataContract] (tt)
Wednesday, March 21, 2012
16
namespace MyTypes
{
[DataContract]
public class PurchaseOrder
{
private int poId_value;
// Apply the DataMemberAttribute to the property.
[DataMember]
public int PurchaseOrderId
{
get { return poId_value; }
set { poId_value = value; }
}
}
}
HOST WCF SERVICE

 IIS và Window Service thƣờng đƣợc sử dụng để
host WCF Service
 Thiết đặt ABCs trong Web.config nhằm mục đích
phục vụ những nhu cầu khác nhau của service
Wednesday, March 21, 2012
17
<services>
<service name="WcfService1.Service1">
<endpoint address="" binding="basicHttpBinding"
contract="WcfService1.ICalculator"></endpoint>
<endpoint address="mex" binding="mexHttpBinding"
contract="WcfService1.ICalculator" ></endpoint>
<host>
<baseAddresses>
<add baseAddress="http://localhost:8077/Service1.svc" />
</baseAddresses>
</host>
</service>
</services>
SỬ DỤNG WCF SERVICE
 Tạo proxy client/gọi service qua Visual Studio
Wednesday, March 21, 2012
18
SỬ DỤNG WCF SERVICE
 Sử dụng đối tƣợng proxy để truy xuất các phƣơng
thức của service
Wednesday, March 21, 2012
19
CalculatorClient client = new
CalculatorClient("BasicHttpBinding_ICalculator");

ViewBag.Message = client.Subtract(20, 4);
Tên endpoint đƣợc sử dụng
BẢO MẬT WCF
 Có 2 cách bảo mật cơ bản trong wcf là: message
and transport security. Tuy nhiên có thể kết hợp
2 loại này
 Transport Security
Wednesday, March 21, 2012
20
BẢO MẬT WCF
 Transport security đƣợc sử dụng trong trƣờng hợp
 Cả service and client đƣợc đặt ở intranet
 Message đƣợc gửi trực tiếp từ ứng dụng đển wcf
service và message không đƣợc đi qua một hệ thống
trung gian khác
 Ƣu điểm Transport security
 Nó cung cấp khả năng tích hợp và các phƣơng tiện để
các thành phần trao đổi có thể làm việc với nhau
 Nâng cao việc trình diễn (performance)
 Luồng (stream) đƣợc sử dụng
Wednesday, March 21, 2012
21
BẢO MẬT WCF
 Message security
 Message security đƣợc sử dụng trong trƣờng hợp
 Message đƣợc gửi đến một wcf service và message này
đƣợc chuyển đến một wcf service khác hoặc đi đến một
hệ thống trung gian khác
 Wcf client truy xuất wcf service thông qua internet
Wednesday, March 21, 2012

22
BẢO MẬT WCF
 Ƣu điểm của message security
 Cung cấp end-to-end security
 Cho phép một phần hoặc những message đƣợc chọn để
bảo mật, do đó nâng cao đƣợc sự trình diễn
 Hỗ trợ nhiều kênh vận chuyển (transport)
Wednesday, March 21, 2012
23
BẢO MẬT WCF
VÍ DỤ TRANSPORT MESSAGE SECURITY
 Ví dụ sử dụng user name và password để chứng
thực tính hợp lệ khi sử dụng service và sử dụng
SSL để mã hoá dữ liệu trong quá trình truyền tải
 Bƣớc 1: Xây dựng service
 Bƣớc 2: Định nghĩa hàm validate để kiểm tra tính
hợp lệ của tài khoản
Wednesday, March 21, 2012
24
public class AuthenticationHelper : UserNamePasswordValidator
using System.IdentityModel.Selectors;
BẢO MẬT WCF
VÍ DỤ TRANSPORT MESSAGE SECURITY
Wednesday, March 21, 2012
25
public override void Validate(string userName, string password){
if (userName == null || password == null){
throw new Exception("User Name or Password cannot be null");
}
if (!this.CheckIfUserNameExist(userName)){

throw new Exception("Sorry!This User is Not Present");
}
if (!this.AuthenticateUser(userName, password)){
throw new Exception("Invalid User Name or Password");
}
}
private bool CheckIfUserNameExist(string userName)
private bool AuthenticateUser(string userName, string password)

×