Thứ Hai, 26 tháng 12, 2016

Integrating Session Beans, Entities, Message-Driven Beans, and Web Services

Technologies EJB Có 3 Loại


1. Entity beans 


- Tương tự với các đối tượng thực thể (entity object) trong đặc tả UML [Jacobson/UML]. 


- Entity bean chứa các thông tin tác vụ và các phương thức hoạt động của nó. 


- Một entity beans có thể được lưu trữ và khôi phục lại một các tự động bởi trình quản lý ejb, với việc sử dụng cơ sở dữ liệu quan hệ hay một hệ thống lưu trữ nào đó do bạn chọn. 


- Entity Bean được thiết kế nhằm mô hình hoá dữ liệu trong CSDL thành các đối tượng phân tán, có thể triệu gọi từ xa theo cơ chế RMI-IIOP. Nó ánh xạ 1-1 với dữ liệu trong database. 


- Entity có thể tự quản lý việc truy xuất dữ liệu hay giao cho trình chứa quản lý.


2. Message-driven beans


- Chịu trách nhiệm điều khiển các message giữa client và server. 


- Message này sẽ được truyền theo hình thức P2P hay broadcast (quảng bá)…. 


- Khi triển khai code Bean không giống 4 loại Bean trên. Tuy nhiên nó rất quan trọng. Các hệ thống ngân hàng giao tiếp thanh toàn tài khoản với nhau chỉ dùng message cho nên nên dùng Message driven Bean.


- Có 2 loại Bean trong Message driven Bean và các loại Bean này nằm trong MOM (Message Oriented Middleware). Hai loại đó là Queue và Topic. Ứng với mỗi loại Bean này MOM có 2 loại hàng đợi phù hợp cho nó. 

    • Quese thì chỉ cho 1 client gửi 1 message tới 1 người ( ví dụ chat)
    • Topic thì chỉ cho 1 client gửi 1 message tới nhiều người ( ví dụ chat room) miễn là người nhận có đăng ký với hàng đợi message.


3. Session beans


- Quản lý các nhiệm vụ tác nghiệp của các client của ejb. 

- Client gửi một message tới session beans thông qua môi trường mạng. Session bean có thể triệu gọi tới một entity bean hay một session bean khác để hoàn thành nhiệm vụ mà client yêu cầu. Session bean lại được chia làm hai loại:
    • Stateless: trạng thái các giao dịch của client sẽ không được lưu lại cho những lần giao dịch sau. Những lần giao dịch khác nhau sẽ hoàn toàn động lập với nhau.
    • Statefull: trạng thái các giao tác của client sẽ được lưu trữ lại phục vụ cho những lần giao dịch sau.



- Các Bean này không thể hiện dữ liệu, mặc dầu có thể truy xuất dữ liệu. Theo đề nghị của Sun, các ứng dụng có dùng EJB nên truy xuất Entity Bean thông qua Session Bean



Có 4 cách lưu data của client khi xây dựng Web Application.

- Sử dụng URL Rewriter: HTML là ngôn ngữ định dạng tài liệu, nó không phải là ngôn ngữ lập trình nên không thể sử dụng các biến để lưu dữ liệu. Tuy nhiên, dữ liệu có thể được viết vào các link (liên kết) và như thế khi người dùng click vào link thì dữ liệu sẽ được gửi lên server. Phần lớn dữ liệu được viết vào phần query dưới các cặp parameters gồm key=value (cặp khóa/giá trị), một vài cài đặt có thể đưa dữ liệu vào phần path hay trong các biến của javascript,…

- Hidden Form: Thay vì lưu dữ liệu vào đường link, ta sẽ lưu dữ liệu vào các thành phần của form và type (kiểu) của các element này là hidden - ẩn. Như vậy, mọi action (hành xử) của người dùng sẽ gọi đến hành động post (gửi) form đó lên server và như thế dữ liệu cần lưu ở lần trước đó sẽ được gửi lại. HTTP method được dùng ở đây là Post chứ không phải Get trong URL Rewriter. Get là một dạng truy vấn cho phép đọc (read) trong khi Post là một truy vấn cho phép ghi (write). Khi đó dữ liệu của client gửi lên server sẽ nằm trong phần body của một HTTP Message chứ không phải trong phần Header như việc dùng link (liên kết) ở trên. 

