LẬP TRÌNH WEBSERVICE VỚI MIDP

Một phần của tài liệu Tìm hiểu và xây dựng ứng dụng enterprise cho điện thoại di động bằng J2ME” (Trang 56)

4.4.1 Lập trình mạng MID trên HTTP client

a. Khái quát

Đặc tả MIDP 1.0 phát biểu rằng các triển khai của MIDP trên thiết bị di động bắt buộc phải hỗ trợ ít nhất là kết nối HTTP 1.1 sử dụng khung kết nối chung. Sử dụng kết nối client HTTP 1.1 nghĩa là thiết bị gởi một yêu cầu (request) và server gởi về một hồi đáp (response) tương ứng.

Bằng cách chỉ dùng kết nối HTTP client nghĩa là server không thể thiết lập liên lạc với thiết bị ngoại trừ bằng cách hồi đáp một request. Một MIDlet HTTP client thông thường sẽ dùng cả hai phương thức HTTP GET và POST.

Đặc tả 2.0 phát biểu rằng cả HTTP và HTTPS bắt buộc phải được hỗ trợ.

b. Thân thông điệp HTTP

Thông tin gởi trong thân thông điệp HTTP request và response đơn giản là một luồng byte. MIDlet và servlet chọn kiểu định dạng thông tin để mã hóa các byte này.

c. Thân thông điệp SOAP/HTTP

Các điểm cuối dịch vụ Web dựa trên SOAP trao đổi các thông điệp SOAP với nhau. HTTP là một cơ chế mặc định dùng để truyền thông điệp SOAP. Thông điệp SOAP chứa dữ liệu theo định dạng XML. Thông điệp XML có thể dùng cả UTF-8 hay UTF-16 để làm bảng mã và mã hóa.

4.4.2 Khái quát về dịch vụ Web (Web service), SOAP và WSDL

Thuật ngữ “Dịch vụ Web” (Web service) nói đến truyền thông ứng dụng- đến-ứng dụng (application-to-application). Một dịch vụ Web đơn giản là một dịch vụ trên Internet có khả năng được truy xuất thông qua giao diện theo khuôn dạng sử dụng các giao thức Internet chuẩn như HTTP.

World Wide Web Consortium (W3C) định nghĩa dịch vụ Web như sau:

Một dịch vụ Web là một hệ thống phần mềm được nhận dạng bằng một URI (Uniform Resource Identifier), mà các giao diện chung và sự gắn kết của nó được định nghĩa và mô tả bằng XML. Định nghĩa của nó có thể được nhận ra bằng các hệ thống phần mềm khác. Các hệ thống này sau đó có thể tương tác với dịch vụ Web theo phương cách được mô tả trong định nghĩa của nó, sử dụng các thông điệp theo XML được chuyển bằng các giao thức Internet.

Hai đặc tả quan trọng về dịch vụ Web là Ngôn ngữ mô tả dịch vụ Web (Web Services Description Language – WSDL) và Giao thức truy xuất đối tượng đơn giản (Simple Object Access Protocol – SOAP). WSDL được dùng để mô tả một dịch vụ Web đã được triển khai. SOAP được dùng để định nghĩa định dạng của thông điệp được trao đổi giữa các điểm cuối (thí dụ như client và server) của dịch vụ Web trong suốt quá trình hoạt động của dịch vụ Web đó. Một dịch vụ Web có thể tự đăng ký ở một nơi đăng ký thích hợp (ví dụ bằng cách cung cấp mô tả WSDL của nó) để client có thể nhận ra nó. Các tiến trình này được gọi là quá trình đăng ký và nhận biết dịch vụ.

PHẦN 2: XÂY DỰNG ỨNG DỤNG DEMO

Có thể chia ứng dụng trên điện thoại di động thành 2 loại:

Ứng dụng chạy đơn trên điện thoại không cần tương tác với môi trường bên ngoài: đặc điểm chính của loại ứng dụng này là có kích thước nhỏ,yêu cầu đáp

ứng về xử lý phần cứng với thiết bị thấp do đó có thể lưu trữ toàn bộ xử lí trên di động.

