350 likes | 597 Views
Giới thiệu Windows Communication Foundation. Nguyễn Bá Quang. [basquang@hotmail.com] 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 ?
E N D
Giớithiệu Windows Communication Foundation Nguyễn Bá Quang [basquang@hotmail.com] Microsoft Corporation
Nội dung • Windows Communication Foundation làgì? • Kiếntrúchướngdịchvụ (SOA) và WCF • Làmgìđểxâydựngmộtứngdụng WCF? • Mộtdịchvụ WCF hoạtđộngnhưthếnào? • Hosting mộtdịchvụ WCF
Vấnđềphátsinh • Cácphầnmềmhiện nay yêucầukhảnăngtíchhợpcao • … Xâydựngcáchệthốngcótínhkếtnốilàrấtkhó! • Córấtnhiềucôngnghệgiảiquyếtcho • vấnđềtruyềnthôngvàtíchhợphiện nay • Chọncáinào? • 2. Nhucầuthayđổinềntảngứngdụng • xảyrabấtcứlúcnào • Làmsaođểchuyểnđổimàtiếtkiệm chi phí
Windows Communication Foundation Khungthốngnhấtchoviệcpháttriểnnhanhcácứngdụnghướngdịchvụ.
Lậptrìnhnềnthuộctính Lậptrìnhnềnthôngđiệp Windows Communication Foundation Ent Services Sys.Messaging Môhìnhthốngnhấtthaythếchocáccôngnghệphântántrướcđó ASMX Remoting Dịchvụ Web ASP.NET Môhìnhtừxa ES/COM+ MSMQ WSE Dịchvụ Web nângcao
Mụctiêuthiếtkế WCF • “Môhìnhlậptrìnhthốngnhấtnhằmpháttriểnnhanhcácứngdụnghướngdịchvụtrênnền Windows” • Thốngnhấtvềcôngnghệ • Giữ nguyênưuđiểm • Thíchhợpchonhiều • mụcđíchsửdụng • Làmộtmôhìnhlậptrìnhhướngdịchvụ • Đápứng 4 tiêuchícủalậptrìnhhướng • dịchvụ • Tươngtácvàtíchhợp • vớicácứngdụngtrên • cácnềntảngkhác • Tươngtácvànângcấp • cácứngdụngphântán • hiệncó
SOA và WCF WCF đãđượcthiếtkếvớicácnguyênlýsaucủa SOA Rõràngvềranhgiới Cácứngdụngvàdịchvụliênlạcvớinhauthông qua cácthôngđiệpmàkhôngquantâmđếnviệcxửlývàtiếpnhận Dịchvụvàsửdụngdịchvụlàđộclậpvớicácquátrìnhnângcấpphiênbản, triểnkhai, hoạtđộngvàbảomật. Tựpháttriển Cácdịchvụcungcấpcácphéptoánvàcấutrúcthông tin. Khôngbaogồmnội dung thông tin Chiasẻyêucầu, khôngchiasẻnội dung Tươngthíchdựatrênchínhsách Cácdịchvụcóthểthiếtkếđểđộclậpvớiviệctriểnkhai, thốngnhấtvớicácứngdụngvềchuẩngiaotiếp
Cáclợiíchcủa SOA Dễdàngthựthi Độclậptriểnkhai, pháttriểnvàquảnlý Nângcaokhảnăngtáisửdụngcôngnghệ Giảm chi phíchoviệccập nhậtvàbảotrìphầnmềm
Xâydựngmộtứngdụng WCF Xâydựngmộtdịchvụ WCF Xâydựngmộtứngdụng client sửdụngdịchvụ WCF
Xâydựngdịchvụ WCF • Địnhnghĩacác Contracts • Data Contract • Operation Contract • Thihànhcácdịchvụ • Cấuhình, triểnkhaivàkiểmthửcácdịchvụ • Cấuhình services trong configuration file • Triểnkhailên IIS 7 • Kiểmthử
Data Contract • [DataContract]: chobiếtmột class đượckhaibáocóthểđượcserialized vàdeserializednhưmột XML stream bởi WCF • [DataMember]: chobiết • thuộctínhnàosẽđược • serialized vàdeserialized
Service Contract • [ServiceContract]: chobiếtmột interface làmột service contract. WCF dựavàothuộctínhnàyđểsinhra metadata cho client khisửdụng • [OperationContract]: chobiếtphươngthứcnàosẽđượcđưavàosửdụng
Thihànhcácdịchvụ • Một class đượccungcấpbởimộtdịchvụ WCF phảithựcthiđầyđủmột service contract.
Cấuhìnhcácdịchvụ WCF • ProductService.svc • Web.config • <serviceModel>: chứathông tin cấuhìnhchomộtdịchvụ Web WCF • <services>: chứathông tin chi tiếtcủamỗi service đượcthựcthi • <service>: chỉra namespace và class màthựcthi service • <endpoint>: cungcấpthông tin chi tiếtcủa service màcácứngdụng client yêucầutheothứtựđểliênlạcvới service • <behavior >: chophép metadata đượccôngbốtới client
C C C B B B A A A Kiếntrúc ABCs của WCF Service Host Client Service Bv Bv Message Bv Bv Address Binding Contract (Where) (How) (What) Endpoint
Endpoints • Address: Where? • Chỉ ranơinàođểgửivànhậnthôngđiệp • Chỉ ra nơi nàođểtìmra Endpoints • Binding: How? • Chỉ ralàmcáchnàođểgửithông điệp • Chỉ ra làm sao để client liên lạc với Service endpoints • Contract: What? • Chỉ ranhưngcáigìđượcbaogồmtrongthô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ềnvànhậnthôngđiệp • Cungcấpthông tin: • Đườngdẫn • Giaothứcvậnchuyển • Tên Host • Cổngtruycập [transport]://[machine][:optional port] http://localhost http://localhost:8081 http://localhost:8081/Service net.tcp://localhost:8082/Service net.pipe://localhost/Pipe
Address URI Scheme Host Port Path Chiasẻ Port thông qua TCP Port Sharing Service Peer to Peer Named Pipes MSMQ TCP HTTP net.p2p://localhost/MyServiceNetPeerTcpBinding net.pipe://localhost/MyService NetNamedPipeBinding net.msmq://localhost/private/MyService NetMsmqBinding net.tcp://localhost:8088/MyService NetTcpBinding http://localhost:80/MyServiceBasicHttpBindingWSHttpBindingWSDualHttpBindingWSFederationHttpBinding Chiasẻ Port thông qua HTTP.SYS
Bindings (Gắnkết) • Môtảcách Client kếtnốivới services • Địnhdạngdữliệumongmuốn • Cóthểbaogồmcácthông tin • Giaothứcvậnchuyển • Địnhdạngmãhóathôngđiệp • Cơchếbảomật • Cơchếgiaodịch • Tính tin cậytrongliênlạc Mộtsố bindings phổbiến BasicHttpBinding NetTcpBinding WSHttpBinding NetMsqmqBinding
Contracts (Hợpđồng) • [Service Contract]: Làmột Interface • [OperationContract]: Môtảcácphéptoáncóthểthựcthibởi service • Toànbộ data phảiđượcserializable • [Data Contract]: Môtảcấutrúcdữliệuvàcáchmàdữliệuđượcserializable.
Hosting and Demo IIS 7 và WAS Windows Service Ứngdụng User
Hosting: Ứngdụngngườidùng class HelloHost { static void Main(string[] args) { ServiceHosthost = new ServiceHost(typeof(HelloService)); host.Open(); Console.ReadLine(); host.Close(); } } <service name="HelloService"> <host> <baseAddresses> <add baseAddress="http://localhost:8000"/> </baseAddresses> </host> … </service>
Hosting: Ứngdụngngườidùng • Thuậnlợi • Kiểmsoáttoànvẹn • Khônggiớihạntrongviệc binding/behavior • Sửdụngcácứngdụngcógiaodiện • Khókhăn • Khôngcócácchứcnăngquảnlý Hosting
Hosting: Windows Service 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 • Thuậnlợi • Tựđộng Start/Stop/Restart • Có tool quảnlý service • Cóthểthựcthi ở tàikhoảnmáycũngnhưngườidùng • Khókhăn • Sựkíchhoạtkhôngcóthôngbá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ậnlợi • Kíchhoạtsẵncótrong IIS • Hỗtrợ Named Pipes, TCP, and MSMQ • Sửdụngcôngcụquảnlý IIS7 mới • Khókhăn • Chỉhoạtđộngtrên VISTA
Tómtắtvề WCF • WCF làcôngnghệchotínhtoánphântán • WCF tíchhợptấtcảcáccôngnghệphântántốtnhất • Sửdụngchuẩn Web Services đểtươngtácvàtíchhợpvớicácgiảiphápđangtồntại • WCF sẵncótrong Windows Vista, Windows XP SP2, Windows Server 2008
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 Thamkhảothêm….