- Sử dụng Cookie: Trình duyệt cho phép mỗi Web Application lưu khoảng 4kb dữ liệu dưới dạng key/value. Như vậy, nếu ta lưu data của lần truy vấn trước đó vào cookie thì giá trị này sẽ được gửi lên server trong mỗi request. Cookie là 1 phần trong header của HTTP Message.

- Sử dụng HTTP Session: Ngược với cookie, các Web Server có thể cho phép mỗi client lưu một dung lượng nhỏ data trên đó. Dữ liệu được lưu dưới dạng key/value và sẽ bị expire nếu bị timeout (sau khoảng thời gian tính từ lúc client gửi truy vấn cuối cùng đến server nếu vượt quá giới hạn thì sẽ bị hủy).

Web Application là một ví dụ minh họa cho stateless design với vài kỹ thuật nhỏ khắc phục yếu điểm của nó trong xây dựng phần mềm. Ở tầng bussiness, ta cũng có thể thiết kế tương tác dạng client-server. Hệ thống phần mềm khi đó có architecture (kiến trúc) là distributed (phân tán). EJB là một ví dụ với việc session bean được thiết kế hỗ trợ cả stateless và stateful.

4. Web Service


- Dịch vụ Web là cách tiêu chuẩn hóa giao tiếp ứng dụng dựa trên web khác nhau thông qua mạng. 

- Bằng cách sử dụng các dịch vụ Web, ứng dụng của bạn có thể xuất bản chức năng hoặc thông điệp của mình với phần còn lại của thế giới. 
- Dịch vụ Web có thể giao tiếp với nhau bằng cách sử dụng định dạng file XML khác mà không biết làm thế nào mỗi khác được thực hiện.

- Các ứng dụng web dựa trên giao tiếp bằng cách sử dụng các khái niệm như XML, SOAP, REST, WSDL và UDDI.

Ưu điểm:


Dịch vụ Web cung cấp khả năng hoạt động rộng lớn với các ứng dụng 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 và chuẩn mở. Giao thức và định dạng dữ liệu dựa trên văn bản (text), giúp các lập trình viên dễ dàng hiểu được.
Nâng cao khả năng tái sử dụng. 
Thúc đẩy đầu tư các hệ thống phần mềm đã tồn tại bằng cách cho phép các tiến trình/chức năng nghiệp vụ đóng gói trong giao diện dịch vụ Web.
Tạo mối quan hệ tương tác lẫn nhau và mềm dẻo 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.
Thúc đẩy hệ thống tích hợp, giảm sự phức tạp của hệ thống, hạ giá thành hoạt động, phát triển hệ thống nhanh và tương tác hiệu quả với hệ thống của các doanh nghiệp khác.

Nhược điểm: 

- Những thiệt hại lớn sẽ xảy ra vào khoảng thời gian chết của Dịch vụ Web, giao diện không thay đổi, có thể lỗi nếu một máy khách không được nâng cấp, thiếu các giao thức cho việc vận hành. 
Có quá nhiều chuẩn cho dịch vụ Web khiến người dùng khó nắm bắt.
Phải quan tâm nhiều hơn đến vấn đề an toàn và bảo mật.

Dịch vụ Web gồm có 3 chuẩn chính: 
    • SOAP (Simple Object Access Protocol) 
    • WSDL (Web Service Description Language)
    • UDDI (Universal Description, Discovery, and Integration)


UDDI được sử dụng để đăng ký và khám phá dịch vụ Web đã được miêu tả cụ thể trong WSDL. Giao tác UDDI sử dụng SOAP để nói chuyện với UDDI server, sau đó các ứng dụng SOAP yêu cầu một dịch vụ Web. Các thông điệp SOAP được gửi đi chính xác bởi HTTP và TCP/IP.


 4 thành phần chính:

