WINDOWS COMMUNICATION FOUNDATION

Similar documents
Bộ môn MMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ

Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ

Khối: Cao Đẳng nghề và Trung Cấp Năm 2009

Internet Protocol. Bởi: Phạm Nguyễn Bảo Nguyên

Chương 6. Transport Layer. Tài liệu : Forouzan, Data Communication and Networking

Tài liệu hướng dẫn: Stored Procedure

Chương 7. Application Layer. Tài liệu : Forouzan, Data Communication and Networking

Tình huống 1: PPPoE với Username và Password

Chương 5. Network Layer 19/09/2016 1

BELGIUM ONLINE APPOINTMENT

HƯỚNG DẪN SỬ DỤNG PLESK PANEL

HƯỚNG DẪN CÀI ĐẶT PHẦN MỀM DIỆT VIRUS AVIRA

Nội dung chính của chương. Các công nghệ đĩa cứng Cấu tạo vật lý của đĩa cứng Cấu tạo logic của đĩa cứng Cài đặt đĩa cứng như thế nào?

Chương 5. Network Layer. Phần 1 - Địa chỉ IPv4. Tài liệu : Forouzan, Data Communication and Networking

Online Appointment System will work better with below conditions/ Hệ thống đặt hẹn online sẽ hoạt động tốt hơn với điều kiện sau đây:

CẤU TRÚC DỮ LIỆU NÂNG CAO

TÀI LIỆU THỰC HÀNH MÔN CƠ SỞ DỮ LIỆU NÂNG CAO

Cài đặt và cấu hình StarWind iscsi trên Windows. iscsi SAN là gì?

CHƯƠNG 2: CÁC ĐẶC ĐIỂM VỀ MÔI TRƯỜNG PHÁT TRIỂN (IDE)

HƯỚNG DẪN SỬ DỤNG DỊCH VỤ CDN

Mạng máy tính - Computer Network: Hệ. Giao thức - Protocol:

Khoa KH & KTMT Bộ môn Kỹ Thuật Máy Tính

Lab01: M V C Lưu ý: Để thực hành, các bạn phải cài Visual Studio 2013 trở lên mới hỗ trợ MVC5.

SIEMENS INDUSTRIAL NETWORKS

HƯỚNG DẪN SỬ DỤNG DỊCH VỤ CDN

TỔNG QUAN VỀ.NET VÀ C#

Mô hình dữ liệu quan hệ (Relational data model)

Bài Thực hành Asp.Net - Buổi 1 - Trang: 1

I. Hướng Dẫn Đăng Nhập:

Bài 10. Cấu trúc liên nối. khác nhau được gọi là cấu trúc liên nối. nhu cầu trao đổi giữa các module.

BÀI TẬP THỰC HÀNH LẬP TRÌNH WINDOWS C#

Hướng dẫn cài đặt FPT

Ôn tập Thiết bị mạng và truyền thông DH07TT - Lưu hành nội bộ (không sao chép dưới mọi hình thức)

HƯỚNG DẪN SỬ DỤNG HỆ THỐNG CẬP NHẬT CHỨNG THƯ SỐ HOTLINE:

STACK và QUEUE. Lấy STACK

Cụ thể những công việc mà AndroidManifest.xml thực hiện: - Đặt tên cho Java package của ứng dụng.

Giáo trình này được biên dịch theo sách hướng dẫn của Sun Light. Vì là hướng dẫn kỹ thuật, trong này những thuật ngữ kỹ thuật bằng tiếng Anh tôi chỉ

MA NG MA Y TI NH (Computer Networks)

HƢỚNG DẪN TRIỂN KHAI KASPERSKY - MOBILE DEVICE MANAGEMENT

Entity Framework (EF)

HỢP ĐỒNG MUA BÁN HÀNG HÓA QUỐC TẾ GV: NGUYỄN THỊ BÍCH PHƯỢNG

HƯỚNG DẪN SỬ DỤNG ĐẦU GHI H.264 DVR VISION VS (4CH - 8CH - 16CH)

BÀI 6 LÀM VIỆC VỚI THÀNH PHẦN MỞ RỘNG CỦA CSS3

GV: Phạm Đình Sắc or

LÂ P TRI NH WEB ASP.NET

GIẢI THUẬT ĐỊNH TUYẾN (ROUTING ALGORITHM)

BÀI 1: VBA LÀ GÌ? TẠO MACRO, ỨNG DỤNG CÁC HÀM TỰ TẠO (UDF), CÀI ĐẶT ADD-INS VBA là gì?

KIẾN TRÚC MÁY TÍNH. Giảng viên: ThS. Phan Thanh Toàn. v

ĐỌC, GHI XML VỚI C# TRONG ADO.NET --- SỬ DỤNG VISUAL STUDIO

BÀI GIẢNG CHƯƠNG 3 GIAO TIẾP KẾT NỐI SỐ LIỆU

Tìm hiểu Group Policy Object và các ví dụ

HƯỚNG DẪN CÁCH SỬ DỤNG WINDOWS MOVIE MAKER

