Tìm hiểu công nghệ Web Services và xây dựng ứng dụng chat
Trang 1NHẬN XÉT CỦA GIÁO VIÊN
Trang 2
MỤC LỤC
MỤC LỤC 2
2
LỜI NÓI ĐẦU 2
4.1 Phân tích hệ thống 39
4.2 Thiết kế hệ thống 45
5.1 Kết quả tự đánh giá 52
5.2 Những kết quả thu hoạch được 53
5.3 Hạn chế 53
LỜI NÓI ĐẦU
Cùng với sự phát triển mạnh mẽ của các mạng diện rộng và đặc biệt là mạng Internet, con người đã và đang phát triển đã nhận thấy được những tiềm năng to lớn của việc khai thác mạng thông tin vào quá trình hoạt động kinh doanh của mình Các hoạt động như giải trí, văn hóa, thương mại dần được đưa lên mạng và ngày càng chứng tỏ tính hiệu quả của Internet trong việc chia sẻ thông tin Mạng Internet và các ứng dụng của nó như thương mại điện tử mới xuất hiện ở Việt Nam trong vòng một thập kỷ qua nhưng đã nhanh chóng chiếm được sự quan tâm của mọi người.
Ngày càng có nhiều người tận dụng khai thác Internet nhằm nâng cao hiệu quả kinh doanh và đã đạt được những kết quả không nhỏ, Chat qua mạng đã và đang
là hình thức trao đổi thông tin, giải trí cho tất cả những ai ham học hỏi, giao lưu, kết bạn vươn tới thành công một cách đơn giản, và ngày càng phổ biến Trên cơ sở nhận thức được vấn đề đó và các nhu cầu đòi hỏi của thị trường trong đợt thực hiện đề tài
môn thực tập tốt nghiệp 2 này nhóm chúng em tiến hành đề tài: “ Tìm hiểu công nghệ Web Services và xây dựng ứng dụng chat ”
Chúng em xin chân thành cảm ơn Cô Nguyễn Thị Hải Năng đã tận tình chỉ bảo,
hướng dẫn và đề xuất hướng giải quyết khi chúng em gặp khó khăn, giúp chúng em hoàn thành đề tài đúng tiến độ, có cơ hội được tìm hiểu công nghệ mới thuộc thế hệ
Trang 3web 2.0 , thu được những thành công nhất định, là tiền đề quan trọng cho những lần thực hiện đề tài tiếp theo Chúng em cũng tỏ lòng biết ơn đến các quý thầy, cô khoa Công Nghệ Thông Tin đã cung cấp những kiến thức tin học cần thiết để chúng em thực hiện đề tài.
Mong ước thì nhiều và mặc dù đã rất cố gắng nhưng do kinh nghiệm, khả năng, thời gian và vốn kiến thức có hạn nên đề tài vẫn còn nhiều khiếm khuyết Chúng em rất mong nhận được sự chỉ bảo, sự đóng góp ý kiến của các thầy cô giáo và bạn bè để
đề tài được hoàn thiện hơn Chúng em xin chân thành cảm ơn.
BẢNG GIẢI THÍCH TỪ VIẾT TẮT
Integration
Trang 4CHƯƠNG 1 TỔNG QUAN VỀ WEB SERVICE
1.1 Web Services là gì?
Microsoft, IBM và Sun Microsystems đang phát triển mạnh Web Services như
là một công nghệ tiếp theo cho phép người phát triển có thể tạo các đối tượng từ xa dễdàng Các công nghệ trước đây như COM+ và CORBA rất khó cài đặt mà chi phí bảotrì lại cao Hơn thế nữa, đối với trường hợp của CORBA thì nó quá đắt để mua bảnquyền hoạt động Lời hứa của Web Services là làm cho việc tạo các đối tượng từ xatrở thành hiện thực
Web Services đóng gói RPC (Remote Procedure Call – triệu gọi phương thức
từ xa) với XML để đóng gói dữ liệu Thiết kể của Web Services cũng được xem cáccạm bẫy của các công nghệ đối tượng từ xa kể ở trên và từ đó tìm ra giải pháp đểtránh
Dù việc sử dụng Web Services giải quyết được nhiều bài toán, tuy nhiên nócũng tạo ra không ít các bài toán khác Tiếp đến chúng ta sẽ tìm hiểu nhiều khái niệm
cơ bản như là các đối tượng, thư viện, lớp, đối tượng từ xa…
Lập trình hướng đối tượng được giới thiệu và hứa hẹn lại việc tái sử dụng mãnguồn trên nhiều hệ thống và kiến trúc Nhiều lập trình đã tiên đoán thậm chí là khôngcần tạo ra các đối tượng cho chính họ vì kho mã nguồn đã sở hữu các lớp cần thiết.Các nhà cung cấp thư viện thu được lợi từ việc này khi cung cấp các thư viện lớp thựchiện các chức năng cơ bản, ví dụ các thư viện thương mại của C++ chứa các cách thaotác chuẩn trên ngày và giờ Điều này giúp các các lập trình viên tiết kiệm đáng kể thờigian Khi các ngôn ngữ mới xuất hiện như Java và C# thì các chức năng cơ bản nàymặc nhiên là một phần của ngôn ngữ
Trang 5Tuy nhiên khái niệm một kho mã nguồn tập trung không phải lúc nào cũngđúng Ví dụ, các nghiệp vụ của các công ty luôn khác nhau, không thể có một kho tậptrung cho các loại mã như vậy Trong trường hợp này thì các thư viện thương mại chỉ
có thể cung cấp các chức năng cơ bản và các lớp tổng quát cần thiết, nhưng các thưviện này không thể chứa các nghiệp vụ vì đó là duy nhất cho công ty đó Các nghiệp
vụ nhất định như nghiệp vụ của ngân hàng cho phép các nhà cung cấp thư viện tạo racác gói thư viện vì luật của chính phủ đảm bảo các logic nhất định
Ban đầu các đối tượng chỉ có thể lập trình để chạy trên cùng một máy Ví dụnhư các tập tin DLL (Dynamic Link Library – Thư viện liên kết động) Các dll nàychứa thông tin cho các ứng dụng khác dùng tạo đối tượng
Do đó việc dùng các đối tượng từ xa là một các tuyệt vời để dùng lại mã nguồn
ở mức ứng dụng trên một máy cục bộ Nếu bạn đang trong 1 tập đoàn và bạn phải bảotrì hàng trăm ngàn máy trạm và các ứng dụng trên mỗi hệ thống, việc có những thưviện này trên mỗi hệ thống là một vấn đề đau đầu khi bảo trì Khi cần cập nhật thì mỗi
hệ thông trong tập đoàn phải cần cài đặt mã mới Các đối tượng từ xa là các đối tượngđược tạo ra ở trên một máy chủ trung tâm và có thể được truy cập thông qua mạng kể
cả Internet
Một đối tượng từ xa phải luôn sẵn sàng cho một chương trình thông qua mạnghoặc internet COM (Common Object Manifest), CORBA (Common Object RequestBroker Architecture), RMI (Remote Method Invocation), RPC (Remote ProcedureCall) dùng để gọi đối tượng từ xa Lời hứa của các phương thức này là cho phép ngườilập trình có thể thay đổi mã tại một nơi và tất cả các hệ thống và ứng dụng dùng cácphương thức này ngay lập tức được truy cập đến mã nguồn mới Điều bất lợi là khi
việc lập trình có lỗi thì tất cả hệ thống bấy giờ đều bị gặp lỗi
Cài đặt CORBA đòi hỏi một nỗ lực lớn và công ty phải trả một khoản phí đắt
để mua ORB (Object Request Broker – Môi giới yêu cầu cho đối tượng) Một ORB làthứ mà máy chủ cần cho ứng dụng để dùng các đối tượng từ xa Chỉ một tỷ lệ phầntrăm nhỏ các lập trình viên cài đặt CORBA trên nền tảng hàng ngày, và cũng rất khócho nhà quản lý thuê người hiểu rõ công nghệ này
COM và COM+ thì đưa ra các giải pháp đơn giản hơn cho các đối tượng từ xa.COM và COM+ chỉ hoạt động trên nền Windows, do đó nó không hoạt động trên cácnền khác như Unix và khác với hệ điều hành Windows Ngoài ra COM đòi hỏi một lậptrình viên có kỹ năng cao, hiểu rõ mọi thứ về công nghệ này Một lần nữa không dễdàng tìm ra người như thế
Trang 6Việc tìm kiếm các công nghệ đối tượng từ xa đơn giản khi sử dung và cài đặt đãđưa RMI và RPC vượt lên trước Đó là các hệ thống yêu cầu và phản hồi đơn giản màcác chức năng tương tự như một trang web phản hồi một yêu cầu từ một trình duyệt.Vấn đề nằm ở đây là việc cài đặt giữa các nhà cung cấp, do đó việc cài đặt phần mềmRPC từ nhà cung cấp này và các nhà cung khác không phải lúc nào cũng tương thíchnhau Một lần nữa khả năng tương thích trên các nền khác nhau lại ngăn cản công
nghệ đối tượng từ xa được chấp nhận rộng rãi.
1.2 Sự ra đời của Web Services và SOAP
Cuối thập niên 1990, Microsoft nhận ra được sự yếu kém của COM, COM+.Một trong những khía cạnh của đối tượng từ xa mà Microsoft cần là độc lập với nền để
có thể thành công, và vì các sàn phẩm của MS chỉ chạy trên hệ điều hành Windows,
họ cần một giải pháp sáng tạo Họ đã tạo ra chuẩn XML gọi là SOAP (Simple ObjectAccess Protocol – Giao thức truy cập đối tượng đơn giản) là sự kết hợp giữa tài liệuXML và một giao thức chuẩn có thể làm việc qua Internet Giao thức SOAP đượcdùng để truyền tải dữ liệu bao gồm SMTP (Simple Mail Transfer Protocol), FTP (FileTransfer Protocol) và HTTP (Hypertext Transfer Protocol) Các nhà phát triển thườngxem những giao thức này như là chồng các giao thức của Web Services
Microsoft mã nguồn mở công nghệ này bằng cách đưa nó cho W3C (WorldWide Web Consortium) W3C sẽ làm cho SOAP trở thành một chuẩn chính thức đểcác nhà cung cấp khác có thể bắt đầu tạo ra các công nghệ đối tượng từ xa tương tự vàtương thích với công nghệ của Microsoft Các sản phẩm của Web Services tồn tại trêncác nền khác như UNIX và AS400 cũng tương thích với các công nghệ của Microsoftchạy trên các phiên bản của hệ điều hành Windows Điều này đã xảy ra vì Microsoft
đã chọn các công nghệ chuẩn như XML và các giao thức đã tồn tại trên tất cả các nềnkhác
Trang 7Hình 1.1: Mô hình ứng dụng sử dụng các đối tượng từ xa
Điều quan trọng là nhận dạng điểm khác biệt giữa SOAP và một Web Services.SOAP thật sự là một giao thức để di chuyển dữ liệu trên Internet Một Web Services làmột đối tượng dùng SOAP để truyền tải dữ liệu đến một ứng dụng hoặc một trangweb
1.2.1 Các công nghệ nằm dưới Web Services
Như bất kỳ công nghệ XML nào, luôn có các công nghệ nằm bên dưới để kháiniệm Web Services nói chung hoạt động Chú ý: Web Services thật sự là một nút trênInternet thực hiện các loại chức năng và trả về kết quả
Các công nghệ nằm bên dưới cho phép bạn sử dụng một Web Services bao gồmgiao thức di chuyển dữ liệu qua Internet hay mạng (như HTTP) và SOAP Các côngnghệ khác cho phép bạn sử dụng và khám phá các Web Services gồm WSDL (WebServices Description Language – Ngôn ngữ mô tả Web Services) và UDDI (UniversalDiscovery, Description and Integration)
vị trí đặt mô tả Thường thì một tài liệu được tạo ra bởi các nhà phát triển và lưu hànhnội bộ với tất cả các lớp và phương thức Điều này vận hành tốt trong công ty Nhưngnếu các đối tượng này cần được chia sẻ qua Internet với hàng ngàn người khác nhauthì tài liệu là rất cần thiết để có thể hiểu được các lớp này Điều này có thể được thựchiện thông qua một trang web, nhưng đôi khi người dùng cần khám phá thông tin này,UDDI cung cấp một cách chuẩn để khám phá và mô tả các Web Services mà khôngcần sự can thiệp của con người
UDDI xuất hiện dưới hai vai trò Một trong những vai trò của nó, nó là mộtXML chuẩn mô tả nơi để tìm một Web Services cụ thể Ngoài ra có nhiều trang webkhác dùng UDDI để quảng cáo các Web Services có sẵn Một vài trang tìm kiếm WebServices thường gặp như www.uddi.org, www.xmethods.com và uddi.microsoft.com
Trang 81.2.2 Mô tả một Web Services cụ thể
Khi một ứng dụng hay trang web dùng một Web Services WSDL mô tả WebServices cho phía máy khách để có thể biết các lớp và phương thức cùng vị trí của nótrên internet WSDL là một ngôn ngữ dựa trên XML
WSDL đặc biệt quan trọng đối với các công nghệ từ Microsoft Một tập tin WSDLphải tồn tại cho một Web Services của Microsoft để cung cấp bất kỳ phương thức nào.Với vài công nghệ Java, đôi khi để dùng một Web Services thì chỉ cần biết URL củamột Web Services
1.2.3 Các hiện thực khác nhau của Web Services
Có hai nhóm hiện thực chính trong công nghiệp của Web Services
Đầu tiên là Microsoft Microsoft đã bắt đầu trước tiên vì những người phát triểnchuẩn SOAP và nguồn mở nó là thuộc Microsoft Microsoft đã đang phát triển cácngôn ngữ lập trình như C# và VB.NET để sở hữu một hiện thực Web Services củariêng mình
Tiếp theo là công nghiệp Web Services có liên quan đến Java, nhưng không chỉ
là Sun Microsystems, công ty tạo ra Java, triển khai các công nghệ Mà còn có nhiềunhà cung cấp khác như BEA, IBM, Cape Clear Software, Apache …
Điều quan trọng cần nhớ là không giống như các công nghệ trước, ví dụ RPC,thì các công nghệ nằm bên dưới dựa trên chuẩn XML Vì thế dù cho các chức năng cóthể khác nhau, nhưng việc sử dụng các công nghệ này hầu như đảm bảo sự tương thíchgiữa các nền với nhau
1.2.3.1 Hiện thực của Microsoft
Microsoft đã có một khởi đầu trước bằng việc tạo ra chuẩn SOAP, do đó cácphần mềm Web Services của công ty này rất dễ sử dùng và triển khai, Hiện tại côngnghệ này chỉ sẵn sàng trên nền Windows và trên nền NET do đó trong tương lai WebServices sẽ có trên các nền khác như Linux
Điểm lợi của Web Services khi đứng dưới ô che của nền Microsoft NET là dễdùng và triển khai Microsoft cũng cung cấp một số lượng lớn các công cụ để tạo và sử
Trang 9dụng Web Services rất dễ dàng, bao gồm cả việc phát sinh tự động WSDL, các công
cụ khám phá tìm kiếm như disco (công cụ dùng để tìm các máy chủ có các NET WebServices), các phương pháp tìm kiếm và thử nghiệm dựa trên trình duyệt, và dễ dàngtạo Web Services bằng các ngôn ngữ lập trình của Microsoft Thật ra, chỉ là việc thêmmột ít dòng thông tin mà không cần thêm một dòng mã nào để làm một phương thứctrở thành một Web Services
Dù dễ dùng và dễ triển khai, tất cả các công nghệ Web Services của Microsoftdựa trên Web Server riêng là IIS (Internet Information Service) Dù nó dễ triển khai vàcấu hình, nhưng nó cũng gặp phải các vấn đề bảo mật nghiêm trọng Vì thế bạn cầnphải theo dõi để cập nhật các bản vá lỗi bảo mật của Microsoft
1.2.3.2 Hiện thực của Java
Thế giới của Java thật sự đã bắt kịp Microsoft trong lĩnh vực Web Services.Hàng loạt sản phẩm bắt đầu được công bố BEA, Sun và IBM đang bắt đầu phát hànhngày càng nhiều các sản phẩm Web Services Ngoài ra nhóm Apache cung cấp mộtthư viện SOAP miễn phí tuyệt vời để truy cập đến Web Services Do đó các WebServices dựa trên Java đã thật sự được bắt kịp
Có rất nhiều điểm lợi khi dùng Web Services với Java Đầu tiên là có nhiều nhàcung cấp các hiện thực Web Services bằng Java Điều này cho phép có nhiều lựa chọnhơn khi hiện thực sản phẩm và cho phép dễ dàng tích hợp Web Services vào bất kỳkiến trúc nào có sẵn
Java Web Services làm việc với cả JSP và Servlet, và chọn lựa của một nhàphát triển cho các công nghệ này ưu tiên hơn của Microsoft Tomcat, một Java servermiễn phí dễ dàng tích hợp với Apache, miễn phí bởi nhóm Apache IBM Websphere,BEA Weblogic và Sun iPlanet là các web server thương mại cho phép một nhà pháttriển có thêm nhiều chọn lựa khi triển khai Web Services Điều này không giống vớihiện thực của Microsoft khi mà chúng ta bị khóa chặt vào một nền và chỉ một webserver
1.2.4 Các công nghệ khác
Không chỉ có Java và NET là các công nghệ cần đến Web Services Ngoài racòn có các sản phẩm của các hãng thứ ba cho phép tích hợp Web Services vớiCORBA, COBOL, C++ và các hệ thống có sẵn khác Bằng cách sử dụng Web
Trang 10Services với các hệ thống này, một công ty tiết kiệm không ít tiền bạc vì các hệ thống
có sẵn không cần thay thế Thay vì vậy bằng cách thêm Web Services vào các tầngtrên của những hệ thống này, thông tin của những hệ thống này có thể được truy cậpbởi các ứng dụng có dùng Web Services
Ví dụ, một ngân hàng dùng COBOL và họ cần website của mình kết nối đếncác hệ thống này, một Web Services ở tầng trên cho phép loại kết nối này Chi phí củaphần mềm tối thiểu khi so sánh việc thay thế các hiện thực có sẵn như là một hệ thốngtính tiền tại một công ty viễn thông lớn hoặc một phần mềm giao dịch tại một ngânhàng lớn Hình dưới đây minh họa một Web Services ở tầng trên một hệ thống có sẵncủa ngân hàng sử dụng COBOL kết nối đến một trang web dựa trên NET hoặc Java
Hình 1.2: Mô hình ngân hàng sử dụng COBOL và web services
SOAP là chữ viết tắt của cụm từ “Simple Object Access Protocol – Giao thức truy cậpđối tượng đơn giản”, nhưng với sự xem xét mới nhất thì, SOAP sẽ không còn là một từviết tắt nữa Chuẩn SOAP ghi nhận XML được thể hiện thế nào bên trong tài liệuSOAP, làm thế nào nội dung của thông điệp được truyền tải, và làm thế nào thông điệpđược xử lý ở cả hai phía gởi và nhận SOAP cũng cung cấp một tập các từ vựng chuẩn
Như bất kỳ công nghệ nào, SOAP cũng có tập các thuật ngữ của riêng nó Cónhiều thuật ngữ được sử dụng thường xuyên để mô tả các khía cạnh khác nhau củachuẩn SOAP Nhiều lập trình viên dùng các thuật ngữ này mà không thật sự hiểu ýnghĩa của nó Để hiểu thật sự các khái niệm đòi hỏi phải tốn một thời gian để hiểu ý
Trang 11nghĩa của từng thuật ngữ và làm thế nào để áp dụng cho cả chuẩn SOAP và một WebServices thực thụ
Chú ý: Chuẩn SOAP không chỉ là chuẩn XML mà chuẩn này còn bao gồm các thôngđiệp SOAP có hành vi như thế nào, các phương tiện vận chuyển khác nhau, cách màcác lỗi được xử lý
1.3 Vai trò của Web Service
Web service ra đời đã mở ra một hướng mới cho việc phát triển các ứng dụngtrên Internet Web services tạm dịch là các dịch vụ web Web services kết hợp sử dụngnhiều công nghệ khác nhau cho phép các ứng dụng được viết bằng các ngôn ngữ khácnhau, chạy trên các hệ nền khác nhau có thể trao đổi được với nhau thông qua môitrường mạng Internet Tuy nhiên những công nghệ sử dụng ở đây không nhất thiếtphải là những công nghệ mới Đây là điểm khác biệt của web services so với các côngnghệ khác, đó chính là khả năng kết hợp các công nghệ đã có như là XML, SOAP,WSDL, UDDI để tạo ra các service, đặc điểm này làm nổi bật vai trò của web services
1.4 Đặc điểm web service
Web service cho phép client và server tương tác được với nhau mặc dù trongnhững môi trường khác nhau (ngôn ngữ lập trình khác nhau, hệ nền khác nhau)
Web service được thiết kế mở và dựa vào các chuẩn: XML và HTTP là nềntảng kỹ thuật cho web service Bởi vậy, chúng độc lập với ngôn ngữ lập trình và
Web service có dạng module
Web service có thể công bố (publish) và gọi thực hiện qua mạng
…
Trang 12Ngày nay web services được sử dụng rất nhiều trong những lĩnh vực khác nhaucủa cuộc sống , như :
1 Dịch vụ chọn lọc và phân loại tin tức : là những hệ thống thư viện kết nối đếncác web portal để tìm kiếm các thông tin từ các nhà xuất bản có chứa những từkhóa muốn tìm
Dịch vụ hiển thị danh sách đĩa nhạc dành cho các công ty thu thanh.Ứng dụng đại lý du lịch có nhiều giá vé đi du lịch khác nhau do có chọn lựaphục vụ của nhiều hãng hàng không
Bảng tính toán chính sách bảo hiểm dùng công nghệ Excel/COM với giao diệnweb
2 Thông tin thương mại bao gồm nhiều nội dung, nhiều mục tin như: dự báo thờitiết, thông tin sức khoẻ, lịch bay, tỷ giá cổ phiếu,…
3 Những giao dịch trực tuyến cho cả B2B và B2C như: đặt vé máy bay, làm giaokèo thuê xe
4 Hệ thống thông tin dùng Java để tính toán tỷ giá chuyển đổi giữa các loại tiền
tệ Hệ thống này sẽ được các ứng dụng khác dùng như một web service
1.5 Kiến trúc web service
Kiến trúc của web service bao gồm các tầng như sau:
Hình 1.3: Các tầng của web service
Trong đó bao gồm các tầng :
Trang 13 Tầng vận chuyển với những công nghệ chuẩn là HTTP , SMTP và JMS
Tầng giao thức tương tác dịch vụ ( Service Communication Protocol) với côngnghệ chuẩn là SOAP SOAP là giao thức nằm giữa tầng vận chuyển và tầng mô
tả thông tin về dịch vụ, SOAP cho phép người dùng triệu gọi một service từ xathông qua một message XML
Tầng mô tả dịch vụ (Service Description) với công nghệ chuẩn là WSDL vàXML WSDL là một ngôn ngữ mô tả giao tiếp và thực thi dựa trên XML Webservice sử dụng ngôn ngữ WSDL để truyền các tham số và các loại dữ liệu chocác thao tác , các chức năng mà web service cung cấp
Tầng dịch vụ ( Service) :cung cấp các chức năng của service
Tầng đăng ký dịch vụ (Service Registry) với công nghệ chuẩn là UDDI UDDIdùng cho cả người dùng và ̣ SOAP server, nó cho phép đăng ký dịch vụ đểngười dùng có thể gọi thực hiện service từ xa qua mạng , hay nói cách khác mộtservice cần phải được đăng ký để cho phép các client có thể gọi thực hiện
Bên cạnh đó để cho các service có tính an toàn , toàn vẹn và bảo mật thông tintrong kiến trúc web service chúng ta có thêm các tầng Policy , Security ,Transaction , Management giúp tăng cường tính bảo mật , an toàn và toàn vẹnthông tin khi sử dụng service
…
1.6 Các thành phần trong Web Service
1.6.1 XML– Extensible Markup Language
XML do W3C đề ra và được phát triển từ SGML XML là một ngôn ngữ mô tảvăn bản với cấu trúc do người sử dụng định nghĩa Về hình thức XML có ký pháp tựanhư HTML nhưng không tuân theo một đặc tả quy ước như HTML.Người sử dụng haycác chương trình có thể quy ước định dạng các tag XML để giao tiếp với nhau.Thôngtin cần truyền tải được chứa trong các tag XML,ngoài ra không chứa bất cứ thông tinnào khác về cách sử dụng hay hiển thị những thông tin đó
Do web service là sự kết hợp của nhiều thành phần khác nhau , do đó webservices sử dụng các tính năng và đặc trưng của các thành phần này để giao tiếp vớinhau.Vì vậy XML là một công cụ chính yếu để giải quyết vấn đề này Từ kết qủa này ,các ứng dụng tích hợp vĩ mô tăng cường sử dụng XML.Nhờ có khả năng tổng hợp này
mà XML đã trở thành kiến trúc nền tảng cho việc xây dựng web service
Trang 14Web services tận dụng khả năng giải quyết vấn đề của các ứng dụng lớn trêncác hệ điều hành khác nhau cho chúng giao tiếp với nhau Yêu cầu này được đáp ứngvới lập trình với Java , một ngôn ngữ viết một lần sử dụng mọi nơi là một chọn lựathích hợp cho phát triển web services.
1.6.2 WSDL -Web Services Description Language
WSDL định nghĩa cách mô tả web service theo cú pháp tổng quát XML , baogồm các thông tin
- Tên ̣service
- Giao thức và kiểu mã hóa sẽ được sử dụng khi gọi các hàm của web service
- Loại thông tin: những thao tác, những tham số, và những kiểu dữ liệu gồm có giaodiện của web service, cộng với tên cho giao diện này
Một WSDL hợp lệ gồm có hai phần :
1 Phần giao diện mô tả giao diện và giao thức kết nối
2 Phần thi hành mô tả thông tin để truy xuất service
Cả 2 phần trên sẽ được lưu trong 2 tập tin XML , bao gồm:
- Tập tin giao diện service (cho phần 1)
- Tập tin thi hành service (cho phần 2)
Hình 1.4: Cấu trúc WSDL
1.6.2.1 Tập tin giao diện-Service Interface
WSDL mô tả 5 loại thông tin chính bao gồm : import , types , message ,
Trang 15Những định nghĩa message được sử dụng bởi phần tử thi hành service Nhiều thao tác
Có thể tham chiếu tới cùng định nghĩa message
Thao tác và những message được mô hình riêng rẽ để hỗ trợ tính linh hoạt và đơn giảnhóa việc tái sử dụng lại Chẳng hạn, hai thao tác với cùng tham số có thể chia sẻ một định nghĩa message
c.Kiểu cổng (port type):WSDL mô tả cách gửi và nhận thông điệp.
WSDL định nghĩa bốn kiểu thao tác mà một cổng có thể hỗ trợ :
- One-way : cổng nhận một message, message đó là message nhập
- Request-response : cổng nhận một message và gửi một message phản hồi
- Solicit-response: cổng gửi một message và nhận về một message
- Notification: cổng gửi một message, message đó là message xuất.Mỗi kiểu thao tác có cú pháp biến đổi tùy theo: thứ tự của các message nhập, xuất vàlỗi
Ví dụ:
<wsdl:operation name="nmtoken" parameterOrder="nmtokens">
<wsdl:input name="nmtoken"? message="qname"/>
<wsdl:output name="nmtoken"? message="qname"/>
<wsdl:fault name="nmtoken" message="qname"/>*
Trang 16- Những giao thức mở rộng cho những giao tác và những message bao gồm thông tinURN và mã hóa cho SOAP.
- Mỗi một kết hợp tham chiếu đến một loại cổng; một kiểu cổng (portType) có thể ược sử dụng trong nhiều mối kết hợp Tất cả các thao tác định nghĩa bên trong kiểucổng phải nằm trong phạm vi mối kết hợp
đ-1.6.2.2 Tập tin thi hành-Service Implementation
WSDL mô tả 2 loại thông tin chính bao gồm : service và port
a.Dịch vụ (Service) : Nó sẽ thực hiện những gì đã được định nghĩa trong tập tin giao
diện và cách gọi web service theo thủ tục và phương thức nào
1.6.3 WSDL API
WSDL4J là một dự án nguồn mở , hiện tại có một WSDL Java API được gọi làWSDL4J Bộ WSDL4J cung cấp cho chúng ta các hàm API để thực hiện việc tạoWSDL dễ dàng hơn so với cách sử dụng trực tiếp cú pháp theo dạng tag như trên.Têngói chứa các API này là javax.wsdl
1.6.4 UDDI – Universal Description, Descovery and Intergration.
Trang 17Để có thể sữ dụng các dịch vụ , trước tiên client phải tìm dịch vụ , ghi nhậnthông tin về cách sử dụng dịch vụ và biết được đối tượng cung cấp dịch vụ UDDIđịnh nghĩa một số thành phần cho biết trước các thông tin này để cho phép các clienttruy tìm và nhận lại những thông tin yêu cầu sử dụng web services.
Cấu trúc UDDI:
Cấu trúc UDDI gồm các thành phần:
i) Trang trắng -White pages : chứa thông tin liên hệ và các định dạng chính yếu của
web services , chẳng hạn tên giao dịch , địa chỉ ,… Những thông tin này cho phép cácđối tượng khác xác định được service
ii) Trang vàng -Yellow pages : chứa thông tin mô tả web services theo những chủng
loại khác nhau Những thông tin này cho phép các đối tượng thấy web services theotừng chủng loại của nó
iii) Trang xanh -Green pages: chứa thông tin kỹ thuật mô tả các hành vi và các chức
năng của web services Các đối tượng dựa vào đặc điểm của web services để tìm kiếm
iv) Loại dịch vụ - tModel : chứa các thông tin về loại dịch vụ sử dụng.
Những UDDI registry hiện có:
- UDDI Business Registry: bộ đăng ký được bảo trì bởi Microsoft, IBM đặc điểm của
bộ đăng ký này là nó phân tán về mặt vật lý
- IBM Test Registry: bộ đăng ký cho những người phát triển để thử nghiệm công nghệ
và kiểm tra những service của họ
- Private registries IBM ships: bộ đăng ký UDDI cá nhân
1.6.5 SOAP- Simple Object Access Protocol.
Đến đây chúng ta đã hiểu được web services là như thế nào , nó được công bố
và truy xuất ở đâu.Nhưng chúng ta vẫn còn một vấn đề khá quan trọng đó là : làm thếnào chúng ta truy xuất dịch vụ khi tìm thấy ? Câu trả lời là web servicves có thể truyxuất bằng một giao thức là Simple Object Access Protocol – SOAP Nói cách khácchúng ta có thể truy xuất đến UDDI registry bằng các lệnh gọi hoàn toàn theo kiểuSOAP
SOAP là một giao thức giao tiếp có cấu trúc như XML và mã hóa thành địnhdạng chung cho các ứng dụng trao đổi với nhau Ý tưởng bắt đầu từ Microsoft và phầnmềm Userland , trải qua nhiều lần thay đổi , hiện tại là phiên bản SOAP 1.2 với nhiều
ưu điểm vuợt trội hơn bản SOAP 1.1 SOAP được xem như là cấu trúc xương sống củacác ứng dụng phân tán xây dựng từ nhiều ngôn ngữ , hệ điều hành khác nhau
Trang 181.6.6 Đặc trưng SOAP
SOAP có những đặc trưng sau:
- SOAP được thiết kế đơn giản và dễ mở rộng
- Tất cả các message SOAP đều được mã hóa sử dụng XML
- SOAP sử dụng giao thức truyền dữ liệu riêng
- Không có garbage collection phân tán , và cũng không có cơ chế tham chiếu.Vì thếSOAP client không giữ bất kỳ một tham chiếu đầy đủ nào về các đối tượng ở xa
- SOAP không bị ràng buộc bởi bất kỳ ngôn ngữ lập trình nào hoặc công nghệ nào
Vì những đặc trưng này, nó không quan tâm đến công nghệ gì được sử dụng đểthực hiện miễn là người dùng sử dụng các message theo định dạng XML Tương tự,service có thể được thực hiện trong bất kỳ ngôn ngữ nào, miễn là nó có thể xử lý đượcnhững message theo định dạng XML
1.6.7 Cấu trúc một message theo dạng SOAP
Cấu trúc một message theo dạng SOAP được mô tả như hình dưới đây:
Hình 1.5: Cấu trúc message SOAP
Message theo dạng SOAP là một văn bản XML bình thường bao gồm cácphần tử sau:
- Phần tử gốc - envelop : phần từ bao trùm nội dung message , khai báo văn bản XMLnhư là một thông điệp SOAP
- Phần tử đầu trang – header : chứa các thông tin tiêu đề cho trang , phần tử này khôngbắt buộc khai báo trong văn bản Những đầu mục còn có thể mang những dữ liệuchứng thực, những chữ ký số hóa, và thông tin mã hóa, hoặc những cài đặt cho giaotác
Trang 19- Phần tử khai báo nội dung chính trong thông điệp - body , chứa các thông tin yêu cầu
và phản hồi
- Phần tử phát sinh lỗi (Fault) cung cấp thông tin lỗi xảy ra trong qúa trình xử lý thôngđiệp
Trong trường hợp đơn giản nhất, phần thân của SOAP message gồm có:
- Tên của message
- Một tham khảo tới một thể hiện service
- Một hoặc nhiều tham số mang các giá trị và mang các tham chiếu Có 3 kiểu thôngbáo
Request messages: với các tham số gọi thực thi một service
Response messages với các tham số trả về, được sử dụng khi đáp ứng yêu cầu.Fault messages báo tình trạng lỗi
1.6.8 Những kiểu truyền thông
SOAP hỗ trợ 2 kiểu truyền thông khác nhau
- Remote procedure call (RPC): cho phép gọi hàm hoặc thủ tục qua mạng Kiểu nàyđược khai thác bởi nhiều web service và có nhiều trợ giúp
- Document: được biết như kiểu hướng message : kiểu này cung cấp một lớp thấp của
sự trừu tượng hóa và yêu cầu người lập trình nhiều hơn khi làm việc
Các định dạng message, tham số, và lời gọi đến các API thì tương ứng trongRPC và document là khác nhau Nên việc quyết định chọn cái nào tùy thuộc vào thờigian xây dựng và sự phù hợp của service cần xây dựng
1.6.9 Mô hình dữ liệu
Mục đích của mô hình dữ liệu SOAP là cung cấp những một sự trừu tượng hóa
độc lập ngôn ngữ cho kiểu ngôn ngữ lập trình chung Nó gồm có :i) Những kiểu XSD đơn giản như những kiểu dữ liệu cơ bản trong đa số các ngôn ngữlập trình như int, string, date,
ii) Những kiểu phức tạp, có 2 loại là struct(cấu trúc) và array(mảng)
Tất cả các phần tử và những định danh có trong mô hình dữ liệu SOAP thì được địnhnghĩa bằng namespace(không gian tên) SOAP-ENC
1.6.10 Mã hóa
Trang 20Trong những môi trường tính toán phân tán, mã hóa định nghĩa làm sao giá trịcủa dữ liệu trong ứng dụng có thể được dịch từ khuôn dạng nghi thức Khuôn dạngnghi thức cho những web service là XML, giả sử ở đây chúng ta giả thiết rằng servicerequestor và service provider phát triển trong Java Vì vậy, mã hóa SOAP là trong môitrường thực thi để làm thế nào chuyển đổi từ cấu trúc dữ liệu Java sang SOAP XML
và ngược lại Một ánh xạ định nghĩa là mối quan hệ giữa một phần tử XML, một lớpJava, và một trong những loại mã hóa giới thiệu ở trên.Một ánh xạ chỉ rõ làm cách nào, để khi đã mã hóa mà một phần tử XML đầu vào vẫnchuyển đổi được tới một lớp Java và ngược lại.Chúng ta quan tâm tới hai phương h-ướng ánh xạ là XML tới Java và Java tới XML Bất kỳ môi trường thực thi SOAP nàocũng phải có một bảng chứa những mục ánh xạ, gọi là SOAPMappingRegistry
Nếu một kiểu dữ liệu được giả thiết sẽ được sử dụng dưới một loại mã hóanhất định, thì một ánh xạ tương ứng phải tồn tại trong bộ đăng ký (registry) của môitrường thực thi SOAP đó Đa số các kiểu Java chuẩn cũng như JavaBeans đều mặcđịnh là được hỗ trợ
Những kiểu dữ liệu không chuẩn (do tự định nghĩa) thì cần ánh xạ trên cảserver và client
1.6.11 Kết luận
Để tạo một web service chúng ta cần xây dựng các tầng cần thiết trong kiến trúcweb service hay nói cách khác là xây dựng và thiết lập các thành phần trong các tầng
đó , cụ thể là các thành phần SOAP , WSDL , UDDI , XML , trong đó :
- SOAP là giao thức nằm giữa tầng vận chuyển và tầng mô tả thông tin về dịch vụ,SOAP cho phép người dùng triệu gọi một service từ xa thông qua một message XML
- WSDL là một ngôn ngữ mô tả giao tiếp và thực thi dựa trên XML Web service sửdụng ngôn ngữ WSDL để truyền các tham số và các loại dữ liệu cho các thao tác , cácchức năng mà web service cung cấp
- UDDI dùng cho cả người dùng và ̣ SOAP server, nó cho phép đăng ký dịch vụ đểngười dùng có thể gọi thực thi các hàm , các chức năng của web service hay nói cáchkhác một service cần phải được đăng ký để cho phép các client có thể gọi thực hiện
- Bên cạnh đó chúng ta cũng phải quan tâm đến việc làm sao để cho các service có tính
an toàn , toàn vẹn và bảo mật thông tin trong web services nhất là các service liên quan
Trang 21đến giao dịch thương mại và tài chính.Chúng ta sẽ tìm hiểu nội dung này trong cácphần tiếp theo.
Sơ đồ dưới đây cho chúng ta thấy rõ hơn về các thành phần cần thiết trong mộtweb service và mối quan hệ giữa các thành phần
Hình 1.6: Các thành phần cần thiết trong một web service
và mối quan hệ giữa các thành phần
1.7 Sự truyền tải dữ liệu và các thuật ngữ liên quan đến XML
1.7.1 Sự truyền tải dữ liệu
1.7.1.1 SOAP Binding
Thuật ngữ mô tả làm thế nào một thông điệp SOAP tương tác được với mộtgiao thức vận chuyển như HTTP, SMTP hay FTP để di chuyển trên Internet Điềuquan trọng là SOAP di chuyển bằng một giao thức chuẩn để liên lạc với các sản phẩmWeb Services khác
Trước SOAP, nhiều người phát triển đã tạo ra các phương pháp của riêng họ đểchuyển tải một tài liệu XML trên mạng Các cách này vẫn hoạt động tốt trong phạm vimột nhóm cụ thể Tuy nhiên khi bạn cần làm việc với một nhóm khác ở trong hay bênngoài công ty thì điều này trở nên khó khăn vì phải huấn luyện và có thể thay đổi đểlàm việc với việc truyền tải tài liệu XML mà họ đang sử dụng Bằng cách sử dụng mộttài liệu XML chuẩn trên các giao thức chuẩn, công việc cần làm khi cộng tác với nhau
sẽ được giảm thiểu tối đa
1.7.1.2 SOAP Message Exchang Pattern (MEP)
Trang 22Thuật ngữ mô tả làm thế nào mà một tài liệu SOAP trao đổi giữa phía máykhách và chủ Thông điệp SOAP sở hữu một liên kết, như là HTTP, để nó có thểtruyền trên Internet Việc nói chuyện giữa máy khách và chủ, ở đây là các nút, xácđịnh các hành động mà cả hai phía thực hiện.
Nhắc lại SOAP là một XML đóng gói RPC Vì thế, MEP hoàn toàn là yêu cầu
và phản hồi giữa máy khách và chủ (hay các nút khác) Như vậy nếu có nhu cầu liênlạc giữa các nút thì việc này được thực hiện bằng nhiều yêu cầu và phản hồi để hoàntất việc truyền thông điệp Cách này khác hẳn với các công nghệ đối tượng từ xa khácnhư CORBA, công nghệ đó được thực hiện chỉ trong một kết nối
1.7.1.3 SOAP Application
Một ứng dụng SOAP đơn giản là một ứng dụng dùng SOAP theo một vài cáchkhác nhau Vài ứng dụng hoàn toàn dựa trên chuẩn SOAP, như là Web Services cổphiếu, hoặc dùng chuẩn SOAP để nhận mã và các cập nhật của phần mềm Chú ý làmột ứng dụng có thể tạo, sử dụng hoặc là nút trung gian của Web Services
1.7.1.4 SOAP Node
Trách nhiệm của một nút có thể bao gồm gởi, nhận, xử lý hoặc truyền tải lạimột thông điệp SOAP Một nút chỉ là một phần nhỏ của phần mềm, xử lý một tài liệuSOAP phụ thuộc vào vai trò của nó Bên cạnh việc truyền dữ liệu, một nút có tráchnhiệm đảm bảo thông tin XML trong tài liệu SOAP phải đúng ngữ pháp theo chuẩnSOAP
Trang 231.7.1.9 Message Path
Một thông điệp SOAP di chuyển từ phía bên gởi đến phía bên nhận thông điệpthông qua nhiều nút trung gian Tuyến đường đi của thông điệp được gọi là mộtMessage Path
1.7.1.10 Initial SOAP Sender
Nút gởi yêu cầu SOAP đầu tiên là nút gởi SOAP ban đầu
1.7.1.11 SOAP Feature
Một đặc điểm SOAP là một phần chức năng của phần mềm hỗ trợ chức năngSOAP
1.7.2 Các thuật ngữ liên quan đến XML
Chuẩn SOAP cũng định nghĩa một tập nhỏ các phần tử XML để đóng gói dữliệu được truyền giữa các nút Thật sự chỉ có vài phần tử vì phần thân của thông điệp
có thể khác nhau phụ thuộc vào cài đặt Sự uyển chuyển này được cho phép bởi chuẩnSOAP
1.7.2.1 SOAP Message
Đây là tài liệu XML được truyền bởi một nút SOAP gởi hoặc nhận Một nút gởihoặc nút khách tạo ra một tài liệu XML chứa thông tin mà phía bên khách cần từ phía
Trang 24chủ Một khi tài liệu được truyền, phía bên chủ phân giải thông tin trong tài liệu đểtruy xuất các giá trị khác nhau và tạo một thông điệp SOAP mới để phản hồi.
1.7.2.4 SOAP Header Block
Phần đầu của SOAP chứa nhiều phần giới hạn hay là nhiều khối thông tin cómột khối thông tin của phần đầu Những khối thông tin của phần đầu này chứa thôngtin về các nút trung gian vì một nút cần biết nút kế tiếp để thông điệp được gởi đến
1.7.2.5 SOAP Body
Phần thân của SOAP thật sự chứa thông tin của đối tượng để xử lý thông tin.Phần thân sau khi được phân tách sẽ trở thành đối tượng Đối tượng xử lý thông tin vàkết quả được đặt trong phần thân của tài liệu trả về
1.7.2.6 SOAP Fault
Đây là một phần thông tin của SOAP chứa thông tin đến bất kỳ lỗi gì xảy ra tạimột nút SOAP
Trang 25CHƯƠNG 2 XÂY DỰNG WEB SERVICE
- Giai đoạn tiến hành bao gồm tìm kiếm và gọi thực thi web service
- Giai đoạn quản lý bao gồm quản lý và quản trị ứng dụng web service
2.2 Xây dựng Web Service
2.2.1 Các giai đoạn trong quá trình xây dựng web service.
Chu trình xây dựng một Web service bao gồm các bước chung phải có để tạo ramột web service mới
Trong thời gian xây dựng này, web service phải chuyển qua những trạng tháikhác nhau
Hình 2.1: Những trạng thái của web service trong thời gian xây dựng
2.2.1.1 Giai đoạn xây dựng
Trang 26Giai đoạn đầu tiên khi chúng ta tạo ra một web service là giai đoạn xâydựng.Có hai cách khác nhau để tiến hành trong giai đọan xây dựng:
- Red path - solod : chúng ta xây dựng từ trạng thái ban đầu hoặc đã có sẵn bằng mãJava Sử dụng mã Java đó, chúng ta xây dựng định nghĩa service (WSDL) với các đốitượng, hàm, chức năng mà chúng ta mong muốn
- Blue path –dashed : chúng ta xây dựng từ đầu hoặc đã có một định nghĩa dịch vụWSDL Sử dụng WSDL này, chúng ta xây dựng hoặc sửa đổi lại mã Java để thực hiệncác yêu cầu trong web service của chúng ta
2.2.1.2 Giai đoạn triển khai
Giai đoạn thứ hai của một web service là giai đoạn triển khai.Trong giai đoạnnày chúng ta triển khai web service tới một application server Sau đó, chúng ta công
bố (publish) web service để các client có thể tìm thấy Thao tác ̣ công bô nàý có thể sửdụng UDDI registry Ngoài ra trong một web service, chúng ta cũng có thể kết hợp tất
cả các phương thức đã được công bố trước đó,
2.2.1.3 Giai đoạn tiến hành
Giai đoạn thứ ba là giai đoạn tiến hành Trong giai đoạn này web service đượcthực thi và được gọi bởi những người dùng muốn sử dụng dịch vụ
2.2.1.4 Giai đoạn quản lý
Giai đoạn cuối cùng là giai đoạn quản lý Nó bao trùm tất cả các nhiệm vụ quản
lý và quản trị ứng dụng web service
2.2.2 Các hướng tiếp cận trong xây dựng web service
Trong phần này, chúng ta mô tả những cách khác nhau để tạo ra một webservice Có ba cách tiếp cận chủ yếu, một web service có thể được thực hiện từ:
- Một ứng dụng hiện hữu (bottom-up)
- Một định nghĩa dịch vụ hiện hữu, WSDL, để phát sinh một ứng dụng mới down)
(top Một nhóm hiện hữu các web service hiện có kết hợp lại để tạo ra các tính năng mớihoặc mở rộng cho các tính năng hiện có
2.2.2.1 Bottom-up
Trang 27Bottom-up là cách tiếp cận chung nhất để xây dựng một Web service Chúng tabắt đầu với một ứng dụng đã tồn tại, và từ đó xây dựng thành một web service
Hình 2.2: Tiếp cận Bottom-up
2.2.2.2 Top-down
Cách tiếp cận top-bottom thường sử dụng khi chúng ta đã có một định nghĩadịch vụ trước đó và chúng ta muốn sử dụng định nghĩa này để cung cấp các chức năngtrong service chúng ta cần xây dựng
Định nghĩa dịch vụ có thể là một thoả thuận trong lĩnh vực công nghiệp và đượcthực thi bởi một số nhà cung cấp, ví dụ như là một nhóm các sân bay thoả thuận vàthống nhất với nhau về kế hoạch bay của họ Trong trường hợp này , chúng ta có mộtđịnh nghĩa dịch vụ về kế hoạch bay, và khi đó từ định nghĩa dịch vụ này chúng ta sẽxây dựng một web service để cung cấp các chức năng cho phép truy xuất thông tin về
kế hoạch bay, và cung cấp cho người dùng
Hình 2.3: Tiếp cận Top-down
Quá trình xây dựng một web service theo hướng tiếp cận này có thể chia thành cácbước sau:
- Tạo giao diện cho service : chúng ta cụ thể hóa định nghĩa dịch vụ sao cho để có thể
dễ dàng cho việc tạo WSDL Sau đó chúng ta tạo định nghĩa các thông tin mô tả vềdịch vụ (WSDL) , bao gồm: tên dịch vụ , giao thức và kiểu mã hóa sẽ được sử dụng ,những thao tác, những tham số, và những kiểu dữ liệu gồm có của web service, sau đó