Service Transport: có nhiệm vụ truyền thông điệp giữa các ứng dụng mạng, bao gồm những giao thức như HTTP, SMTP, FTP, JSM và gần đây nhất là giao thức thay đổi khổi mở rộng (Blocks Extensible Exchange Protocol- BEEP).\

Thông điệp XML: có nhiệm vụ giải mã các thông điệp theo định dạng XML để có thể hiểu được ở mức ứng dụng tương tác với người dùng. Hiện tại, những giao thức thực hiện nhiệm vụ này là XML-RPC, SOAP và REST.

Service Description: được sử dụng để miêu tả các giao diện chung cho một dịch vụ Web cụ thể. WSDL thường được sử dụng cho mục đích này, nó là một ngôn ngữ mô tả giao tiếp và thực thi dựa trên XML. Dịch vụ Web sẽ sử dụng ngôn ngữ này để truyền tham số và các loại dữ liệu cho các thao tác và chức năng mà dịch vụ Web cung cấp.

Khám phá dịch vụ: tập trung dịch vụ vào trong một nơi được đăng ký, từ đó giúp một dịch vụ Web có thể dễ dàng khám phá ra những dịch vụ nào đã có trên mạng, tốt hơn trong việc tìm kiếm những dịch vụ khác để tương tác. Một dịch vụ Web cũng phải tiến hành đăng ký để các dịch vụ khác có thể truy cập và giao tiếp. Hiện tại, UDDI API thường được sử dụng để thực hiện công việc này.

Create and Use Session Bean

B1: TẠO PROJECT ENTERPRISE APPLICATION


4



B2:TẠO DB




B3:TẠO ENTITY

B4:TẠO SESSION BEAN

1










B5:TẠO CÁC VIEW LÀ JSP tRONG WEB PAGES CỦA EMPEJB-WAR, TẠO các TRANG JSP

1


4

B6: TẠO CONTROLLER. TRONG SOURCE PACKAGES CỦA EMPEJB-WAR TẠO 2 TRANG SERVLET EMPSERVLET VÀ EDITSERVLET TRONG PACKAGE CONTROLLER. CLICK CHỌN ADD INFORMATION TO DEPLOYMENT DESCRIPTOR(WEB.XML) TRƯỚC KHI FINISH TẠO TRANG

1

2

3

4


CLICK CHUỘT PHẢI VÀO EMPEJB, CHỌN RUN ĐỂ CHẠY CHƯƠNG TRÌNH

Describe overview of technologies of Java EE & EJB

I.Java EE

1. Java EE

Java ee (Enterprise) là một platfrom rất phổ biến, được sử dụng rộng rãi. Bao gồm nhiều công nghệ được kết hợp với nhau. Việc phân chia các tầng làm giảm chi phí và độ phức tạp của việc phát triển, triển khai công việc. Java EE được xây dựng trên nền tảng java se và cũng cung cấp thêm các API để phát triển và hoạt động các ứng dụng máy chủ  (server-side-application) một cách mạnh mẽ.có khả năng mở rộng, dáng tin, portable, and secure.


2. Các technologies của Java EE


- JDBC (Java Database Connectivity) API : là một tập hợp các giao diện cho phép sử dụng Java để truy cập vào cơ sở dữ liệu bất kì.

- RMI (Remote method invocation): là một API cho phép các đối tượng java để giao tiếp từ xa với các đối tượng khác.

- Java IDL (Interface Definition Language): là ngôn ngữ nền tảng tiêu chuẩn khai báo độc lập, sử dụng để xác định các giao diện đối tượng service và đối tượng client. Cho phép bất kì các đối tượng java để giao tiếp với các đối tượng khác trong ngôn ngữ bất kì.

- EJB (Enterprise Java Bean): đóng gói các business logic và hỗ trợ thực hiện các thao tác giao tiếp và bảo mật.

- JSP & Servlet: Công nghệ dùng trong xây dựng web.

- JMS (Java Message Service): API này cho phép application tạo, gửi, nhận, và đọc các message.

- JTA (Java Transaction API): cho phép các application của Java EE  thực hiện các thao tác phân tán (distributed transaction).

