Thứ Bảy, 23 tháng 8, 2014

Rest Architecture & Restful Webservice

1.Giới thiệu :

- Trên giao diện web thường dùng phương thức HTTP để làm việc. HTTP dùng để trao đổi thông tin giữa client và server.
- Những công nghệ web chuẩn: SOAP, WSDL, XML, URL.
- Để phát triển web service có 2 cách tiếp cận:
     + Standards-based: dựa trên SOAP
     + REST-based : đơn giản hơn SOAP, coi web service là tài nguyên trên HTTP.

2.REST :

-Là 1 bộ những hướng dẫn và áp dụng trong việc thiết kế trên môi trường mạng.
-REST không phải là giao thức chuẩn.

3.Đặc điểm: 

-Có client, server : Client sẽ gửi thông tin lên server, và server sẽ trả kết quả về cho client.
-Có stateless: Client gửi toàn bộ thông tin lên server để server có thể nhận biết client là ai để trả về toàn bộ thông tin cần thiết. Sau khi xử lý xong, server sẽ quên ngay lập tức.
-Có cache :Client có thể giữ lại thông tin mà server trả về.
-Code on demand: Server sẽ chuyển code về client.
-Có phân tầng.

4.RESTful web service :

-Dựa trên Rest
-Dựa trên giao thức HTTP
-Không phụ thuộc vào nền tảng và ngôn ngữ
-Client gửi thông tin lên server thông qua HTTP request và server trả kết quả về dựa trên HTTP response


5.Bộ thư viện JAX-RS :

-Là 1 bộ thư viện chính trong Java EE
-Dựa trên annotation

Nhận xét:

-Giúp giảm tải công việc và chạy ứng dụng nhanh.
-Dễ quản lí và đảm bảo an toàn cho tài nguyên.
-Nhẹ hơn SOAP
-SOAP là chuẩn nhưng càng ngày, những ứng dụng lớn đều chuyển sang dùng REST vì những ưu điểm của nó.

Thứ Sáu, 22 tháng 8, 2014

Java API for Webservice

1.Các bộ thư viện : 

       + Java API for XML-based RPC (JAX-RPC).
       + SOAP with Attachments API for Java (SAAJ).
       + Java API for XML Registries (JAXR).
       + Java API for XML Processing (JAXP).

2.XML Web Service :

-Các thao tác làm việc với web service đều thông qua xml dựa trên giao thức HTTP, XML, SOAP, TCP/IP
-Đặc điểm :
    +Cấu trúc phi trạng thái.
    +Kiến trúc không đồng bộ
    +Không bị phụ thuộc vào nền tảng , ngôn ngữ

3.JAXP :

-Thư viện SAX2 để đọc file XML nhưng không thể can thiệp được vào dữ liệu.
-Thư viện DOM2 dùng để thao tác dữ liệu của file XML.
-Bộ thư viện Transformer để transform các thông tin.

4.JAX-RPC :

-Server-Side RPC Runtime là nơi cung cấp các dịch vụ web service.
-Client gửi thông tin đến server dưới dạng SOAP trên giao thức HTTP và ngược lại.
-Client và server làm việc với nhau thông qua WSDL.
-Ưu điểm:
      +Sử dụng môi trường SOAP là chuẩn duy nhất trên web service.
      + Sử dụng 2 quá trình marshalling and unmarshalling.
      +Code trên java rất đơn giản.
-Cung cấp ba phương thức làm việc
      + Synchonorous request- response mode: Client phải đợi server hoàn thành
      + One way RPC mode: Không nhận thông tin trả về
      + Non-blocking RPC invocation mode:Client vẫn có thẻ làm những công việc khác.

5.JAXR :

-Làm việc với UDDI và ebXML Registry.
-UDDI Registry : Giúp cho Web Service Provider làm việc dễ dàng hơn.
-ebXML Registry :
     +Hỗ trợ validate dữ liệu
     +Hỗ trợ việc đóng gói object
     +Hỗ trợ giao tiếp
     +Hỗ trợ phân quyền dữ liệu

6.SAAJ :

  - Cho phép người sử dụng tạo và gửi thông điệp SOAP với đính kèm thông qua package javax.xml.soap
  - SOAP cung cấp định dạng tin nhắn cơ bản cho Web services. Nó cho phép người dùng tạo và đọc tin nhắn theo chuẩn SOAP 1.1 và SOAP với đính kèm.

7.JAXB :

- Cung cấp các class Java sinh ra từ XML schemas có tác dụng  giúp thao tác với file XML dễ dàng hơn.
- Một số hạn chế của JAXB
        +Yêu cầu DTD và XML Schemas.
        +Khi tạo dữ liệu phải chỉ định JAXB biết cấu trúc cây.
        +Không hỗ trợ tạo DTD pháp lý như Notation, Entity hay Entities.