Ứng dụng tương tác với môi trường bên ngoài: đặc điểm của loại ứng dụng này là kích thước lớn,đòi hỏi phần cứng xử lý mạnh do đó bản thân thiết bị di động không thể lưu trữ cũng như xử lí điều này đòi hỏi sự giao tác với các phần khác (server để lưu trữ và xử lý,đường truyền vật lí để trao đổi), đây chính là những ứng dụng lớn hay gọi là các ứng dụng doanh nghiệp.

CHƯƠNG 1:ỨNG DỤNG CHẠY ĐƠN KHÔNG TƯƠNG TÁC VỚI MÔI TRƯỜNG BÊN NGOÀI “Tetris”

1.MỤC TIÊU

Mục tiêu của chương trình là giúp người chơi giải trí với một chương trình gọn nhẹ và miễn phí chỉ cần sở hữu một chiếc điện thoại có hỗ trợ Java,

Chương trình được viết dựa theo mô hình các luồng vốn là thế mạnh của Java nên chương trình gọn nhẹ.chính xác, giao diện thân thiện có thể ứng dụng ngay trong thực tế.

Người dùng nếu có điện thoại hỗ trợ Java thì có thể sử dụng chương trình. Nếu điện thoại của người dùng và nhà cung cấp dịch vụ cho phép tải ứng dụng trên Internet xuống điện thoại di động thì người dùng có thể tải trực tiếp ứng dụng từ địa chỉ URL do Web server cung cấp, nếu không thì phải cài đặt chương trình bằng cách giao tiếp với máy tính bằng hồng ngoại, cáp,...

2. CHỨC NĂNG

2.1 Chi tiết chức năng ứng dụng Midlet

2.1.1 Sơ đồ phân ra chức năng

Khi người dung mở ứng dụng màn hình thông tin sẽ xuất hiện,lựa chọn trờ chơi để vào giao diện chính, người dung sẽ chọn các cấp độ để vào giao diện của người chơi hoặc chọn thoát ra khỏi màn hình chính.

+Exit +Level 0 +Level 1 + Level 2 + Level 3 + Level 4 +Level 5 +Level 6 + Level 7 + Level 8 + Level 9 +Pause +Left + Right + Rotate + Rotate + Down + Drop +Resume Exit:

Chọn Exit người chơi thoát khỏi giao diện chính. Level 0 -> 9:

Chọn chơi với các mức cở sở từ 0 đến 9.Có 20 mức từ 0 đến 20 nhưng với các mức từ 10 đến 20 thì người chơi không được lựa chọn trực tiếp mà tăng theo cấp độ chơi. (adsbygoogle = window.adsbygoogle || []).push({});

Pause:

Sau khi chọn level để chơi, người chơi vào giao diện người chơi.Lựa chọn pause để tạm dừng các trang thái hiện tại.

Left

Lựa chọn phím left trên màn hình để di chuyển khối hình sang trái. Right:

Lựa chọn phím right trên màn hình để di chuyển khối hình sang phải. Rotate:

Lựa chọn phím up để xoay hình . Down:

Lựa chọn phím Down để di chuyển khối hình xuống. Drop:

Lựa chọn phím Enter để di chuyển khối hình xuống dưới ngay lập tức. Resume:

Lấy lại trạng thái chơi tiếp sau khi tạm dừng

2.1.2 Sơ đồ luồng dữ liệu mức ngữ cảnh

Hình 2.1.2: Sơ đồ luồng dữ liệu mức ngữ cảnh

2.1.3 Sơ đồ luồng dữ liệu mức đỉnh

Hình 2.1.3: Sơ đồ luồng dữ liệu mức đỉnh

+ Chức năng chọn cấp độ chơi

Hình 2.1.4: Sơ đồ luồng dữ liệu mức dưới đỉnh + Chức năng chọn hành động

Hình 2.1.5: Sơ đồ luồng dữ liệu mức dưới đỉnh

2.2 Chức năng phía Server

Là ứng dụng nhỏ không đòi hỏi tương tác phía server nên không tồn tại cấu hình server cho ứng dụng Tetris

3.THIẾT KẾ CƠ SỞ DỮ LIỆU

Không có cơ sở dữ liệu.

4.MÔ HÌNH 4.1 Thuật toán

4.1.1 Khung chơi chính