- JAXP (Java API for XML Processing) : cho phép phân tích và chuyển đổi tài liệu XML.
 JNDI (Java Naming Directory Interface): là một giao thức cung cấp một tập API chuẩn cho phép truy cập tới những dịch vụ.

- JPA (Java Persistence API): cho phép mapping giữa 1 lớp java với các cột trong bảng trong cơ sở dũ liệu.


3.Các thành phần của J2EE


J2EE được xây dụng trên một mô hình container component. Bốn container component cốt lõi liên quan đến bốn kiểu container được hỗ trợ trong J2EE bao gồm, Application Client, Applet, Web và EJB:


- Java Application là 1 chương trình chạy bên trong Application Client container. Application Client container cung cấp những APIs hỗ trợ cho messaging, remote invocation, database connectivity và lookup service.

- Applet là java applet chạy bên trong Applet container, chính là web browser có hỗ trợ công nghệ Java.

- Servlet và JSP là Web-based component chạy ở bên trong Web container. Web container là một môi trường run-time cho servlet và jsp để cung cấp một cơ chế cho việc chuẩn bị, xử lý, định dạng nội dung động

- Enterprise JavaBean (EJB) là business component chạy bên trong EJB container. EJB component là phần nhân, cốt lõi của ứng dụng J2EE. EJB container cung cấp các dịch vự quản lý transaction, bảo mật, quản lý trạng thái, quay vòng tài nguyên (resource pooling)

5. Vai trò của J2EE


- J2EE cung cấp các dịch vụ, các hàm giao tiếp(API) và các giao thức để triển khai các ứng dụng đa tầng.
- J2EE Framework cho phép phát triển những ứng dụng distributed bằng cách cung cấp 1 tập các dịch vụ cơ bản như quản lý transaction, kiểm tra security, quản lý trạng thái, quản lý tài nguyên

Nhận xét:

- Java EE là cho phép chúng ta xây dựng ứng dụng tốn rất ít công sức.

- Java EE có rất nhiều các công cụ mã nguồn mở hữu ích cho phép mở rộng nền tảng hay đơn giản hóa quá trình phát triển ứng dụng

-Tuy nhiên, người ta không dùng Java EE để lập trình ứng dụng game

II. EJB

1. Giới thiệu


- Enterprise Java Beans (EJB) là các component bên phía server trong, mà triển khai các business logic của 1 application client.

- Được thực thi trong 1 "Container".

2. Kiến trúc chung của ứng dụng nhiều tầng trong java enterprise


a


3.The EJB Container

a-1



4.Vai trò của ejb container




Bean được chia thành các loại như sau :


a (4).PNG

Thứ Ba, 20 tháng 12, 2016

DOM 2

DOM level 2 làm mới DOM1 Interface.Sự thay đổi lớn đó là hỗ trợ tên miền ở Element và Attr interfaces.DOM2 hỗ trợ thêm một số interfaces cho các event,traversal,ranges,views và stylesheets
DOM Level 2 Architecture

AsyncTask, Volley, Retrofit.

1. Async Task 

  • AsyncTask là một lớp trừu tượng được cung cấp bởi Android, giúp chúng ta sử dụng các thread UI đúng. Lớp này cho phép chúng tôi thực hiện các hoạt động dài / nền và hiển thị kết quả của nó trên thread UI mà không cần phải thao tác đề.
  • AsyncTask có bốn bước:
    • doInBackground: Mã thực hiện hoạt động dài chạy đi trong phương pháp này. Khi phương thức onClick được thực thi trên nhấp nút, nó gọi phương thức mà chấp nhận các thông số thực hiện và tự động gọi phương thức doInBackground với các thông số thông qua.
    • onPostExecute: Phương thức này được gọi là phương thức sau doInBackground hoàn thành xử lý. Kết quả từ doInBackground được truyền cho phương thức này.
    • onPreExecute: Phương thức này được gọi là trước khi phương thức doInBackground được gọi.
    • onProgressUpdate: Phương thức này được gọi bằng cách gọi publishProgress bất cứ lúc nào từ doInBackground gọi phương thức này.
    Các nhiệm vụ có thể được hủy bỏ bằng cách gọi hủy bỏ (boolean) phương thức. Điều này sẽ gây ra các cuộc gọi tiếp theo để isCancelled () để trở về đúng.
    Sau khi gọi phương pháp này, onCancelled (Object) phương thức được gọi là thay vì onPostExecute () sau khi doInBackground () trả về.

 2. Volley