Nhận xét

 -Web service cung cấp rất nhiều bộ thư viện để hỗ trợ thao tác dữ liệu XML dễ dàng và đơn giản hơn.
 -Mỗi một bộ thư việc lại có đặc điểm và công dụng riêng vì vậy cần thời gian để thao tác được thuần thục.

Developing web service using JAX-WS

Demo : Happy Consumer International Bank (HCIB), a leading multinational organization having established branches all over the world is now starting its banking services in India. The Bank has employed you as a full time System Consultant with them. It wants to deploy a Web Service that will offer credit card validation and online banking facilities that are typically offered by all the multinational banks. The main priorities for the online banking system are reliability, availability and serviceability of the application. Additionally, the system should be highly scalable and secure as the bank expects substantial growth in the
future. Consider yourself to be a part of the team that implements the credit card validation module. Develop a JAX_RPC based Web Service that exposes the boolean validateCreditCard(cardNumber) method. This method implements the logic for credit card number validation, and returns a boolean value indicating whether the card number is valid or not. Logic for credit card number validation:
Step 1: Multiply the alternate digits of the credit card number by 2 starting with the second digit from the right (the first right--hand digit is the check digit).
Step 2: Add the individual digits comprising the products obtained in Step 1 to each of the unaffected digits in the original number.
Step 3: The sum of all digits obtained after Step 2 as well as unaffected digits must be a number which is a multiple of 10 (30, 40, 50, etc.) for the credit card number to be valid.

Chúng ta sẽ thực hiện như sau :
Tạo Java Web Application và tạo webservice
Code trong web service như trên
Test thử web service vừa tạo
Sau bước này chúng ta sẽ tạo một client , ở đây tôi chọn new Java Application :
Tạo Web Service Client
Copy đường dẫn WSDL khi tạo Web Service Client
Để kết nối được với nhau ta kéo method validateCart vào trong main class.
viết code trong main
Kết quả thu được
DEMO tại đây.

NHẬN XÉT :
-Có thể thực hiện edit web service mà không lo ảnh hưởng tới client.
-Có thể sử dụng cho nhiều client

Thứ Bảy, 16 tháng 8, 2014

Describe overview of webservice

I.Khái niệm WebService :
-Web Services là thành phần trong Application mà nó expose dữ liệu , cung cấp dịch vụ trong thế giới Web. -Nó là thành phần trong phần mềm.
-Nó chưa nghiệp vụ riêng của nó.

II.Các đặc điểm của WebServices :

-WebServices được xây dựng dựa trên xml và giao thức chuẩn : HTTP , SOAP..
-WebServices không phụ thuộc vào nền tảng và ngôn ngữ.

III.Tại sao cần WebServices :
-Là công cụ để kết nối các ứng dụng khác nhau (Application to Application )

IV. WebServices hoạt động như thế nào :
-Client sẽ gọi WebServices đến Server sử dụng SOAP trên giao thức HTTP.
-Server sẽ phân tích và trả về dữ liệu dạng XML.

V.Các component chính của WebService :
-Simple Object Access Protocol (Soap) : 1 Standard duy nhất của WebService để chuyển đổi dữ liệu.
-WebServices Description Language (WSD): để mô tả WebService.
-Universal Description, Discovery and Integration (UDDI): dùng mô ta phát hiện tìm kiếm và tích hợp.


Cụ thể ở đây : 
A.Soap
-Được dùng để trao đổi dữ liệu.
-Dựa trên giao thức HTTP
-Soap có nhiều phần :
B.UDDI 
-Là một Platform độc lập
-Sử dụng để mô tả WebService.

NHẬN XÉT :
a) Ưu điểm :
-Nó cung cấp khả năng hoạt động lớn với các phần mềm khác nhau chạy trên những nền tảng khác nhau.
-Sử dụng các giao thức chuẩn. Giao thức và định dạng dữ liệu dựa trên văn bản (text).
-Nâng cao khả năng tái sử dụng.
-Tạo mối quan hệ tương tác lẫn nhau giữa các thành phần trong hệ thống.
b) Nhược điểm :
-Xảy ra thiệt hại trong quá trình chết WebServices.
-Quá nhiều chuẩn cho dịch vụ Web khiến người dùng khó nắm bắt.
-Cần quan tâm tới bảo mật.

Chủ Nhật, 10 tháng 8, 2014

Describe technologies to apply xml into web application

I. Generating XML Data from Databases :


Như hình trên ta thấy rằng chúng ta có thể dùng nhiều kĩ thuật khác nhau như SQL  , Xquery , Dom , SAX.

II.Transforming Data into HTML