Khung chơi chính là một lưới các ô nhỏ, bao gồm 10 hàng và 20 cột.Tổng cộng là 200 ô nhỏ.

Hình 2.1.6: Khung chơi chính Các ô nhỏ được chia ra bởi tọa độ x, y trong trục tọa độ (X,Y): - Trục ngang là trục X và mở rộng về bên phải từ 1 đến 10. - Trục đứng là trục Y và mở rộng lên trên từ 1 đến 20. - Tọa độ dưới cùng bên trái là (1,1).

- Tọa độ trên cùng bên phải là (10,20). - Một ô có thể rỗng hay được lấp đầy.

4.1.2 Khối hình

Hình 2.1.7: Các khối hình cơ bản

- Mỗi một khung hình được bao trong một khung hình cơ sở gồm 4 ô, 4 cột. - Các khối hình khi quay vẫn nằm trong ô khung bao cơ sở này, có 4 hướng quay lần lượt là {1,2,3,4}.

- Sau khi quay thì vị trí xoay thay đổi từ {1,2,3,4} đến {2,3,4,1}.

- Hình “O” chỉ có duy nhất một trạng thái, vì dù quay nó cũng không làm xuất hiện trạng thái mới (adsbygoogle = window.adsbygoogle || []).push({});

- Hình “L,J,T” có 4 trạng thái khi quay. - Hình “I,S,Z” có 2 trạng thái khi quay.

Hình 2.1.8: Lưu đồ thuật toán

Hình 2.1.9: Sinh khối hình

Khi một khối xuất hiện vị trí tâm của nó là dấu chấm trên hình và các ô là phần màu mờ trong hinh 2.1.9

Khi một trò chơi bắt đầu các khối hình sẽ rơi tự do và việc này lặp lại khi tọa độ được xác định trên đầu bảng.

Có 7 khối và sự xuất hiện của các khối được tính theo thuật toán sau đây:

Piece = 1 + (RandomInteger % 7); // 1..7

Hằng số 1/7 đóng vai trò quan trọng trong việc xác định khối hình nào sẽ xuất hiện (xác suất xuất hiện mỗi khối là 1/7).

4.1.5 Bảng điều khiển

Trong suốt quá trình chơi thì các phím chức năng sau có hiệu lực:

[1] LEFT : Request to translate left by one column; [2] RIGHT : Request to translate right by one column; [3] ROTATE : Request to do a "counter-clockwise rotation"; [4] DROP : Request to instantly drop the piece;

[5] DOWN: Request to translate down by one column

Tất cả các lệnh trên có hiệu quả khi ấn phím.

Khi một nút được ấn thì yêu cầu được gửi đi,và nút được nhấn giữ nguyên trạng thái đí đến khi có phản hồi.

Các phím cơ bản là:

+ Xoay: chỉ thực hiện được khi không chồng chéo và va chạm phải thành,biên hay đích của bảng.

+ Trái,phải: chỉ thực hiện được nếu không chạm 2 bên biên hay các khối khác. + Xuống: chỉ thực hiện được nếu không chạm biên các khối.

+ Đích: cho phép các khối tới đích ngay lập tức và chỉ thực hiện được nếu không gặp cản là các khối hình khác.

4.1.6 Các thông số

a. Điểm tối đa

Khi một khối chuyển động xuống ăn điểm thì số điểm này phụ thuộc vào từng khối hình mà ăn điểm tối đa.

Bảng điểm tối đa ăn điểm với từng khối là:

Piece Max. Simultaneous Rows Completed ===== ================= "O" 2 "I" 4 "S" 2 "Z" 2 "L" 3 "J" 3 "T" 2 b. Cấp độ

Có 10 mức cơ sở từ 0 đến 9 với độ khó tăng dần.Chỉ số này tính theo công thức:

Actual_Level = max( Initial_Level, Earned_Level );

Initial_Level là mức cơ sở mà người chơi đã chọn từ ban đầu 0->9. Earned_Level được xác định theo công thức:

