Upload
juro
View
71
Download
0
Embed Size (px)
DESCRIPTION
Giới thiệu Windows Communication Foundation. Nguyễn Bá Quang. [[email protected]] Microsoft Corporation. Nội dung. Windows Communication Foundation là gì ? Kiến trúc hướng dịch vụ (SOA) và WCF Làm gì để xây dựng một ứng dụng WCF? Một dịch vụ WCF hoạt động như thế nào ? - PowerPoint PPT Presentation
Citation preview
Giới thiệu
Windows Communication Foundation
Nguyễn Bá Quang[[email protected]]
Microsoft Corporation
Nội dung
• Windows Communication Foundation là gì?• Kiến trúc hướng dịch vụ (SOA) và WCF• Làm gì để xây dựng một ứng dụng WCF?• Một dịch vụ WCF hoạt động như thế nào?• Hosting một dịch vụ WCF
Vấn đề phát sinhVấn đề phát sinh
Các phần mềm hiện nay yêu cầu khả năng tích hợp cao
… Xây dựng các hệ thống có tính kết nối là rất khó!
1. Có rất nhiều công nghệ giải quyết cho vấn đề truyền thông và tích hợp hiện nay Chọn cái nào?
2. Nhu cầu thay đổi nền tảng ứng dụng xảy ra bất cứ lúc nào Làm sao để chuyển đổi mà tiết kiệm chi phí
Windows Communication Foundation
Khung thống nhất cho
việc phát triển nhanh các
ứng dụng hướng dịch vụ.
Dịch vụ Web ASP.NET
ASMX
Lập trình nền thuộc
tính
WSE
Dịch vụ Web nâng cao
Lập trình nền thông điệp
Mô hình từ xa
Remoting
Mô hình thống nhất thay thế cho các công nghệ phân tán trước đó
Windows Communication Foundation
ES/COM+ MSMQ
Mục tiêu thiết kế WCF
UnificationThống nhất
Interoperability & IntegrationKhả năng tương tác và tích hợp
Productive SO Programming
Đẩy mạnh lập trình hướng dịch
vụ
“Mô hình lập trình thống nhất nhằm phát triển nhanh các ứng dụng hướng dịch vụ trên nền Windows”
Thống nhất về công nghệ Giữ nguyên ưu điểm Thích hợp cho nhiều mục đích sử dụng
Tương tác và tích hợp với các ứng dụng trên các nền tảng khác Tương tác và nâng cấp các ứng dụng phân tán hiện có
Là một mô hình lập trình hướng dịch vụ
Đáp ứng 4 tiêu chí của lập trình hướng
dịch vụ
Dịch vụ và sử dụng dịch vụ là độc lập với các quá trình nâng cấp phiên bản, triển khai, hoạt động và bảo mật.
Tự phát triển
Các dịch vụ cung cấp các phép toánvà cấu trúc thông tin. Không bao gồm nội dung thông tin
Chia sẻ yêu cầu, không chia
sẻ nội dung
Các dịch vụ có thể thiết kế để độc lập với việc triển khai, thống nhất với các ứng dụng về chuẩn giao tiếp
Tương thích dựa trên chính
sách
Các ứng dụng và dịch vụ liên lạc với nhau thông qua các thông điệp mà không quan tâm đến việc xử lý và tiếp nhận
Rõ ràng về ranh giới
SOA và WCFWCF đã được thiết kế với các nguyên lý sau của SOA
Dễ dàng thự thi
Độc lập triển khai, phát triển và quản lý
Nâng cao khả năng tái sử dụng công nghệ
Các lợi ích của SOA
Giảm chi phí cho việc cập nhật và bảo trì phần mềm
Xây dựng một ứng dụng WCF
Xây dựng một dịch vụ WCF
Xây dựng một ứng dụng
client sử dụng dịch vụ WCF
Xây dựng dịch vụ WCF
• Định nghĩa các Contracts• Data Contract• Operation Contract
• Thi hành các dịch vụ• Cấu hình, triển khai và kiểm thử các dịch
vụ• Cấu hình services trong configuration file• Triển khai lên IIS 7• Kiểm thử
Data Contract
• [DataContract]: cho biết một class được khai báo có thể được serialized và deserialized như một XML stream bởi WCF
• [DataMember]: cho biết thuộc tính nào sẽ được serialized và deserialized
Service Contract
• [ServiceContract ]: cho biết một interface là một service contract. WCF dựa vào thuộc tính này để sinh ra metadata cho client khi sử dụng
• [OperationContract]: cho biết phương thức nào sẽ được đưa vào sử dụng
Thi hành các dịch vụ
• Một class được cung cấp bởi một dịch vụ WCF phải thực thi đầy đủ một service contract.
Cấu hình các dịch vụ WCF
• ProductService.svc
• Web.config<serviceModel>: chứa thông tin cấu hình cho một dịch vụ Web WCF<services>: chứa thông tin chi tiết của mỗi service được thực thi<service>: chỉ ra namespace và class mà thực thi service<endpoint>: cung cấp thông tin chi tiết của service mà các ứng dụng client yêu cầu theo thứ tự để liên lạc với service<behavior >: cho phép metadata được công bố tới client
Triển khai trên IIS 7 (Vista)
Kiểm thử
Xây dựng ứng dụng client
Nguyên lý ABCs của WCF
Kiến trúc ABCs của WCF
Client Service
MessageABC A B C
Address Binding Contract
(Where) (How) (What)
Bv
Bv
Bv
Bv A B C
Endpoint
Service Host
Endpoints
• Address: Where?– Chỉ ra nơi nào để gửi và nhận thông điệp– Chỉ ra nơi nào để tìm ra Endpoints
• Binding: How?– Chỉ ra làm cách nào để gửi thông điệp– Chỉ ra làm sao để client liên lạc với Service endpoints
• Contract: What?– Chỉ ra nhưng cái gì được bao gồm trong thông điệp– Chỉ ra những dịch vụ nào client có thể sử dụng
• Behaviours:– Triển khai chi tiết
Address
• Nơi để truyền và nhận thông điệp• Cung cấp thông tin:
– Đường dẫn– Giao thức vận chuyển– Tên Host– Cổng truy cập [transport]://[machine][:optional
port]http://localhosthttp://localhost:8081http://localhost:8081/Servicenet.tcp://localhost:8082/Servicenet.pipe://localhost/Pipe
Address URInet.p2p://localhost/MyService
NetPeerTcpBinding
Peer to Peer
net.pipe://localhost/MyService
NetNamedPipeBinding
Named Pipes
net.msmq://localhost/private/MyService
NetMsmqBinding
MSMQ
net.tcp://localhost:8088/MyService
NetTcpBinding
TCP
http://localhost:80/MyService
BasicHttpBindingWSHttpBinding
WSDualHttpBindingWSFederationHttpBinding
HTTP
SchemeHostPortPath
Chia sẻ Port thông quaHTTP.SYS
Chia sẻ Port thông quaTCP Port Sharing Service
Bindings (Gắn kết)
• Mô tả cách Client kết nối với services• Định dạng dữ liệu mong muốn• Có thể bao gồm các thông tin
– Giao thức vận chuyển– Định dạng mã hóa thông điệp– Cơ chế bảo mật– Cơ chế giao dịch– Tính tin cậy trong liên lạc
Một số bindings phổ biếnBasicHttpBindingNetTcpBindingWSHttpBindingNetMsqmqBinding
Contracts (Hợp đồng)
• [Service Contract]: Là một Interface • [OperationContract]: Mô tả các phép toán có
thể thực thi bởi service– Toàn bộ data phải được serializable
• [Data Contract]: Mô tả cấu trúc dữ liệu và cách mà dữ liệu được serializable.
Hosting and Demo
IIS 7 và WAS
Windows
Service
Ứng dụng User
class HelloHost { static void Main(string[] args) { ServiceHost host = new ServiceHost(typeof(HelloService)); host.Open(); Console.ReadLine(); host.Close(); }}
Hosting: Ứng dụng người dùng
<service name="HelloService"> <host> <baseAddresses> <add baseAddress="http://localhost:8000"/> </baseAddresses> </host> …</service>
Hosting: Ứng dụng người dùng
• Thuận lợi– Kiểm soát toàn vẹn– Không giới hạn trong việc binding/behavior– Sử dụng các ứng dụng có giao diện
• Khó khăn– Không có các chức năng quản lý Hosting
public class WindowsService : ServiceBase { ServiceHost host; protected override void OnStart(string[] args) { host = new ServiceHost(typeof(HelloService)); host.Open(); } protected override void OnStop() { host.Close(); }}
[RunInstaller(true)]public class WindowsServiceInstaller : Installer { public WindowsServiceInstaller() { ServiceProcessInstaller spi = new ServiceProcessInstaller(); ServiceInstaller si = new ServiceInstaller(); Installers.Add(spi); Installers.Add(si); }}
Hosting: Windows Service
Hosting: Windows Service
• Thuận lợi– Tự động Start/Stop/Restart– Có tool quản lý service– Có thể thực thi ở tài khoản máy cũng như
người dùng• Khó khăn
– Sự kích hoạt không có thông báo
Hosting: IIS7/WAS
<%@ Service language="C#" class="HelloService" %>using System;using System.ServiceModel;public class HelloService : IHelloService { … }
http://localhost/HelloService/HelloService.svc
Hosting: IIS7/WAS
• Thuận lợi– Kích hoạt sẵn có trong IIS– Hỗ trợ Named Pipes, TCP, and MSMQ – Sử dụng công cụ quản lý IIS7 mới
• Khó khăn– Chỉ hoạt động trên VISTA
Tóm tắt về WCF
• WCF là công nghệ cho tính toán phân tán• WCF tích hợp tất cả các công nghệ phân tán tốt nhất• Sử dụng chuẩn Web Services để tương tác và tích hợp
với các giải pháp đang tồn tại• WCF sẵn có trong Windows Vista, Windows XP SP2,
Windows Server 2008
Tham khảo thêm….
Check out the WCF community site for a list of useful resources: http://windowscommunication.net
Download and prototype on the WCF CTP Releases: http://msdn.microsoft.com/windowsvista/getthebeta/default.aspx
Leverage the community forum to post comments and connect with the feature team: http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=118&SiteID=1