Đăng ký Đăng nhập
Trang chủ Tìm hiểu công nghệ WCF (Windows Communication Foundation) và ứng dụng quản lý cô...

Tài liệu Tìm hiểu công nghệ WCF (Windows Communication Foundation) và ứng dụng quản lý công ty DKT

.PDF
60
597
134

Mô tả:

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Nguyễn Xuân Kỳ TÌM HIỂU CÔNG NGHỆ WCF (WINDOWS COMMUNICATION FOUNDATION) VÀ ỨNG DỤNG QUẢN LÝ CÔNG TY DKT LUẬN VĂN THẠC SĨ Hà Nội - 2011 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Nguyễn Xuân Kỳ TÌM HIỂU CÔNG NGHỆ WCF (WINDOWS COMMUNICATION FOUNDATION) VÀ ỨNG DỤNG QUẢN LÝ CÔNG TY DKT Ngành: Công nghệ Thông tin Chuyên ngành: Công nghệ phần mềm Mã số: 60.48.10 LUẬN VĂN THẠC SĨ NGƯỜI HƯỚNG DẪN KHOA HỌC: TS.Trần Thị Minh Châu Hà Nội - 2011 MỤC LỤC Bảng danh mục các hình vẽ .................................................................................. 6 Danh mục các từ viết tắt ....................................................................................... 7 Lời nói đầu ........................................................................................................... 8 Phần I- Tổng quan về kiến trúc hướng dịch vụ ..................................................... 9 1.1 Giới thiệu bài toán ........................................................................................ 9 1.2 Lịch sử hình thành và tương lai phát triển của kiến trúc hướng dịch vụ 10 1.3 Khái niệm, đặc trưng, tính chất của lập trình hướng dịch vụ ......................... 10 1.4 Ưu, nhược điểm của lập trình hướng dịch vụ ................................................ 11 1.5 RPC .............................................................................................................. 12 1.6 IDL ............................................................................................................... 12 1.7 SOAP .......................................................................................................... 13 1.8 WSDL .......................................................................................................... 14 1.9 UDDI............................................................................................................ 16 1.10 REST .......................................................................................................... 16 Phần II: Tổng quan công nghệ WCF ..................................................................... 17 2.1 Lịch sử hình thành ........................................................................................ 17 2.2 Các công nghệ trước ..................................................................................... 17 2.2.1 COM, DCOM .............................................................................. 17 2.2.2 NET Remoting ............................................................................ 18 2.2.3 Webservices ................................................................................ 19 2.2.4 MSMQ ........................................................................................ 20 2.3 Đặc trưng, tính chất của WCF ....................................................................... 20 2.4 Ưu, nhược điểm ............................................................................................ 22 2.5 Kiến trúc mô hình WCF................................................................................ 22 2.6 Address......................................................................................................... 26 2.7 Binding ........................................................................................................ 26 2.8 Contract ........................................................................................................ 28 2.8.1 Các loại hợp đồng ........................................................................ 28 2.8.2 Các hình thức giao tiếp giữa Client và Services ........................... 29 2.9 Hành xử( Behavior) ...................................................................................... 34 2.10 Chanel Stack ............................................................................................... 35 2.11 Chanel ........................................................................................................ 37 2.12 Điều phối ( Dispatcher)............................................................................... 38 2.13 Instance Management ................................................................................ 39 2.13.1 Per-Call Service ......................................................................... 39 2.13.2 Per-Session Service ................................................................... 40 2.13.3 Singleton Service ....................................................................... 41 2.14 Hosting dịch vụ .......................................................................................... 41 2.14.1 IIS 5/6 Hosting .......................................................................... 42 2.14.2 Self Hosting ............................................................................... 42 2.14.3 Windows Activation Service...................................................... 43 2.14.4 Windows Service Hosting .......................................................... 43 2.15 Bảo mật trong WCF ................................................................................... 44 Phần III: Chương trình ứng dụng .......................................................................... 46 3.1 Khảo sát bài toán ......................................................................................... 46 3.2 Thiết kế hệ thống ......................................................................................... 49 3.3 Xây dựng chương trình ............................................................................... 50 3.4 Những chức năng đã thực hiện .................................................................... 57 3.5 Đề xuất cải tiến ........................................................................................... 59 Kết luận ................................................................................................................ 60 Tài liệu tham khảo ................................................................................................ 61 6 BẢNG DANH MỤC CÁC HÌNH VẼ Hình 1: Kiến trúc hướng dịch vụ SOA ............................................................. 10 Hình 2: Tin nhắn SOAP .................................................................................... 13 Hình 3: Các thành phần cơ bản trong WCF ....................................................... 17 Hình 4 Mô hình MSMQ ................................................................................... 20 Hình 5: Kiến trúc WCF .................................................................................... 22 Hình 6: Các thành phần tham gia gửi và nhận tin ............................................. 24 Hình 7: Service Layer và Messaging Layer ...................................................... 25 Hình 8: Mô hình Endpoint ................................................................................ 28 Hình 9: Các hình thức giao tiếp giữa Client và Service...................................... 29 Hình 10: Hình thức giao tiếp Request-Reply ..................................................... 30 Hình 11: Hình thức giao tiếp One- way ............................................................ 30 Hình 12: Hình thức giao tiếp Duplex ................................................................ 33 Hình 13: Channel Stack .................................................................................... 36 Hình 14: Channel Listener ................................................................................ 37 Hình 15: Channel Dispatcher ........................................................................... 39 Hình 16 Per-call ............................................................................................... 40 Hình 17: Tiến trình Per call .............................................................................. 40 Hình 18: Per- Session ....................................................................................... 41 Hình 19: Per- Singleton .................................................................................... 41 Hình 20: Quy trình dịch vụ Bizweb ................................................................... 47 Hình 21: Sơ đồ Use case .................................................................................. 49 Hình 22: Sơ đồ Class diagram ........................................................................... 50 Hình 23 Kiến trúc chương trình ........................................................................ 51 Hình 24: DMS gadget ...................................................................................... 57 Hình 25: Giao diện cập nhật hợp đồng ..............................................................58 7 DANH MỤC CÁC KÝ HIỆU VIẾT TẮT CHỮ VIẾT TẮT VIẾT ĐẦY ĐỦ API Application Programming Interface CNTT Công nghệ thông tin COM Component Object Model DCOM Distributed Component Object Model DKT DKT Technology Joint stock Company HTTP Hypertext Transfer Protocol MSMQ Microsoft Message Queuing MTOM Message Transmission Optimization Mechanism OOP Object Oriented Programing REST Representational State Transfer RMI Remote Method Invocation RPC Remote Procedure Call SOA Services Oriendted Architecture TCP Transmission Control Protocol UDDI Universal Description, Discovery, and Integration WCF Windows Communication Foundation WSDL Web Services Description Language XML Extensible Markup Language 8 LỜI NÓI ĐẦU Trước đây, việc phát triển một ứng dụng phân tán rất khó khăn khi đụng chạm đến nhiều vấn đề về cơ sở hạ tầng, ngôn ngữ lập trình và các kiến trúc phần mềm khác. Trong khi nhu cầu các doanh nghiệp lại muốn hạn chế tối đa chi phí phát triển phần mềm (chi phí nhân sự, vật chất và thời gian phát triển). Rất nhiều nhà cung cấp đã đưa ra các thiết bị công nghệ không đồng bộ về chuẩn, dẫn đến các khác biệt khi kết nối… Vậy, có giải pháp nào là mẫu số chung để giải quyết tất cả các vấn đề đó. Chúng ta đã quen thuộc với cách lập trình cấu trúc, lập trình hướng đối tượng, và ngày nay chúng ta có thêm lập trình hướng dịch vụ. Tất cả những gì chúng ta cần là có thể gọi một dịch vụ từ một nhà cung cấp nào đó mà không cần biết chi tiết công nghệ phía dịch vụ được xây dựng như thế nào. Đã có rất nhiều giải pháp để giải quyết các ứng dụng phân tán như COM, DCOM, .NetRemoting, Web services. Nhưng tất cả chúng đều chứa những ưu và nhược điểm riêng mà không thể giải quyết được các yêu cầu trọn vẹn của người dùng. Từ khi phát hành bản Net framework 3.0, Microsoft đã đưa ra giải pháp công nghệ để phát triển các ứng dụng phân tán, thống nhất các công nghệ hiện tại, tích hợp và phát triển thêm những tính năng mới, thành công nghệ WCF (Windows Communication Foundation). Nhận thấy đây là một công nghệ khá hay nhưng chưa thực sự ứng dụng nhiều trong các công ty phần mềm, trong giảng dạy đào tạo ở các trường đại học, cao đẳng tại nước ta. Với những lý do đó, đề tài “Tìm hiểu công nghệ WCF (Windows Communication Foundation) và ứng dụng quản lý công ty DKT” sẽ tập trung nghiên cứu về công nghệ WCF, các ưu nhược điểm chính, các khái niệm cơ bản nhất và ứng dụng công nghệ này vào phát triển chương trình quản lý nội bộ công ty cổ phần công nghệ DKT. Đề tài gồm các chương chính: Chương 1: Tổng quan về kiến trúc và lập trình hướng dịch vụ Chương 2: Tìm hiểu công nghệ WCF Chương 3: Xây dựng ứng dụng quản lý công ty DKT Mặc dù có nhiều cố gắng, song do kiến thức còn nhiều hạn chế nên luận văn chắc chắn không thể tránh khỏi những thiếu sót. Kính mong nhận được sự chia sẻ và những ý kiến đóng góp chân thành của các thầy cô và bạn bè đồng nghiệp để luận văn được hoàn thiện hơn. Tôi xin chân thành cảm ơn. 9 PHẦN I: TỔNG QUAN VỀ KIẾN TRÚC HƢỚNG DỊCH VỤ (SOA) 1.1 Giới thiệu bài toán Ngày nay, việc ứng dụng WCF trong giảng dạy, lập trình ở nước ta chưa nhiều. Trong khi đó, công nghệ WCF là công nghệ nền tảng thống nhất nhiều mô hình lập trình giao tiếp được hỗ trợ trong .NET 2.0 thành một mô hình duy nhất nhằm đáp ứng mô hình lập trình hướng dịch vụ. Với những tính năng vượt trội so với các công nghệ phân tán truyền thống, việc ứng dụng WCF sẽ mang lại các lợi ích rất lớn trong việc giảm chi phí phát triển phần mềm, thời gian, nguồn nhân lực và hiệu suất thực thi. Công ty DKT, là một công ty cổ phần chuyên ứng dụng phát triển các ứng dụng website thương mại điện tử, tin tức, thanh toán trực tuyến với các sản phẩm điển hình như: www.bizweb.vn (trang thương mại điện tử), www.baokim.vn (trang thanh toán trực tuyến), www.doanhnhan.net (báo điện tử dành cho doanh nhân), www.lamsao.com (trang giải đáp thắc mắc trong cuộc sống), www.bizmail.vn (trang Email Marketing, quảng bá sản phẩm qua email)… Hiện tại công ty bao gồm các phòng ban như: phòng hành chính- kế toán, nhân sự, kỹ thuật, kinh doanh, biên tập. Mỗi phòng ban đều có chức năng nhiệm vụ riêng. Việc quản lý nhân viên và các công việc của từng nhân viên, quy trình các dự án đối với một công ty phần mềm là rất khó khăn, vấn đề này càng phải đặt ra nếu không có một quy trình chung và sự quản lý đầu mối. Để giúp mọi người có một cái nhìn tổng quát về công nghệ WCF, giúp công ty DKT có thể quản lý được các vấn đề phát sinh trong khi quản lý nhân viên và các công việc nội bộ, tôi đã chọn đề tài “Tìm hiểu công nghệ WCF (Windows Communication Foundation) và ứng dụng quản lý công ty công nghệ DKT”. Các vấn đề chính cần giải quyết:  Tìm hiểu mô hình, kiến trúc hướng dịch vụ  Các công nghệ phân tán ra đời trước khi xuất hiện WCF  Chi tiết công nghệ WCF, bao gồm các vấn đề chính như: các khái niệm cơ bản của WCF, quy trình hoạt động giao tiếp giữa Client và Server, các vấn đề an ninh, bảo mật, quản lý lỗi…  Xây dựng chương trình dựa trên công nghệ WCF. Tìm hiểu các quy trình hoạt động của các phòng ban trong công ty DKT, chức năng nhiệm vụ từng nhân viên, các công việc chủ yếu trong một công ty công nghệ , từ đó xây dựng giải pháp, phát triển ứng dụng quản lý nội bộ. Trong chương trình này tôi sẽ áp dụng các công nghệ mới của Microsoft như: công nghệ ASP.NET 2.0, XMScripting , WCF, Gadget trên nền tảng VisualStudio 2008 và SQL Server 2005. 10 1.2 Lịch sử hình thành và tƣơng lai phát triển của kiến trúc hƣớng dịch vụ Tên gọi đầu tiên của lập trình hướng dịch vụ là “dịch vụ dựa trên hệ thống phân phối”. Về cơ bản, SOA là kỹ thuật phân hủy chức năng thành một tập hợp các dịch vụ tương thích có thể được truy cập thông qua các API mạng. Người ta thường nghĩ đây là một "ý tưởng mới", hình thành trong cuối những năm 90. Nhưng nó đã được nhiều người tìm hiểu bắt đầu từ đầu những năm 80[14]. Hình 1: Kiến trúc hướng dịch vụ SOA Dịch vụ là quá trình tiến hóa tiếp theo từ các component, SOA là cách tốt nhất để xây dựng các ứng dụng phân tán, nâng cao năng suất, khả năng bảo trì, mở rộng và tái sử dụng[5]. Dịch vụ có đặc trưng về ngôn ngữ, công nghệ (. NET FX, J2EE), các nền tảng (Windows), phiên bản (Major.Minor.Build.Revision). Giữa các dịch vụ có các phụ thuộc về tiêu chuẩn, giao thức (HTTP, MSMQ, IPC…), chính sách (giao dịch, độ tin cậy), hợp đồng (WSDL), tin nhắn (SOAP). SOA có các nguyên lý như: các ranh giới là rõ ràng, các dịch vụ được tự trị, dịch vụ chia sẻ lược đồ và hợp đồng, khả năng tương thích dựa trên chính sách[4]. 1.3 Khái niệm, đặc trƣng, tính chất của lập trình hƣớng dịch vụ Phần mềm đang ngày càng trở nên phức tạp quá mức và dường như vượt quá khả năng kiểm soát của các mô hình phát triển hiện có. SOA là kiến trúc phần mềm mới được kỳ vọng là chìa khóa giải quyết vấn đề phức tạp này[4]. SOA là viết tắt của Service Oriented Architechture - Kiến trúc hướng dịch vụ. SOA là một mẫu kiến trúc để xây dựng các hệ thống phân tán. Phân phát các chức năng dưới dạng dịch vụ và được người dùng cuối sử dụng vào ứng dụng của mình, hoặc được sử dụng để xây dựng một dịch vụ khác. SOA cho phép tạo ra các giải pháp dễ dàng, nhanh chóng thông qua việc tích hợp các dịch vụ đã được xây dựng sẵn. Dịch vụ là yếu tố then chốt trong SOA. Đó là các hàm chức năng (mô-đun phần mềm) thực hiện các quy trình nghiệp vụ. SOA là tập hợp các dịch vụ kết nối mềm dẻo với nhau, các ứng dụng có thể giao tiếp với nhau mà không cần biết các chi tiết kỹ thuật bên trong. SOA là cấp độ cao hơn của phát triển ứng dụng, chú trọng đến 11 quy trình nghiệp vụ và dùng giao tiếp chuẩn để che đi sự phức tạp kỹ thuật bên dưới[16]. SOA tách riêng phần thực hiện dịch vụ với giao tiếp gọi dịch vụ. Điều này tạo nên một giao tiếp nhất quán cho ứng dụng Client, sử dụng dịch vụ bất chấp công nghệ thực hiện dịch vụ. Thay vì xây dựng các ứng dụng đơn lẻ và đồ sộ, nhà phát triển sẽ xây dựng các dịch vụ tinh gọn có thể triển khai và tái sử dụng trong toàn bộ quy trình nghiệp vụ. Điều này cho phép tái sử dụng phần mềm tốt hơn, cũng như tăng sự linh hoạt vì nhà phát triển có thể cải tiến dịch vụ mà không làm ảnh hưởng đến ứng dụng Client sử dụng dịch vụ[16]. 1.4 Ƣu, nhƣợc điểm của lập trình hƣớng dịch vụ Ưu điểm quan trọng nhất của SOA là khả năng kết nối linh hoạt nhờ sự chuẩn hóa giao tiếp và tái sử dụng. Các dịch vụ có thể được sử dụng với trình khách chạy trên bất kỳ nền tảng nào và được viết với ngôn ngữ bất kỳ. SOA dựa trên 2 nguyên tắc thiết kế quan trọng: Mô-đun: Tách vấn đề lớn thành nhiều vấn đề nhỏ. Đóng gói: Che đi dữ liệu và lô-gic trong từng modul đối với truy cập từ ngoài. Rất nhiều hệ thống phần mềm được thực hiện quá phức tạp, chi phí phát triển và bảo trì cao, đặc biệt với các hệ thống phần mềm cao cấp. Các kiến trúc phần mềm đã cố gắng giải quyết nhưng độ phức tạp vẫn tiếp tục tăng và dường như vấn đề này đã vượt quá khả năng xử lý của các kiến trúc truyền thống. Điều này một phần do ngày càng xuất hiện nhiều công nghệ mới tạo nên môi trường không đồng nhất, một phần do yêu cầu trao đổi tương tác giữa các hệ thống phần mềm với nhau. Những yêu cầu truyền thống đặt ra đối với tổ chức CNTT vẫn còn, trong khi cùng lúc phải đáp ứng nhanh chóng các yêu cầu mới, đòi hỏi phải liên tục giảm chi phí, có khả năng sử dụng và tích hợp các thành phần mới... Tất cả đã tạo nên một áp lực nặng nề đối với các nhà phát triển phần mềm. Chúng ta đã có các kiến trúc như hướng đối tượng OOP, COM/DCOM, CORBA …và nhiều phương thức tích hợp ứng dụng nhanh và tốt hơn. Thế nhưng vẫn chưa có giải pháp nào hoàn chỉnh. Giờ đây, SOA đang được xem có thể đảm nhận trọng trách này và được kỳ vọng tạo nên cuộc cách mạng trong kiến trúc phần mềm. Ưu điểm: Hệ thống uyển chuyển và lâu dài . Dễ dàng và nhanh chóng tạo ra các xử l nghiệp vụ từ các dịch vụ đã có. Khả năng tương tác của các dịch vụ cao. Nhược điểm: Hệ thống phức tạp và khó miêu tả dữ liệu không cấu trúc trong header của tin nhắn. Lợi ích khi sử dụng SOA[1,2,4]  Độc lập hệ thống : dịch vụ không phụ thuộc vào hệ thống và mạng cụ thể  Khả năng tái sử dụng . 12  Khả năng hồi đáp thích nghi tốt và nhanh hơn để đáp ứng với sự thay đổi về yêu cầu giao dịch.  Cho phép dễ dàng triển khai chương trình, môi trường chạy và quản lý dịch vụ dễ dàng hơn.  Kiến trúc kết nối lỏng lẻo, cho phép dễ dàng tích hợp thành phần, chương trình, tiến trình hay những dịch vụ phức tạp từ những dịch vụ đơn giản  Cho phép Client tìm kiếm và kết nối với những dịch vụ động khác.  Những sự xác nhận và chứng minh của Client về tính năng bảo mật dựa trên giao tiếp dịch vụ tốt hơn cơ chế kết nối chặt chẽ. So sánh SOA và OOP[16]  SOA hỗ trợ việc kết nối lỏng lẻo các dịch vụ. OOP dựa nhiều trên các lớp được định nghĩa sẵn, kết quả là các đối tượng kết nối chặt chẽ với nhau  Hướng dịch vụ sử dụng các tin nhắn miêu tả thông tin về dịch vụ để thực hiện chức năng của mình, trong khi đó OOP lại sử dụng các hàm APIs để miêu tả các đối tượng của mình.  Phạm vi hoạt động của các dịch vụ trong SOA rộng lớn hơn là các đối tượng của OOP  SOA khuyến khích các dịch vụ được thiết kế phi trạng thái càng nhiều càng tốt còn OOP thì lại liên kết dữ liệu một cách logic từ đó tạo ra các đối tượng có trạng thái. Hỗ trợ việc kết nối lỏng lẻo các dịch vụ với nhau, còn OOP thì khuyến khích việc kế thừa các đối tượng, từ đó các đối tượng liên kết với nhau môt cách chặt chẽ. 1.5 RPC (Remoting Procedure Call) Thủ tục gọi hàm từ xa là một kỹ thuật tiến bộ cho quá trình kết nối từ Client đến Server để sử dụng các ứng dụng và dịch vụ. RPC cho phép Client có thể kết nối tới 1 dịch vụ sử dụng cổng động nằm ở một máy tính khác. Trong hệ thống mạng máy tính hiện nay có rất nhiều dịch vụ và ứng dụng sử dụng cơ chế kết nối RPC, ví dụ quá trình đồng bộ của các Domain Controller trong hệ thống Active Directory, hoặc MS Outlook kết nối tới MS Exchange Server[2]. 1.6 IDL IDL là một ngôn ngữ chuẩn dùng để mô tả giao diện với một thành phần. IDL đặc biệt hữu dụng khi gọi các thành phần trên máy tính khác thông qua RPC, có thể được chạy trên một xây dựng nền tảng khác nhau hoặc sử dụng một ngôn ngữ khác nhau và có thể không chia sẻ cùng một ngữ nghĩa cuộc gọi[4]. 13 1.7 SOAP(Simple Object Access Protocol) SOAP là một giao thức mới giống như HTTP-Get, HTTP-Post. Dựa trên nền tảng XML. SOAP là một trong những giao thức chuẩn cho việc xây dựng Web Services. Web Services phát triển trên ý tưởng RPC (Remoting Procedure Call), gọi thực hiện các hàm ở máy chủ phân tán trong hệ thống Internet. Một ứng dụng có thể yêu cầu một dịch vụ thông qua gửi và nhận các SOAP envelop. SOAP dựa trên việc nến tảng XML nên rất thích hợp cho môi trường phân tán[4]. SOAP là một đặc tả sử dụng các tài liệu XML theo dạng các thông điệp. Bản thân SOAP không định ra các ngữ nghĩa ứng dụng hoặc cách cài đặt chi tiết. SOAP cung cấp một cơ chế đơn giản và gọn nhẹ cho việc trao đổi thông tin có cấu trúc và định dạng giữa các thành phần trong một môi trường phân tán sử dụng XML. SOAP được thiết kế dựa trên những chuẩn nhằm giảm chi phí tích hợp các hệ thống phân tán xây dựng trên nhiều nền tảng khác nhau ở mức càng thấp càng tốt. Đặc tả về SOAP định nghĩa một mô hình trao đổi dữ liệu dựa trên 3 khái niệm cơ bản: các thông điệp là các tài liệu XML, chúng được truyền đi từ bên gửi đến bên nhận, bên nhận có thể chuyển tiếp dữ liệu đến nơi khác. Khái niệm cơ bản nhất của mô hình SOAP là việc sử dụng các tài liệu XML như những thông điệp trao đổi. Điều này có nhiều ưu điểm hơn các giao thức truyền dữ liệu khác. Các thông điệp XML có thể được tổng hợp và đọc với một bộ soạn thảo text đơn giản, ta có thể làm việc với XML trên hầu hết mọi nền tảng. Sau đây là một ví dụ về một thông điệp SOAP[2]. Hình 2: Thông điệp SOAP Khi trao đổi các thông điệp SOAP, có hai thành phần liên quan: bên gửi và bên nhận. Thông điệp sẽ được chuyển từ bên gửi sang bên nhận. Đây là ý niệm đơn giản nhất trong trao đổi thông điệp SOAP. Trong nhiều trường hợp, kiểu trao đổi này không cung cấp đủ chức năng. Nhưng đây là mô hình cơ bản, dựa trên đó sẽ phát triển các mô hình trao đổi phức tạp hơn. Một cấu trúc SOAP được định nghĩa gồm các phần: ,
, Envelop là thành phần gốc của một thông điệp SOAP, nó chứa các thành phần Header và Body. Thành phần Header là một cơ chế mở cho phép thêm các tính năng vào bên trong một thông điệp SOAP. Mỗi thành phần con của Header gọi là một Header Entry. Các Header Entry dùng để diễn giải, quy định một số ngữ nghĩa của thông điệp SOAP. Các ứng dụng có thể xử lý và định tuyến các thông điệp dựa trên thông tin header và thông tin bên trong thông điệp đó. Đây là ưu điểm mà các mô hình kiến trúc như DCOM, CORBA và RMI không có được, vì các protocol header của chúng phải được chỉ định chi tiết cho mỗi ứng dụng[2]. 14 1.8 WSDL (Web Service Description Language) Ngôn ngữ mô tả dịch vụ Web là một đặc tả trình bày chi tiết tiêu chuẩn một dịch vụ Web dựa trên SOAP. WSDL khi được kết hợp với những công cụ thích hợp, mà không cần biết dịch vụ Web đang tìm kiếm những gì; ứng dụng này có thể trích xuất những chi tiết đó từ tệp WSDL và cung cấp một giao diện chương trình sử dụng[4]. Một khách hàng muốn kết nối với một dịch vụ web có thể đọc WSDL để xác định hợp đồng có sẵn trên các dịch vụ web. WSDL tương tự ngôn ngữ mô tả cho giao diện (IDL) ở các dịch vụ web. Các thông tin từ các tài liệu WSDL thường được giải thích ở thời gian thiết kế để tạo ra một đối tượng proxy. Các khách hàng sử dụng đối tượng proxy trong thời gian chạy để gửi và nhận thông tin SOAP vào và ra từ các dịch vụ. WSDL định nghĩa một lược đồ XML dùng để mô tả cấu trúc các dịch vụ theo dạng XML. Nó cung cấp thông tin cho các hệ thống phân tán và cho phép các ứng dụng trao đổi với nhau một cách tự động. Trong khi SOAP tập trung vào việc trao đổi thông tin giữa bên yêu cầu và bên cung cấp thì WSDL mô tả dịch vụ được cung cấp bởi bên cung cấp và được xem như một công thức để phát sinh các thông điệp SOAP đến các dịch vụ[1,4]. Một tài liệu WSDL mô tả một Web Service như một tập các đối tượng trừu tượng gọi là các “ports” và “endpoint”. Tài liệu WSDL cũng định nghĩa bên trong nó những hành vi. Hành vi tương ứng với “operation” và dữ liệu tương ứng với “message”. Một tập các hành vi liên quan được nhóm lại vào trong một “contract” . Một ràng buộc kết nối (binding) chỉ định một giao thức mạng và đặc tả định dạng dữ liệu cho một contract cụ thể. Kế đến một address được định nghĩa bằng cách kết hợp một địa chỉ mạng với một binding. Nếu một Client có được một tài liệu WSDL và tìm thấy binding và địa chỉ cho mỗi port, nó có thể gọi các phương thức của dịch vụ theo đúng giao thức và định dạng dữ liệu đã đặc tả. Phần tử gốc của tất cả các tài liệu WSDL luôn là phần tử . Nó chứa bên trong sáu thành phần, chia thành hai nhóm : thông tin trừa tượng và thông tin cụ thể. Thông tin trừu tượng (types, messages, portype). Thông tin cụ thể (bindings, services). Các thành phần chứa những tham chiếu lẫn nhau. Sau đây là một ví dụ mẫu về một đặc tả WSDL[1,2]. 15 16 1.9 UDDI (Universal Description, Discovery and Integration) Về cơ bản UDDI là một nơi mà các tổ chức đăng ký và tìm kiếm các web service. Nó đóng vai trò như service broker cho phép người sử dụng dịch vụ tìm đúng nhà cung cấp dịch vụ cần tìm[4]. UDDI hỗ trợ chức năng: Thực hiện tìm kiếm, định vị những doanh nghiệp cung cấp dịch vụ hay sản phẩm theo phân loại vùng địa lý. Thông tin về một nhà cung cấp dịch vụ bao gồm địa chỉ, thông tin liên lạc và các định danh. Thông tin kỹ thuật (technical information) về web service mà doanh nghiệp cung cấp (như cách sử dụng dịch vụ được cung cấp). Để sử dụng đến các dịch vụ của UDDI, bản thân UDDI cung cấp một tập hàm API dưới dạng SOAP Web Service. Tập API được chia làm hai phần: Inquiry API dùng truy vấn và Publisher’s API dùng đăng ký. Phần API dùng để truy vấn bao gồm hai phần con: một phần dùng để tạo ra các chương trình cho phép tìm kiếm và duyệt thông tin trên một UDDI registry, phần còn lại dùng để xử lý lỗi triệu gọi. Thành phần xử lý chính là bộ đăng ký UDDI, đó là một file XML dùng để mô tả một thực thể kinh doanh kèm theo các web service đi cùng. Sử dụng các dịch vụ của UDDI, các doanh nghiệp đăng ký thông tin về những web service mà họ định cung cấp. Thông tin này đuợc thêm vào UDDI registry thông qua website hoặc sử dụng các công cụ lập trình sử dụng các dịch vụ theo đúng đặc tả[4]. 1.10 REST REST là một cách tiếp cận để nhận được nội dung thông tin từ một trang web bằng cách đọc một trang web có chứa một tập tin XML mô tả và bao gồm các nội dung mong muốn thay vì sử dụng các cơ chế phức tạp như CORBA, RPC hay SOAP để kết nối giữa các máy, HTTP đơn giản được sử dụng để thực hiện cuộc gọi giữa các máy. REST sử dụng HTTP cho tất cả bốn thao tác CRUD (Create / Read / Update / Delete)[2]. 17 PHẦN II: TỔNG QUAN CÔNG NGHỆ WCF 2.1 Lịch sử hình thành WCF là một API được dùng để thiết kế và triển khai các ứng dụng phân tán theo kiến trúc SOA. Được thiết kế theo nguyên tắc kiến trúc hướng dịch vụ để hỗ trợ các tính toán phân tán. Các dịch vụ được liên kết với nhau, chúng thường có một giao diện WSDL mà bất kỳ khách hàng WCF có thể biết và sử dụng các dịch vụ, không phân biệt nền tảng dịch vụ được lưu trữ . WCF thực hiện nhiều dịch vụ web tiên tiến (WS) tiêu chuẩn như WS-Addressing, WS-ReliableMessaging và WSSecurity[3,4]. WCF được tích hợp sẵn trong bản .NET Framwork 3.0 năm 2006. Với phiên bản của. NET Framework 3.5 vào năm 2007, Microsoft phát hành một bộ mã hóa thêm hỗ trợ cho các định dạng tuần tự JSON cho các nhu cầu AJAX cho các trang web. WCF là một thành phần cốt lõi của. NET Framework 3.0 (trước đây là WinFX) với Windows Vista, hỗ trợ Windows 2003, Windows XP cũng như phiên bản tương lai của Windows Server. Các API của WCF thống nhất các dịch vụ web ASMX., NET Remoting,… thành một mô hình lập trình duy nhất (trong khi đảm bảo khả năng tương tác). Hình 3: Các thành phần cơ bản trong WCF 2.2 Các công nghệ trƣớc 2.2.1 COM, DCOM 18 Microsoft phát triển COM cho phép các ứng dụng tương tác với nhau, thúc đẩy tái sử dụng. Lợi thế của việc sử dụng COM là các thành phần khác nhau được phát triển bằng các ngôn ngữ khác nhau có thể tương tác với nhau bằng cách sử dụng các tiêu chuẩn. Hầu hết các sản phẩm của Microsoft, bao gồm Microsoft Office, SQL Server, và thậm chí cả Windows, được dựa trên COM. COM cung cấp khả năng sử dụng lại ở các thành phần cục bộ, không được thiết kế để làm việc tốt với các thành phần từ xa. Để giải quyết vấn đề này, Microsoft đã phát triển DCOM. Về cơ bản DCOM là sự kết hợp của COM và giao thức mạng cho phép chạy một đối tượng COM ở một máy tính từ xa. DCOM là một giao thức độc quyền tiêu chuẩn của Microsoft để mở rộng COM, giúp nó có thể làm việc trong môi trường phân tán. DCOM còn hỗ trợ một số tính năng như độ tin cậy, an ninh, hiệu quả giao tiếp giữa các đối tượng COM trên các quy trình và máy móc khác nhau. DCOM có trước khi bùng nổ Internet. Do đó nó không bao giờ được xây dựng với Internet[4,7,8,9]. 2.2.2 .NET Remoting .NET Remoting là một kĩ thuật .NET giới thiệu từ .NET framework 1.1. Cùng với Webservice, .NET remoting là lựa chọn cho giải pháp xử lý tính toán từ xa, .NET Remoting là một kĩ thuật cho phép một đối tượng này truy xuất đến một đối tượng khác nằm ở các Application Domain khác nhau. Ta có thể sử dụng .NET Remoting đế gọi một chương trình hoặc một dịch vụ chạy trên một máy tính khác để xử lý một cái gì đó và trả kết quả tính toán lại[4,11]. DCOM dựa trên một tập giao thức mà không phải đối tượng nào cũng hỗ trợ và điều này khiến DCOM không chạy được trên những nền khác nhau. Ngoài ra, DCOM sử dụng nhiều cổng trong khi các cổng ấy thường bị chặn bởi tường lửa. Việc mở những cổng đó để nó hoạt động được không khó nhưng đó là một trong những phiền phức. .NET Remoting khắc phục những yếu kém của DCOM bằng cách hỗ trợ nhiều giao thức khác nhau. Về khía cạnh xử lý từ xa thì Web Services hoàn toàn tương tự như .NET Remoting. Thậm chí người ta có thể làm cho .NET Remoting trở thành 1 Web Services bằng cách host nó trong IIS. Web Services cho phép các ứng dụng có thể giao tiếp với nhau mà không phụ thuộc nền tảng, ngôn ngữ lập trình… Tuy nhiên Web Services không lưu lại bất kì trạng thái gì của lần gọi trước và nó cũng không biết gì về phía Client đang thực hiện request (stateless). Client và Services chỉ có thể trao đổi với nhau bằng các thông điệp SOAP. Những điểm sau đây là các điểm khác nhau chính giữa .NET Remoting và Web Serices, chúng cũng là những nhân tố để ta chọn lựa giữa 2 công nghệ này:  Web Services chỉ có thể được truy xuất qua HTTP còn .NET Remoting có thể được dùng trên nhiều giao thức khác nhau như TCP, HTTP.  Web Services là một môi trường stateless. Khi có một request từ phía Client, sẽ có một đối tượng mới được tạo ra để thực hiện request đó trên Server. Còn 19 .NET Remoting lại hỗ trợ nhiều lựa chọn và có thể thực hiện nhiều request từ một Client, đồng thời có hỗ trợ callbacks.  Web Services serialize các đối tượng thành XML bên trong tin nhắn SOAP, vì thế có thể truyền tải thông tin của bất cứ thành phần nào miễn có thể chuyển thành XML. Còn đối với .NET Remoting thì tùy giao thức và định dạng tin nhắn mà nó có thể truyền đi thông tin như thế nào. Ngoài ra theo như giới thiệu thì .NET Remoting có cho phép đối tượng được truyền vào theo cả kiểu tham chiếu( reference) và tham trị (value).  Web services có thể hoạt động trên các môi trường khác nhau trong khi .NET Remoting yêu cầu phía Clients phải là .NET Application, .NET Remoting dựa trên trên các tính toán phân tán dễ dàng bằng cách cung cấp một khả năng đơn giản, mở rộng mô hình lập trình, mà không làm giảm tính linh hoạt, khả năng mở rộng. Nó đi kèm với một thực thi mặc định của các thành phần như các kênh và giao thức, nhưng tất cả đều được cắm và có thể được thay thế bằng các tùy chọn tốt hơn mà không cần nhiều mã. Mặc dù. NET Remoting cung cấp hiệu năng tốt nhất và linh hoạt, nó cũng bị một số nhược điểm như: Nhƣợc điểm:  Hoạt động tốt nhất trong mạng nội bộ, nơi có toàn quyền kiểm soát việc triển khai, phiên bản, và thử nghiệm.  Thực tế, NET Remoting sở hữu độc quyền. NET và các ứng dụng liền mạch để trao đổi dữ liệu giữa hai ứng dụng NET.  Đòi hỏi phải có một bước nhảy vọt lớn giữa các chương trình ở mức cao và cơ sở hạ tầng.  Bị các vấn đề về chia tải bởi vì nó không phải đủ thông minh để phân chia công việc giữa các máy tính khác nhau. 2.2.3 Web services Với công nghệ phân tán hiện có, sẽ bị giới hạn về khả năng tương tác giữa các nền tảng. Nếu triển khai một ứng dụng COM qua tường lửa hoặc qua các bộ định tuyến thông minh, chúng ta sẽ tìm thấy một số khác biệt đáng kể. Hầu hết các công nghệ phân tán không được xây dựng để đối phó với các bức tường lửa và các router thông minh. Web services giải quyết những vấn đề này bằng cách dựa vào các tiêu chuẩn mở và các giao thức được chấp nhận rộng rãi. Web services không chỉ là một cách khác để tạo các ứng dụng phân tán. Việc phân biệt web services với các công nghệ phân tán khác là dựa vào các giao thức, dịch vụ web dựa trên các tiêu chuẩn web mở (SOAP, HTTP, XML). Các tiêu chuẩn mở được công nhận rộng rãi và được chấp nhận trên toàn ngành công nghiệp. Web services được thiết kế với khả năng tương tác và dễ dàng gọi từ nền tảng phi 20 Windows. Người ta thường nhầm lẫn giữa Web servies và .NET Remoting. Nhưng các Web services có một mô hình lập trình đơn giản hơn .NET Remoting. Webservices dựa trên đồ hình XML cho dữ liệu và NET Remoting dựa trên CLR. Có thể sử dụng NET Remoting để xây dựng các dịch vụ web nhưng WSDL được tạo ra bởi. NET Remoting không được sử dụng rộng rãi và có thể bị bỏ qua bởi một số Client. NET Remoting thích hợp cho việc tạo các thành phần được sử dụng bởi ứng dụng chạy trong môi trường NET. và Webservices tạo ra các thành phần có thể được truy cập bất kỳ ứng dụng kết nối qua Internet. 2.2.4 MSMQ Microsoft Message Queuing (MSMQ) là công nghệ tin nhắn không đồng bộ. Bất cứ khi nào có hai hay nhiều ứng dụng gửi tin nhắn cho nhau mà không cần phải biết kết quả ngay lập tức, chúng ta có thể được sử dụng MSMQ. MSMQ có thể giao tiếp giữa các máy từ xa, thậm chí qua internet. Hình 4: Mô hình MSMQ 2.3 Đặc trƣng, tính chất của WCF WCF không chỉ là một cách khác để tạo ra một giải pháp phân tán mà còn cung cấp một số lợi ích hơn những công nghệ trước nó. WCF bắt đầu với việc phát hành. NET. Microsoft ra mắt công nghệ này tại hội nghị phát triển năm 2003 tại Los Angeles, California. Cho thấy có ba thiết kế chính trong các mục tiêu của WCF[4,9,12].  Thống nhất các công nghệ hiện tại  Khả năng cộng tác trên nền tảng  Dịch vụ định hướng phát triển Thống nhất của các công nghệ hiện tại Thế giới đang tồn tại nhiều công nghệ phân tán khác nhau, mỗi công nghệ có một khái niệm, nhiệm vụ và vai trò riêng biệt. Bên cạnh đó, các công nghệ phân tán này dựa trên các mô hình lập trình khác nhau. Vấn đề này sẽ tác động đến các nhà phát 21 triển, những người phải tiếp tục học các API khác nhau khi xây dựng các thành phần phân tán khác nhau. Các tranh luận liên tục từ những năm 1990 giữa các công nghệ phân tán đã dẫn đến một cuộc tranh luận về những công nghệ tốt nhất cho phát triển ứng dụng phân tán trong dài hạn. Một trong những câu hỏi thú vị là, tại sao không chỉ có một công nghệ có thể được sử dụng trong tất cả các tình huống? WCF là giải pháp của Microsoft để phát triển ứng dụng phân phối cho ứng dụng. Nó tránh tham gia tất cả các khả năng của công nghệ phân tán và cho phép sử dụng một API trong sạch và đơn giản. Nói cách khác, WCF mang đến cho toàn bộ phân tán hiện có chồng dưới một mái nhà. Tất cả có chung trong một namespaces System.ServiceModel Khả năng tƣơng tác qua nhiều nền tảng Hầu hết các công ty phần mềm lớn đang phát triển phần mềm sử dụng giao thức độc quyền được kết chặt chẽ với một nền tảng cụ thể. Điều này sẽ làm các hệ thống này không tương thích với nhau. Khả năng liên kết hệ thống sẽ trở thành một nhu cầu quan trọng đối với một số lượng lớn của các tổ chức. Trong khi các ứng dụng cần phải tương hợp với nền tảng hiện có, doanh nghiệp cần hỗ trợ các ứng dụng được viết bằng ngôn ngữ lập trình khác nhau với các công nghệ khác nhau. Ngoài ra, các doanh nghiệp cần khả năng tương tác liền mạch trong toàn tổ chức. Như vậy, khả năng tương tác đã được một vấn đề lớn cho tất cả các nhà cung cấp phần mềm và họ muốn sử dụng một bộ các giao thức đã được chấp nhận rộng rãi. Các nhà lãnh đạo như Microsoft, IBM, BEA, và Sun đã thành lập các dịch vụ Web liên cường khả năng (WS-I) tổ chức, phát triển một bộ liên tục của thông số kỹ thuật, cho phép phần mềm liên tục giao tiếp với phần mềm khác chạy trên nền tảng khác nhau. Một trong những tính năng tuyệt vời của các chi tiết kỹ thuật WS-I là chúng rất đơn giản, nhỏ và dễ thực hiện. Được tự do lựa chọn những đặc điểm kỹ thuật cần thực hiện. Ví dụ, thực hiện WS-Security. Nó được chia thành nhiều lớp. Có một chữ ký kỹ thuật số trong một thông điệp SOAP và đặc điểm kỹ thuật khác nhau để gửi một tên người dùng và mật khẩu trong SOAP. Kiến trúc cốt lõi của một đặc tả dịch vụ web cho tất cả điều này là WSDL. Do đó, WCF là ngôn ngữ của bộ ứng dụng dịch vụ web mới nhất để đạt được khả năng tương tác trên nền tảng liên tục. WCF tương tác với các công nghệ khác nhau chạy trên nền tảng khác nhau với hệ điều hành không phải Windows. Thế giới kỹ thuật sẽ không nói chuyện bằng ngôn ngữ khác nhau, với WCF hệ thống đa dạng và không đồng nhất có thể cùng tồn tại như nhau. WCF Là một công cụ phát triển hƣớng dịch vụ WCF là mô hình lập trình đầu tiên được xây dựng để cung cấp dịch vụ rõ ràngđịnh hướng phát triển ứng dụng và định hướng kinh doanh. Định hướng dịch vụ không phải là một công nghệ mà thay vào đó là một khái niệm thiết kế. Định hướng dịch vụ sử dụng tốt nhất cho các ứng dụng phân tán hiện nay. Định hướng dịch vụ không phải là một khái niệm mới, mà nó đã được sử dụng một số năm. Một số dự án đã cố gắng thực hiện khái niệm về định hướng dịch vụ bằng cách tinh chỉnh các
- Xem thêm -

Tài liệu liên quan