SIMULATE AND CONTROL ROBOT

BẢO MẬT TRONG SQL SERVER

HƯỚNG DẪN QUẢN TRỊ HỆ THỐNG

Môn Học: Cơ Sở Dữ Liệu 2. Chương 3 LẤY DỮ LIỆU TỪ NHIỀU NGUỒN

Tạo Project với MPLAB

Lecture 12. Trees (1/2) Nội dung bài học:

dụng một chính sách, điều này giúp dễ dàng quản lý và cung cấp tính năng Load Balancing (cân bằng tải) phục vụ tốt hơn các yêu cầu của tổ chức.

Qu n ả tr h ố g t p ậ tin

B5: Time to coding. Tới thư mục src/example.java và thay đổi nội dung file như sau: Mã: package at.exam;

TÀI LIỆU HƯỚNG DẪN SỬ DỤNG HOSTING PLESK PANEL

Bài tập lớn số 1. Giả lập bộ định thời

NHẬP MÔN LẬP TRÌNH KHOA HỌC DỮ LIỆU. Bài 10: Thư viện Pandas (2)

Phần 2. SỬ DỤNG POWERPOINT ĐỂ CHUẨN BỊ NỘI DUNG TRÌNH BÀY

Bài 10: Cấu trúc dữ liệu

LÝ THUYẾT MÔ HÌNH VÀ TỐI ƢU. Th.S Nguyễn Tấn Phúc. Tel:

MỤC LỤC. Giáo trình Thiết kế web Trang 1

Kích hoạt phương thức xa (RMI- Remote Method Invocation )

1 Bước 1: Test thử kit LaunchPad.

PHÁT TRIỂN ỨNG DỤNG WEB

2.4. GIAO THỨC MQTT Các khái niệm cơ bản MQTT được phát triển bởi IBM và Eurotech, phiên bản mới nhất là MQTT 3.1 MQTT (Giao vận tầm xa) là

LAB IP SLA Bài 1. Bùi Quốc Kỳ ***

Cấu hình Router FTTH ---X---

ĐỀ CƯƠNG BÀI GIẢNG HỌC PHẦN: AN NINH MẠNG

Tính kế thừa-2. Bởi: Thanh Hiền Vũ. Định nghĩa lại các thành viên lớp cơ sở trong một lớp dẫn xuất:

Các kiểu định địa chỉ họ MSC-51

Dọn "rác" Windows 7 vào dịp cuối năm

B3: Bên khung Package Explore bên trái đi tới thư mục res, bạn sẽ thấy có 3 thư mục con:

Đa ngôn ngữ (Internationalization) trong Servlet

LẬP TRÌNH WINDOWS FORM VỚI CÁC CONTROL NÂNG CAO (Các control trình bày dữ liệu dưới dạng danh sách)

Nhấn nút New để tạo 1 biến mới Trang 17

Bài 7: Các cấu trúc điều khiển

BÀI LAB ĐỔI TÊN DOMAIN

Kỹ thuật thu nhỏ đối tượng trong Design (Layout)

Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM LẬP TRÌNH MINICHAT. Bài giảng 3. Trang1. Khoa Khoa Học Và Kỹ Thuật Máy Tính

Parallels Cloud Server 6.0

Tạo repository mới. The working tree. The staging index. Lệnh git init tạo một repository loại git. tại thư mục hiện tại: $ git init

PHÁT TRIỂN ỨNG DỤNG DI ĐỘNG NÂNG CAO

LINQ TO SQL & ASP.NET

LẬP TRÌNH 8051 SỐ HỌC VÀ LÔ GIC

Quản trị Linux nâng cao. Tháng 9/2013

FCAPS. nhìn từ quan điểm ITIL. Công cụ ManageEngine và ứng dụng khung ITIL trong các tổ chức, doanh

Khối: Cao Đẳng nghề và Trung Cấp Năm 2009