Volley là một thư viện mạng( library network) được Google giới thiệu năm 2013 để quản lý các request Network và lưu trữ những response trên các ứng dụng Android mà không cần các Developer viết nhiều code như trước. Các tools bên trong Volley cho phép cùng một lúc thục hiện nhiều request trên các thread (luồng xử lý dữ liệu) khác nhau với các mức độ ưu tiên (priority) khác nhau. Tất cả request được thực hiện và lưu trữ trong bộ nhớ cache giúp cho việc reload lại dữ liệu nhanh hơn. Nó đặc biện hữu dụng với những dữ liệu như JSON, Image, String,… Nhưng lại không phải là ý tưởng tốt cho việc sử dụng với các dữ liệu lớn như music hay movies.

           Những class request có trong thư viện Volley này bao gồm : jsonObjectRequest, jsonArrayRequest,                  StringRequest, ImageLoader kết với các constructor đi kèm như : POST, GET, DELETE, PUT, COPY,              …

      3. Retrofit

  • Retrofit là một Rest Client (Tìm hiểu thêm về chuẩn RESTFul dưới link tham khảo) cho Android và Java và được tạo ra bởi Square. Họ làm cho việc nhận và tải lên JSON (hoặc dữ liệu khác) một cách khá dễ dàng tới một WebService dựa trên mô hình REST.
  • Các gói trang bị thêm cho phép sử dụng các bộ chuyển đổi sau đây:
    • Gson: com.squareup.retrofit:converter-gson
    • Jackson: com.squareup.retrofit:converter-jackson
    • Moshi: com.squareup.retrofit:converter-moshi
    • Protobuf: com.squareup.retrofit:converter-protobuf
    • Wire: com.squareup.retrofit:converter-wire
    • Simple XML: com.squareup.retrofit:converter-simplexml
  • Để làm việc với Retrofit bạn cần triển khai cơ bản 3 lớp:
    • Model class to map JSON Data
    • Interfaces để định nghĩa các API cho Webservice
    • Retrofit.Builder Lớp để định nghĩa URL Endpoint cho các hoạt động liên quan tới Http
  • Một số lý do nên Retrofit cho Networking:
    • Performance tốt.
    • Dễ sử dụng.
    • Dùng chung được với RxAndroid.

So Sánh tốc độ bằng sử dụng viết ứng dụng mô phỏng kết quả cho được

Chủ Nhật, 11 tháng 12, 2016

So sánh SAX(Event-Based), DOM(Object-based)

I.Parsing XML

- XML Parser là chương trình giúp ta lấy, điều khiển (đọc, xóa, sửa) tài liệt xml

- Đặc điểm:

+ Độc lập ngôn ngữ

+ Độc lập mã nguồn

+ Linh hoạt Phù hợp đa công việc 

- Parser có thể chia làm 2 loại: Event-Based và Object-Based

+ Event-Based: quyết định sẽ phải làm gì với Element, Document (điển hình là SAX=Simple API for XML parsing)

+ Object-Based: convert tài liệu xml sang object (điển hình là DOM=Document Object Model)


II.Event-based(SAX)

- SAX là các API phân tách truy xuất tuần tự đến tài liệu XML. Sax cung cấp một cơ chế cho việc đọc dữ liệu từ một tài liệu XML. Nó là một thay thế tốt và hay dùng thay cho DOM. Tên của nó là viết tắt của “Simple API for XML” (tiếng Anh, tức là “API đơn giản cho XML”).

- Bộ phân tách mà hiện thực SAX (ví dụ, bộ phân tách SAX Parser) xử lí thông tin XML dưới dạng một dòng dữ liệu (single stream of data). Dòng dữ liệu này là đơn hướng, nghĩa là dữ liệu đã đọc rồi thì không thể đọc lại ngoại trừ phân tách lại từ đầu.

