Saturday, August 23, 2014

Rest Architecture & Restful Webservice

1:Giới thiệu
  - Trên giao diện web 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à nguyên lý á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, cũng ko phải là chuẩn.

3:Đặc điểm: 
   -Có client, server : Client gửi thông tin lên server, và server sẽ trả kết quả về
   -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 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:
 - REST giup server được giảm tải công việc , ứng dụng sẽ nhanh hơn
 - Mọi tài nguyên được quy về 1 dạng duy nhất nên dễ quản lý và đảm bảo an toàn
 - Rest 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

Java API for Webservice

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

   J2EE cung cấp 4 thư viện Web Service APIs để làm việc với Web Service:
       + 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

  -Tất cả 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 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ể thao thác được 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
-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 dung 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.

Developing web service using JAX-WS



Bước 1: Tạo new project JavaWeb



Bước 2: Thêm Web Services


Bước 3: Viết code cho file web services





Bước 4: Tạo new project Java


Bước 5: Thêm Web Services Client



Copy WSDL vừa test thử vào WSDL URL



Bước 5:Kéo method validateCart vào file main



Bước 6: Viết code cho file main



Kết quả




Nhận xét:

  - Một web service sử dụng giao thức chuẩn mở nên có thể dùng cho nhiều client
  - Dễ dàng sửa chữa web service mà không ảnh hưởng đến client

  - Tạo web service khá nhanh và đơn giản
  - Kết nối với client nhanh
  - Tái sử dụng tốt
  - Bảo trì dễ dàng



Web Service là thành phần trong Application , nó dùng để hiển thị dữ liệu và cung cấp các dịch vụ trong web. Một web Service là một thành phần của phần mềm và nó chứa các nghiệp vụ riêng của nó. Web service nó cho phép client và server tương tác trong môi trường khác nhau

- Đặc điểm :
Webservice được xây dựng bằng xml và các giao thức chuẩn :
+ HTTP
+ SOAP..
Web Service không phụ thuộc vào nền tảng và các ngôn ngữ

+ Web Service được dùng để kết nối các nền tảng, dịch vụ khác nhau
+ Web Service cung cấp các dịch vụ
+ Web Service kết nối các nền tảng , business với nhau

- Hoạt động của Web Service :

Client gọi đến webservice trong môi trường internet  và nó sử dụng ngôn ngữ SOAP trên HTTP. Sau đó web service xử lí dữ liệu của Client và cuối cùng nó trả lại dữ liệu dưới dạng xml

- Thành phần :
+ SOAP
+ WSDL
+ UDDI

Nhận xét :

- Web Service rất Linh hoạt nó có thể hoạt động ở đa môi trườ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, dễ dàng cho việc phát triển các ứng dụng phân tán.
- Sử dụng XML để giao tiếp nên không phụ thuộc vào nền tảng.
- Sử dụng các giao thức chuẩn và mở
- Khả năng hoạt động rộng lớn vì nó có thể chạy trên nhiều nền tảng khác nhau
- Khả năng tái sử dụng cao

Tuesday, August 12, 2014

Describe xml database, it types and mapping xml schema and database schema

1. XML như Database

 -Sử dụng xml như một cơ sở dữ liệu
 -Dùng để lưu trữ thông tin, hỗ trợ chúng ta truy xuất, quản lý thông tin một cách dễ dàng nhất
 -Lưu trữ dữ liệu ở xml rất đơn giản
 -Định dạng xml vô cùng phổ biến
 -Convert dữ liệu từ xml sang các định dạng khác đơn giản

2. Phân loại XML
  -XML-Enabled : hỗ trợ sử dụng XML
  -Native XML : thực sự lưu trữ dữ liệu dưới dạng XML

3. Mục đích sử dụng CSDL XML
 -Không phụ thuộc vào bất kỳ nền tảng công nghệ nào
 -Bản thân XML đã dùng để mô tả thông tin
 -Toàn bộ thông tin được mô tả dưới dạng Node
 -Có thể lồng nhau thoải mái, nhiều thông tin trùng lặp với nhau được
 -Lưu trữ được nhiều