Lập trình chuyên nâng cao. Lập trình phân tán (Distributed computing

Chủ đề 7: Triển khai và Bảo trì. COMP1026 Introduction to Software Engneering CH7-1 HIENLTH

Một số vấn đề cần quan tâm Nguyễn Duy Hải TT CNTT-ĐHSP Hà Nội

Khoa Công Nghệ Thông Tin Trường Đại Học Cần Thơ. Những hỗ trợ tiên tiến khác của SQL. Đỗ Thanh Nghị

BÀI THỰC HÀNH SỐ 1. Quản trị tập tin: 1/ Tạo các thư mục sau: Bài tập thực hành linux Linuxlab. bt1 bt11 bt111. bt121. bt12. bh1 bh11 bh111.

ĐỀ CƯƠNG CHI TIẾT HỌC PHẦN

Transcription:

1 WINDOWS COMMUNICATION FOUNDATION Khoa Công nghệ Thông tin Ths. Nguyễn Văn Lót

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 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 3

KIẾN TRÚC CỦA WCF 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 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 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 [ServiceContract] public interface IService1 { [OperationContract] string GetData(int value); [DataContract] [OperationContract] CompositeType GetDataUsingDataContract(CompositeType composite); } public class CompositeType { bool boolvalue = true; string stringvalue = "Hello ";. 7

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, 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 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 Scheme://<machineName>[:Port]/Path http://localhost:8080/mywcfservice net.tcp://localhost:8080/mywcfservice 10 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 [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); 11

XÂY DỰNG WCF SERVICE Thuộc tính [ServiceContract] Dùng để mô tả Service [ServiceContract(Namespace="http://minSoft.com")] public interface IServiceTest {... } Một số thuộc tính của ServiceContract CallbackContract ConfigurationName ProtectionLevel SessionMode Đƣợc sử dụng nếu Service yêu cầu callback cho việc trao đổi two-way Đƣợc sử dụng để xác định phần tử service trong ứng dụng. Mặc định là tên class implementation Chỉ định mức độ binding yêu cầu mã hoá, chữ ký số Đƣợc sử dụng để thiết đặt session 12

XÂY DỰNG WCF SERVICE Thuộc tính [OperationContract] Chỉ định phƣơng thức thuộc WCF Service Action AsyncPattern IsInitiating IsOneWay IsTerminating Get hoặc Set WS-Addressing của message yêu cầu Xác định toán tử đƣợc thực hiện không đồng bộ Asynchronous 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 Chỉ định one way message ( chỉ input message, không output hoặc biến tham chiếu) 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 13

XÂY DỰNG WCF SERVICE VÍ DỤ Toán tử OneWay [OperationContract(IsOneWay = true)] void AddTo(double n); [OperationContract(IsOneWay = true)] void SubtractFrom(double n); Khởi tạo Session [OperationContract(IsOneWay=true,IsInitiating=true,IsTerminating=false)] public void MethodOne() { return; } Asyncronous [OperationContract(AsyncPattern = true)] IAsyncResult BeginDoWork(int count, AsyncCallback callback, object state); 14

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 [ServiceContract] public interface ISampleInterface { [OperationContract] bool ApprovePurchaseOrder(MyTypes.PurchaseOrder po); } 15

XÂY DỰNG WCF SERVICE Thuộc tính [DataContract] (tt) 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; } } } } 16

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 <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> 17

SỬ DỤNG WCF SERVICE Tạo proxy client/gọi service qua Visual Studio 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 CalculatorClient client = new CalculatorClient("BasicHttpBinding_ICalculator"); ViewBag.Message = client.subtract(20, 4); Tên endpoint đƣợc sử dụng 19

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 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 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 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) 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 using System.IdentityModel.Selectors; public class AuthenticationHelper : UserNamePasswordValidator 24

BẢO MẬT WCF VÍ DỤ TRANSPORT MESSAGE SECURITY 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) 25

BẢO MẬT WCF VÍ DỤ TRANSPORT MESSAGE SECURITY Bƣớc 3: Thiết đặt security trong web.config Thiết đặt thông tin Service <services> <service name="wcf_customunamepwdesecureservice.service" behaviorconfiguration="mybehavior"> <endpoint address="" binding="basichttpbinding" contract="wcf_customunamepwdesecureservice.iservice" bindingconfiguration="mybind"> <identity> <dns value="localhost"/> </identity> </endpoint> </service> </services> 26

BẢO MẬT WCF VÍ DỤ TRANSPORT MESSAGE SECURITY Thiết đặt cơ chế bảo mật dựa vào tào khoản UserName <bindings> <basichttpbinding> <binding name="mybind"> <security mode="transportwithmessagecredential"> <message clientcredentialtype="username"/> </security> </binding> </basichttpbinding> </bindings> SSL security Cung cấp mức độ bảo mật cho service 27

BẢO MẬT WCF VÍ DỤ TRANSPORT MESSAGE SECURITY Thiết đặt thông tin chứng nhận bảo mật (SecurityCredentail) cho service <behaviors> <servicebehaviors> Lớp chứng thực tài khoản ngƣời dùng <behavior name="mybehavior"> <servicecredentials> <servicecertificate storename="my" storelocation="localmachine" x509findtype="findbysubjectname" findvalue="localhost" /> <usernameauthentication usernamepasswordvalidationmode="custom" customusernamepasswordvalidatortype="wcf_customunamepwdesecur eservice.authenticationhelper, WCF_CustomUNamePwdeSecureService"/> </servicecredentials> <servicemetadata httpgetenabled="true"/> <servicedebug includeexceptiondetailinfaults="false"/> </behavior> 28 </servicebehaviors> </behaviors>

BẢO MẬT WCF VÍ DỤ TRANSPORT MESSAGE SECURITY Bƣớc 4: Tạo proxy client tham chiếu đến WCF service và thiết đặt thông tin bảo mật ServiceEmployee.ServiceClient client = new ServiceEmployee.ServiceClient(); client.clientcredentials.clientcertificate.setcertificate( StoreLocation.LocalMachine, StoreName.My, X509FindType.FindBySubjectName, "localhost"); client.clientcredentials.username.username = "user"; client.clientcredentials.username.password = "user"; ViewBag.Message = client.getallemployees().count(); 29