-Client-Side Transformation: Chuyển dữ liệu có dạng XML hoặc HTML đến client và client sẽ dùng XSLT để biến đổi sang dạng tương ứng.
-Server-Side Transformation: Server đẽ biến đổi sang dạng tương ứng rồi chuyển đến client
-External Transformation: Chúng ta sẽ có một ứng dụng bên ngoài để làm việc biến đổi dữ liệu.


III. Transforming Data into PDF


-Nguồn dữ liệu đầu vào là  XML, sau đó có thể involves ra các định dạng khác nhau.
-Chúng ta có thể dùng XSL-FO trong trường hợp chuyển đổi sang các file PDF.

IV. Importing\Exporting XML Data

-Chúng ta có thể dùng các bộ công cụ khác nhau để import hoặc export dữ liệu vào database và ngược lại.

V.Validating Well-Formdness


-Chúng ta phải kiểm tra xem XML có đúng định dạng hay không.
-Các bước để kiểm tra :
 + Kết nối , phân tích dữ liệu XML.
 + Tạo SchemaFactory.
 + Nạp W3C XML schema.
 + Phê chuẩn DOM tree.
 + Kiểm tra lỗi.



Nhận xét :
-XML rất phổ biến và quen thuộc.
-Dễ dàng biến đổi sang các định dạng khác nhau.
-Code đơn giản dễ hiểu
-Nhiều cách kiểm tra.

Use validator to validate xml against a schema

Demo: Create a program that accepts two command line parameters. The first parameter must specify the name of an XML document and the second parameter must specify the name of a schema. The program should validate the XML document against the specified schema by creating a DOM source on the
document.
Tạo Java Application và file XML shiporder

Tạo file xsd shiporder

Code main class

Kết quả

Demo tại đây

Demo :Create a program that accepts two command line parameters. The first parameter must specify the name of an XML document and the second  parameter must specify the name of Schema. The program must also validate the XML document against the specified schema by creating a SAX source on the 
document.


Tạo new Java Application và file xml

File xsd
Code DefaultHandler trong main class

Code chạy chương trình

Kết quả
Demo tại đây

Nhận xét :
- Validator là một cách để kiểm soát lỗi của một file xml.
- Chương trình được an toàn hơn vì nó không chỉ check xem một file xml có theo quy tắc chuẩn hay không, nó còn kiểm tra một file xml có thỏa mãn một schema nào đó hay không.

Use Xpath

Demo: In an organization, five hundred employees are working. Out of which some are apprentices. The Delivery Unit Head of that organization gave you the responsibility to develop a software, with which you can find the details of apprentices. Use the below files to develop the application:
1. The EmployeeDatabase.xml file holds the data of all employees.
2. Use XPath expressions.
In this application, the apprentices are defined in the trainee namespace while all other employees are defined in the default namespace. This application should count the number of apprentices and print their details on the user console.

Tạo Java Application và tạo file xml

Code tạo kết nối tới file XML vừa tạo trong main class

Code Namespace

Code Xpath

Kết quả
Demo tại đây

Nhận xét :
-Xpath đóng vai trò quan trọng trong quá trình trao đổi thông tin,cơ sở dữ liệu.
-Dễ dàng truy cập vào các node trong XML bằng cách viết các câu lệnh đơn giản và đặt điều kiện trong các câu lệnh.
-Cú pháp khai báo đơn giản và ngắn gọn.
-Cho phép ta chọn lựa những thông tin, dữ liệu nào mà ta muốn chuyển.

Use Trax to tranform xml document

Demo : Create an application, which accepts an XSLT file as its first argument and XML document as second argument. Then, create an application using the following classes, which transforms a Source and sends the output to a Result object. 
1. Use the TransformerFactory class and its methods. 
2. Use the Transformer class and its methods.
Tạo Java Application và tạo file XML


tạo file style

Code sắp xếp tên

Code lấy dữ liệu

Code main class
Thu được file output sau khi chạy chương trình

Chạy file output.html
Demo tại đây

Nhận xét :
-Việc chuyển đổi XML sang các định dạng khác là một nhu cầu thiết yếu.
-Việc chuyển đổi không hề khó khăn và phức tạp.

Apply XQuery

Demo : Read all username in file tomcat-users.xml:

Download các thư viện cần dùng tại đây:



Tạo Java Application và Add các thư viện đã download như hình trên

Tạo file XML

Code main class

Kết quả như sau 

Demo tại đây

Nhận xét :
-XQuery có thể chuyển dữ liệu từ XML sang XHTML dễ dàng.
-Bạn phải viết đúng tên các thẻ và các element.
-XQuery lấy dữ liệu bằng Web Services nên phải có kiến thức về Web Service.