4. Tổ chức CSDL XML
- Data-Centric Documents: Tổ chức dữ liệu theo cấu trúc (Soap)
- Document-Centric Documents: XML không có cấu trúc chặt chẽ như Data-Centric Documents mà có thêm những thứ khác như tài liệu HTML…

5. Object
- Những dữ liệu trong tài liệu XML được lưu trữ dưới dạng node
- Một node có thể biến đổi thành object dễ dàng
- Có các thư viện để biến đổi tài liệu XML sang object và ngược lại

6. Native XML Databases
- Mọi thông tin được lưu trữ dưới dạng XML
- Hỗ trợ truy xuất cơ sở dữ liệu bằng query
- Dùng XSLT để lấy dữ liệu từ trong file XML
-Hỗ trợ việc cập nhật dữ liệu

7. Mapping giữa  CSDL ở dạng quan hệ và CSDL XML

 -Mapping rất đơn giản
 -Truy xuất cũng rất đơn giản

8.Mapping CSDL XML và object


NHẬN XÉT :

 - Láy dữ liệu dễ dàng hơn
 - Biến đổi định dạng xml sang dạng khác 

Use NodeIterator to read xml file

Module 6: Create an XML document containing the employee details of an organization. Then create an application, which uses the DOM parser to parse the XML document into a DOM tree and traverses through it. The application should implement the TreeWalker interface to traverse all the nodes present in the DOM tree and print the value of the nodes.

B1: tạo mới 1 java application:
B2:Tạo 1 file employee.xml
B3: Code hàm main:
Kết quả:


Nhận xét:
  • Giúp cho việc truy xuất tới các thẻ 1 cách dễ dàng
  • Traversal có thể chọn lọc các nội dung của tài liệu để hiện thị rõ ràng

Use TreeWalker to read xml file

Module 6: Create an XML document containing the employee details of an organization. Then create an application, which uses the DOM parser to parse the XML document into a DOM tree and traverses through it. The application should implement the TreeWalker interface to traverse all the nodes present in the DOM tree and print the value of the nodes.

B1: tạo mới 1 java application như sau:
B2: tạo file employee.xml với dữ liệu sau:
B3:Tạo hàm traversal để lấy dữ liệu DOM Tree
B4: Code hàm main:
Kết quả:



NHẬN XÉT :
-  Tối ưu hóa để kết nối với DOM.
- Traversal : Thao tác trên các cây tốt hơn

DOM level 2 Module

1 . DOM Level 2 
- DOM level 2 được xây dựng trên DOM level 1
- DOM level 2 có 6 cái Module khác nhau

Đầu tiên là Core Module chúng ta sẽ xây dựng lên các Modules
- Traversal Module : giúp chúng ta di chuyển trên cái cây dữ liệu dễ dàng hơn 
- Range Module : giúp chúng ta cắt 1 đoạn trong tài liệu xml
- Event Module : giúp ta xử lý các tài liệu trong xml
- View Module 
- HTML Module 
- Style Module 

2 . Event Module
- Được xây dựng trên Event Module 1


- Module này không bắt buộc phải có, nó giúp chúng ta đăng ký và định nghĩa thêm các thẻ khác nhau

Event Flow


Khi bắt đầu đọc thẻ HTML nó là một event , còn khi kết thúc nó là một event khác

Traversal Module
- Nó có 3 interface : TreeWalker, NodeIterator, NodeFilter
- Giúp chúng ta di chuyển trên cái cây DOM dễ dàng rất là nhiều

CSS Module
- Có các interface : CSSStylesheet, CSSRuleList, CSSHediaRule, CSSStyleDeclaration
- Giúp chúng ta làm việc dễ dàng hơn với các style

Friday, August 8, 2014

Describe overview of DOM



 1 . DOM : 
Để khắc phục các nhược điểm kể trên của SAX thì người ta tạo ra DOM.Nó có tất cả các ưu điểm của SAX và khắc phục được các điểm hạn chế.
Chúng ta sử dụng DOM vì SAX có một nhược điểm là nó không cho chúng ta truy suất tới bất kì một điểm nào ngay lập tức trong file xml mà phải đọc thông tin 1 cách tuần tự từ trên xuống dưới.Và việc đọc dữ liệu từ file XML dùng SAX rất phức tạp đặc biệt cho những chức năng tìm kiếm phức tạp do không hỗ trợ DTD , không có nhiều thông tin về Lexical và không thể dùng SAX để cập nhật thông tin của 1 file XML .

  2 . Lợi ích của DOM đem lại : 