Hầu hết những ai sử dụng XML tin rằng kết quả của mẫu hình SAX là xử lí nhanh hơn DOM. Điều này là vì SAX stream dùng ít bộ nhớ hơn thay vì phải lưu tất cả trong bộ nhớ như với cây DOM.

- SAX có hai interface cơ bản là:

+ XMLReader: gồm thực hiện việc đọc file XML và phân tích file đó bằng cách gọi các phương thức của ContentHandler.

+ ContentHandler: gồm các phương thức xử lý việc nhận dữ liệu từ việc phân tích.

SAX được thiết kế theo Observer design pattern. XMLReader đóng vai trò là Subject và ContentHandler đóng vai trong là các Observer. Nhưng mỗi thực thể XMLReader chỉ cho phép đăng ký một listener.

III.Object based(DOM)

- DOM là chữ viết tắt từ tiếng Anh Document Object Model (“Mô hình Đối tượng Tài liệu”), là một giao diện lập trình ứng dụng (API). Thường thường DOM, có dạng một cây cấu trúc dữ liệu, được dùng để truy xuất các tài liệu dạng HTML và XML. Mô hình DOM độc lập với hệ điều hành và dựa theo kỹ thuật lập trình hướng đối tượng để mô tả tài liệu.

- Mặc dù một tài liệu hay văn bản có cấu trúc chặt chẽ (well-structured document) luôn luôn có thể được mô hình hóa bằng một cấu trúc dạng cây, DOM không có giới hạn về cấu trúc dữ liệu của một tài liệu.

- DOM API được định nghĩa bởi cả Microsoft và Sun để thao tác trực tiếp tài liệu XML trên HTML và trong ứng dụng sử dụng tài liệu XML. Ở đây, chúng tôi đề cập đến DOM API của Sun trong việc thao tác khai thác tài liệu XML trên ứng dụng

Các kiểu dữ liệu được dành cho node trong API như sau:

+ Element, Node: tương ứng Element trong tài liệu XML.

+ Attribute là dạng node không được thể hiện trong mô hình cây mà chúng là tập Node được lưu trong Map và là thuộc tính của Element Object được lưu tương ứng trên hình cây. Điều này có nghĩa, muốn truy cập Attribute thì phải truy cập đến Element.

+ Các kiểu dữ liệu thông thường như Comment, CDATA Section, Processing Instruction, DocumentType tương ứng với các thành phần trong XML như là Comment, CDATA Section, Processing Instruction và DTD.

+ Text: kiểu dành cho chữ trong tài liệu xml.

- Hầu hết các bộ phân tích XML (XML parsers) (ví dụ: Xerces) và bộ xử lí XSL (ví dụ: Xalan) đã được phát triển để sử dụng cấu trúc cây này. Những hiện thực như vậy đòi hỏi toàn bộ nội dụng của một văn bản phải được phân tích và lưu trong bộ nhớ. Vì thế, DOM được sử dụng tốt nhất trong các ứng dụng mà trong đó các thành phần của tài liệu có thể được truy xuất và thao tác một cách ngẫu nhiên. Với các ứng dụng dựa trên XML, bao gồm yêu cầu đọc/ghi có chọn lọc cho mỗi lần phân tích (one-time selective read/write per parse), DOM cho thấy được sự tối ưu về mặt bộ nhớ. Trong các trường hợp đó thì giao diện lập trình ứng dụng SAX trở nên rất tiện lợi về cả mặt tốc độ và bộ nhớ.

IV.Kết

- So sánh giữa DOM và SAX:

+SAX tốn ít tài nguyên nên phù hợp với việc quét những tài liệu lớn,DOM phù hợp với tài liệu nhỏ (do phải convert tài liệu xml sang object).

+ SAX phù hợp với việc lấy một phần nhỏ trong rất nhiều tài liệu XM, DOM phù hợp với việc điều khiển toàn bộ.

SAX nhanh hơn DOM.

- XSLT (The XML Stysheet Language for Transformations) là một ngôn ngữ để biến đổi tài liệu XML thành một dạng khác.