{ 0, 1, 2, ..., 10 } --> Earned Level 0 { 11, 12, ..., 20 } --> Earned Level 1 { 21, 22, ..., 30 } --> Earned Level 2 { 31, 32, ..., 40 } --> Earned Level 3 { 41, 42, ..., 50 } --> Earned Level 4 { 51, 52, ..., 60 } --> Earned Level 5 { 61, 62, ..., 70 } --> Earned Level 6 { 71, 72, ..., 80 } --> Earned Level 7 { 81, 82, ..., 90 } --> Earned Level 8 { 91,...infinity* } --> Earned Level 9 hay

Earned_Level = ((Lines_Completed - 1) / 10); if (Earned_Level < 0) Earned_Level = 0; if (Earned_Level > 9) Earned_Level = 9;

c. Độ trễ

Đỗ trễ phụ thuộc vào từng cấp độ,cấp độ càng cao càng khó tương ứng với đỗ trễ càng thấp. (adsbygoogle = window.adsbygoogle || []).push({});

Ta có bảng thời gian sau:

Iteration_Delay [seconds] Actual_Level (rounded off)

============ ========================= 0 0.50 1 0.45 2 0.40 3 0.35 4 0.30 5 0.25 6 0.20 7 0.15 8 0.10 9 0.05

Công thức tính độ trễ được tính như sau:

Iteration_Delay = ((10.0 - Actual_Level) / 20.0) seconds

d. Điểm

Điểm tùy thuộc vào số hàng ăn được và điểm thưởng tùy thuộc vào số lượng hàng ăn điểm.

4.2 Các module xử lý

4.2.1 Phía Client

a. Tổng quát

Ứng dụng phía client được chia làm 3 gói chính là: tetris, tetris.ui và tetris.model:

+Gói tetris gồm lớp Midlet và các lớp tạo luồng, hằng số phục vụ cho việc khởi tạo chính của chương trình

+Gói tetris.ui chứa các lớp giao diện: DisplayBox cấu hình hiển thị chung. TetrisCanvas gọi giao diện canvas chung.Các lớp TitleBox, NextPieceBox, InforBox chứa xứ lý từng hộp giao diện.

+Gói tetris.model chứa lớp tetris.board và tetris.piece định nghĩa cấu hình và sự xuất hiện của bảng trò chơi và các khối hình.

Hình 2.1.10: Package

Tetris Hình 2.1.11: Packagetetris.ui

Hình 2.4.12: Package tetris.model

b.Mô hình UML của toàn hệ thống

+TetrisMiDlet.java:TetrisMIDlet là MIDlet chính của ứng dụng, có nhiệm vụ khởi tạo các đối tượng, lấy các thuộc tính từ tập tin .JAD mô tả ứng dụng, hiển thị màn hình giới thiệu, sau đó giao nhiệm vụ hiển thị giao diện người dùng cho màn hình chức năng chính. TetrisMIDlet cũng đảm nhận nhiệm vụ hiển thị lỗi, và trạng thái của ứng dụng khi các lớp màn hình khác yêu cầu.

+DropThread.java:DropThread có vai trò tạo luồng để gán cho sự xuất hiện của mỗi khối hình sau này.

+TetrisConstants.java:TetrisConstants định nghĩa các hằng số dung trong việc gọi ở các lớp khác.

+TetrisBoard.java:Khởi tạo khung chính chủa trờ chơi.

+TetrisPiece.java:Khởi tại các khung hinh cùng với các thuật toán xác định sự xuất hiện của mỗi khối hình.

+DisplayBox.java:Định nghĩa chung các lớp hiển thị cho các box. +TetrisCanvas.java:Định nghĩa phần nền cho board, piece hay các box. +Các lớp hiển thị các box:Định nghĩa cấu hình các hộp hiển thị chung

Hình 2.1.13: Mô hình UML của toàn hệ thống l.Tetris.jad

MIDlet-1:Tetris-Designby ngoclantim.lc@gmail.com,/icon/nlt.png,tetris.TetrisMidlet MIDlet-Jar-Size: 20880 MIDlet-Jar-URL: Tetris.jar MIDlet-Name: Tetris MIDlet-Vendor: Vendor MIDlet-Version: 1.0 MicroEdition-Configuration: J2ME

MicroEdition-Profile: Design by ngoclantim.lc@gmail.com

4.2.2 Phía Server

Không tồn tại phía server.

5. CÀI ĐẶT (adsbygoogle = window.adsbygoogle || []).push({});