_Truy suất được nhiều tài liệu để quản lý các cấu trúc dữ liệu phức tạp cho phép chúng ta thay đổi dữ liệu trong file XML
_ Cho phép chúng ta truy suất đến 1 thành phần ngẫu nhiên và liên tục trong file XML

  3. Các thành phần của DOM : DOM có cấu trúc hình cây
 4. Cách thức làm việc với DOM :
      - Gần như giống với SAX.trong SAX có parser còn ở đây ta có Documentbuilder,muốn có documentbuilder ta có documetbuilder factory.

Nhận xét : 
- DOM có tất cả các ưu điểm và giải quyết được tất cả các nhược điểm của SAX.
DOM sẽ phân tích toàn bộ dữ liệu XML trong bộ nhớ trong khi SAX chỉ phân tích một phần nhỏ trong bộ nhớ

Comparing XmlReader to SAXParser



1 . SAXParser:

    -SAX sử dụng một mô hình đẩy
    -Với SAX, chúng ta chỉ cần thiết lập một xử lý sự kiện. Phân tích cú pháp SAX mặc định hoạt động như một trình điều khiển để phân tích các tài liệu và gửi các sự kiện.
    - Ít code hơn

2 . XMLReader

    -XMLReader sử dụng một mô hình kéo
    -Với XMLReader, chúng ta phải tạo ra một vòng lặp để gọi phương thức đọc của lớp XMLReader. Sau đó chúng ta phải thực hiện một công trình chuyển đổi mà gửi các xử lý thủ tục khác tùy thuộc vào loại nút.
    -Nhiều code hơn

3 . Nhận xét 

 -Có thể gọi các method của XMLReader để kéo dữ liệu, giúp kiểm soát nhiều và thực hiện mọi việc dẽ dàng hơn so với mô hình SAX.

Sunday, August 3, 2014

APPLY FILTER


Bước 1. Tao java appilication. tạo 1 file xml
Bước 2. Viết class DataFilter


Bước 3. Viết class DataProcessor
Bước 4. Viết hàm main
Chạy thử ứng dụng và đây sẽ là kết quả : 



Nhận xét : 
    Lấy dữ liệu dễ dàng hơn mà không cần phải tạo nhiều phương thức ví dụ như thông thương phải dùng for và if. Có thể phải tạo các entity hoặc các list lưu dữ liệu tạm thời
    - Khó hơn cách làm trước do phải thêm 1 class trung gian là filter để đọc dữ liệu


Advanced topics of SAX




I . Handling Errors :




   - Non validating parser :  Khi chúng ta làm việc với XML thường xuyên mắc phải lỗi quét giữ liệu.Handling Errors sẽ kiểm tra xem lỗi này có nghiêm trọng hay không.Nếu nó được coi là nghiêm trọng Handling Errors sẽ tung ra 1 Session rồi tung vào Stack trace.Còn nếu không nó sẽ tung ra một Default Errors rồi cũng gửi vào Stace trace


  -  Validating parser :  khi chúng ta dùng parsers được config để validate dữ liệu  chúng ta vẫn làm những bước như bình thường,ta phải tạo ra parser,khác biệt ở đây là ta set mode cho validation có report error,và set XML Schema.Để sử lý lỗi ta phải create va register ErrorHandler vào parser tức là ta implement ErrorHandler.Trong quá trình quét dữ liệu thì ErrorHandler sẽ xử lý.

II . DTDHandler :
Ở đây tôi sẽ nói đến việc cách chúng ta sử dụng DTD handler như thế nào : 

Khi chúng ta gặp 1 entities DTDHandler sẽ set DTDhandler methods và thông báo unparsed entities cho ứng dụng

Còn khi  SAX lấy thông tin về notations thì dứng dụng sẽ không overwrite ra DTDHandler nữa mà nó sẽ hiện ra thông báo cho ứng dụng


 III . Nhận xét : 
    - Các công cụ của SAX giúp chung ta kiêm soát được lỗi hơn nhờ Handling Errors

    - Cải tiến hơn nhiều so với công cụ trước