5.1 Cấu hình phần cứng

- Là điện thoại di động có hỗ trợ ứng dụng Java và hỗ trợ mạng.

5.2 Cấu hình phần mềm

Để xây dựng ứng dụng cần phải có một số phần mềm sau: - J2ME Wireless Toolkit

- Các phần mềm tùy chọn:

+ IDE để viết chương trình Java như: Netbean,Eclipse,JBuider.. + Proguard để tinh giảm ứng dụng J2ME

5.3 Ngôn ngữ môi trường

Ngôn ngữ xây dựng là Java trên môi trường Window

6. GIAO DIỆN ỨNG DỤNG VÀ ĐÁNH GIÁ HIỆU SUẤT6.1 Giao diện của chương trình 6.1 Giao diện của chương trình

Ứng dụng chạy trên bộ J2ME Wireless Toolkit của Sun Microsystems, đây là bộ công cụ để biên dịch, tiền kiểm tra, đóng gói và giả lập các thiết bị di động theo thiết kế tổng quát như: điện thoại di động, thiết bị QWERTY. Sau đây là một số giao diện khi chạy trên trình giả lập:

Hình 2.1.14:Các giao diện của chương trình

6.2 Hiệu suất của ứng dụng

J2ME Wireless Toolkit có công cụ Memory Monitor cho phép giám sát bộ nhớ sử dụng của ứng dụng trong quá trình thực thi.

Hình 2.1.15 : Đồ thị sử dụng bộ nhớ của ứng dụng

Ta thấy bộ nhớ sử dụng tăng cao khi bắt đầu vào chương trình nhưng ổn định dần khi chạy và giữ mức ổn định đó cho đến lúc kết thúc chương trình.Với tổng dung lượng là 2097152 thì mức sử dụng ổn định ở max là 284484 là hoàn toàn có thể

chấp nhận được, lượng bộ nhớ dư thừa là 1812668.Do đó chương trình có tính ứng dụng cao.

Hình 2.1.16: Chi tiết sử dụng bộ nhớ của các lớp

6.3 Kết luận

Ứng dụng Tetris chạy trên di động không cần tương tác với môi trường bên ngoài, đơn giản nhỏ gọn nhưng từ khâu phân tích thiết kế đều thể hiện tính chuyên nghiệp.Nhưng ta chưa thấy ưu điểm của J2EE trong trường hợp này nhưng bước đầu đã làm quen với J2ME như cách dùng các lệnh và đồ họa màu sắc…, là bước đệm không thể thiếu để đi đến khám phá một “tinh hoa” của enterprise ở chương sau.

CHƯƠNG 2 :ỨNG DỤNG TƯƠNG TÁC VỚI MÔI TRƯỜNG BÊN NGOÀI “Smart Ticket”

1.MÔ HÌNH KẾT NỐI

Ứng dụng MIDlet chạy trên điện thoại di động đóng vai trò 1 client. Client này sau khi đăng ký sử dụng dịch vụ internet cho điện thoại sẽ có khả năng kết nối đến server.

Client được viết bằng J2ME đóng gói thành .jar và .jad. Server là chương trình viết bằng .NET chạy trên HTTP server, không có giao diện. Server sẽ trao đổi thông tin với Database server thông qua các Store procedure. Cơ sở dữ liệu xây dựng trên SQL Server.

Mô hình hoạt động:

+ Điện thoại sẽ chủ động kết nối và gửi gói tin đến web server. Gói tin sẽ được gửi dưới dạng sóng GPRS đến trạm điện thoại, trách nhiệm của nhà cung cấp điện thoại sẽ phải chuyển tín hiệu từ dạng sóng GPRS sang dạng tín hiệu truyền trong đường truyền hữu tuyến internet.

+ Lúc này nhà cung cấp dịch vụ di động sẽ hoạt động như một gateway, làm trung gian liên lạc cho thiết bị di động và web server.

+ Gói tin được điện thoại di động gửi đến web server là những gói tin HTTP request và ngược lại web server sẽ hồi đáp bằng những gói tin HTTP response. Các

Một phần của tài liệu Tìm hiểu và xây dựng ứng dụng enterprise cho điện thoại di động bằng J2ME” (Trang 56)