1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu JM và xây dựng ứng dụng minh họa (Đặng Nguyễn Kim Anh vs Đào Anh Tuấn) - 4 docx

57 327 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Java Mobile name="number" type="s:string" /> <s:element minOccurs="1" maxOccurs="1" name="type" type="s:string" /> <s:element minOccurs="1" maxOccurs="1" name="balance" type="s:decimal" /> </s:sequence> <s:attribute name="status" type="s:string" /> </s:complexType> Dựa vào định nghĩa trên, một đối tượng thuộc lớp Acct có thể được thể hiện như sau: <?xml version="1.0" encoding="utf-8"?> <account status="active"> <description>Adam's savings acct</description> <number>1234-XX</number> <type>SV</type> <balance>10000</balance> </account> Sau đó chúng ta phải định nghĩa cấu trúc các thông điệp được trao đổi trong quá trình gọi hàm và nhận kết quả. Ta tuân theo một quy tắc: cấu trúc gói tin request (lời gọi hàm) sẽ có tên trùng với tên hàm, cấu trúc gói tin response sẽ có tên là tên hàm cộng với Response ở cuối. <s:element name="GetAccount"> <s:complexType> <s:sequence> <s:element minOccurs="1" maxOccurs="1" name="acctNumber" nillable="true" 166 Java Mobile type="s:string" /> </s:sequence> </s:complexType> </s:element> <s:element name="GetAccountResponse"> <s:complexType> <s:sequence> <s:element minOccurs="1" maxOccurs="1" name="account" type="s0:Acct" /> </s:sequence> </s:complexType> </s:element> Trên đây là toàn bộ nội dung phần types. 8.3.2.2. Phần tử message: Bên cạnh việc định nghĩa các kiểu dữ liệu được truyền giữa client và server ta cần phải định nghĩa các thông điệp được truyền đi và hồi đáp. Bởi và các thông điệp không phụ thuộc vào các giao thức tầng dưới nên các thông điệp có thể được định nghĩa dưới dạng HTTP-GET/POST, SOAP hay bất kỳ một protocol nào hỗ trợ Web Service. Chúng ta có thể đặt tên bất kỳ cho thông điệp vì web service không đưa ra một ràng buộc cũng như quy tắc đặt tên nào cả. Các phần tử message có thể chứa nhiều phần tử con "part" (cũng có khi không chứa phần tử con nào). Một phần tử "part" tượng trưng cho một tham số được truyền trong hàm. Một phần tử part phải có một tên và kiểu dữ liệu tương ứng đã được định nghĩa. Đối với ví dụ trên thì phần tử message có dạng như sau: <message name="GetAccountIn"> <part name="parameters" element="s0:GetAccount" /> </message> 167 Java Mobile <message name="GetAccountOut"> <part name="parameters" element="s0:GetAccountResponse" /> </message> Ở đây ta gập lại cấu trúc GetAccout và GetAccountResponse đã định nghĩa ở phần types. Theo như định nghĩa trên, thông điệp đầu vào GetAccountIn nhận một tham số có kiểu GetAccount và thông điệp đầu ra GetAccountOut trả về một kết quả có kiểu GetAccountResponse; cả hai kiểu này đã được định nghĩa ở phần tử types trước đó. Các message được định nghĩa này sẽ được dùng ở phần sau. 8.3.2.3. Phần tử portType: Ta có thể nói một cách đơn giản như sau: phần tử “types” định nghĩa các kiểu dữ liệu, phần tử “message” định nghĩa tất cả các thông điệp (hay cũng có thể gọi là gói tin) vào/ra nhưng lại chưa thể hiện được “thông điệp nào là của phương thức nào”, vai trò này do portType đảm nhận. <portType name="BankService"> <operation name="GetAccount"> <input message="s0:GetAccountIn" /> <output message="s0:GetAccountOut" /> </operation> </portType> Chúng ta có thể nhận thấy, các từ khóa input và output được dùng để chỉ rõ gói tin request và gói tin response. Phần định nghĩa portType trên cũng khá đơn giản, đối với hàm GetAccount ( ) sẽ có hai thông điệp: • Thông điệp input: Lời gọi hàm từ client gửi lên server, có tên GetAccountIn. Nếu đọc ngược lên phần tử message, ta sẽ thấy thông điệp 168 Java Mobile GetAccountIn sẽ có kiểu GetAccount, và kiểu dữ liệu GetAccount được định nghĩa trong phần tử types. • Thông điệp output: Kết quả trả về được gửi từ server đến client, có tên GetAccountOut. Tương tự, phần tử message đã cho chúng ta biết thông điệp GetAccountOut sẽ có kiểu GetAccountResponse và kiểu này đã được định nghĩa trong phần types. 8.3.2.4. Phần tử binding Các phần tử chúng ta đã xem xét qua có trách nhiệm định nghĩa web service một cách trừu tượng: chúng cho biết các phương thức được web service hỗ trợ, các thông tin kèm theo như tham số truyền vào, kết quả trả về của mỗi phương thức. Tuy nhiên, với những thông tin trên chúng ta chưa xác định được sẽ phải dùng công cụ nào để truy xuất đến web service này: ta sẽ dùng SOAP kết hợp với HTTP hay SOAP/HTTPS hay công cụ nào khác? Phần tử binding sẽ định nghĩa cách thức truy cập web service thông qua các protocols bên dưới. Mỗi phần tử binding sẽ mô tả cách thức liên kết một portType vào một protocol nhất định. Nếu web service của chúng ta hỗ trợ nhiêu protocol thì phải tạo cho mỗi protocol một phần tử binding. <binding name="BankService" type="s0:BankService"> <soap:binding transport = "http://schemas.xmlsoap.org/soap/http" style="document" /> <operation name="GetAccount"> <soap:operation soapAction = “http://woodgrovebank.com/GetAccount” style="document" /> <input> <soap:body use="literal" /> </input> 169 Java Mobile <output> <soap:body use="literal" /> </output> </operation> </binding> Đoạn ví dụ trên cho biết web service sử dụng SOAP là protocol trao đổi thông tin và gói tin soap sẽ được vận chuyển bằng HTTP, chúng ta có thể sử dụng nhiều công cụ khác để truy xuất đến các hàm của web service nhưng SOAP hiện nay là thông dụng nhất. Đoạn định nghĩa trên còn chỉ rõ “document/encoding style” được sử dụng là dạng document/literal (còn có một dạng khác khá phổ biến là rpc/encoded; hiện tại j2me chỉ hỗ trợ web service dạng document/literal). 8.3.2.5. Phần tử service: Phần cuối cùng của file WSDL chứa định nghĩa các thông số vật lý cụ thể dùng để truy xuất đến web service. <service name="BankService"> <port name="BankService" binding="s0:BankService"> <soap:address location = "http://www.woodgrovebank.com/Bank/BankService.asmx"/> </port> </service> Giá trị location trong phần tử port chỉ rõ vị trí đặt web service. Phần tử “binding” cho biết cách thức ánh xạ các phương thức trong phần tử “portType” thành các gói tin SOAP (hoặc gói tin của các protocols khác) nhưng không cho biết làm thế nào để tạo được một đối tượng portType. Đấy là nhiệm vụ của phần tử port, phần tử port sẽ ánh xạ một phần tử portType sang một địa chỉ URI cụ thể. Node 170 Java Mobile service sẽ gom nhóm các port liên quan đến nhau. Nếu web service có thể được truy xuất đến bởi nhiều protocol thì sẽ có nhiều phần tử port được định nghĩa. Trên đây là toàn bộ nội dung của một file WSDL, có khá nhiều điểm phức tạp. Tuy nhiên, với vai trò là người sử dụng web service cũng như người xây dựng web service đơn thuần chúng ta không cần nắm rõ cấu trúc file này vì đã có các công cụ hỗ trợ. Cả J2ME và Visual .NET đều hỗ trợ công cụ đọc file WSDL để phát sinh các lớp tương ứng phục vụ cho việc truy xuất hàm từ xa, mọi công việc phức tạp bên dưới đã được giấu đi với nhà phát triển ứng dụng. 171 Java Mobile Chương 9: Ứng dụng đăng ký học phần 9.1 Đặc tả chương trình: 9.1.1 Tổng quan: Chương trình hỗ trợ các chức năng đăng ký học phần, xem thời khoá biểu, xem điểm thi… chạy trên môi trường điện thoại di động. Sau khi cài đặt chương trình lên điện thoại và đăng ký dịch vụ truy cập Internet từ điện thoại, người dùng có thể sử dụng hầu hết các tiện ích tương tự hệ thống SMS mà không cần có máy tính kết nối Internet như hiện nay. Ngoài J2ME, chương trình còn sử dụng công nghệ WebService trong kết nối mạng. Vấn đề bảo mật trong chương trình tương đối không cần thiết, chỉ sử dụng trong quá trình gửi password khi đăng nhập nhằm tránh việc đánh cắp password. Chương trình được thực hiện với mục tiêu mô phỏng lập trình trên thiết bị di động bằng J2ME nên chỉ sử dụng cơ sở dữ liệu tự xây dựng. Việc ứng dụng thực tế trên cơ sở dữ liệu chính của hệ thống SMS là hướng mở rộng trong tương lai của chương trình. 9.1.2 Các chức năng chính: Khi người dùng khởi động ứng dụng client, chương trình yêu cầu người dùng đăng nhập với account, password của hệ thống SMS. Nếu đăng nhập không hợp lệ người dùng phải nhập lại account/password để đăng nhập lại. Nếu đăng nhập hợp lệ, người dùng có thể truy cập hệ thống và sử dụng các chức năng sau của chương trình. 9.1.2.1 Xem thời khoá biểu: Người dùng nhập tên và số thứ tự lớp (vd:Lớp TH2001 STT:1) để xem thời khoá biểu của học kỳ hiện tại của lớp tương ứng. 172 Java Mobile 9.1.2.2 Đăng ký học phần: Trong thời gian được đăng ký, người dùng có thể đăng ký các học phần lý thuyết cũng như học phần thực hành mà trường mở trong học kỳ này. 9.1.2.3 Xem phiếu đăng ký: Xem lại các học phần lý thuyết và thực hành mà người dùng đã thực hiện đăng ký. 9.1.2.4 Xem điểm thi: Xem kết quả học tập của sinh viên . 9.1.2.5 Xem thông báo: Xem thông báo của giáo vụ khoa. 173 Java Mobile 9.2 Kiến trúc chương trình: 9.2.1 Mô hình kết nối: Store Procedures GPRS HTTP request/ response Gateway Web Server .NET Internet Client J2ME / JSR172 DB Server SQL Server Hình 9.1 Kiến trúc chương trình ứng dụng Ứ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 DKHP.jar và DKHP.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: 174 Java Mobile • Đ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 gói tin HTTP request và HTTP response này sẽ chứa bên trong các thông điệp SOAP request và SOAP response tương ứng. Các gói tin SOAP chính là trung tâm của kỹ thuật web service, các thông điệp SOAP này sẽ chứa các lời gọi hàm, tham số truyền đi, các tham số trả về… tạo thành mô hình truy xuất hàm từ xa RPC (Remote Procedure Call). • Khi web server nhận được yêu cầu xử lý từ điện thoại (thể hiện qua các lời gọi hàm) sẽ truy xuất và giao tiếp với SQL Server qua các store procedure để thực hiện các xử lý nghiệp vụ của chương trình. Thông tin sau khi được sử lý sẽ được gửi trả cho client thông qua các HTTP response. • Các gói tin HTTP response này sẽ đến nhà cung cấp dịch vụ di động, chuyển thành dạng tín hiệu GPRS và về đến client. Trên đây là mô hình khái quát hoạt động của ứng dụng trong bối cảnh mạng điện thoại di động. Yêu cầu duy nhất của thiết bị phần cứng là điện thoại phải hỗ trợ GPRS và thư viện JSR 172. Thư viện JSR 172 có chức năng tạo các thông điệp SOAP và phân tích nội dung các thông điệp này, nếu không có thư viện này chúng ta không thể tạo các lời gọi hàm cũng như lấy các kết quả trả về từ hồi đáp của server. 175 [...]... trong các tiêu đề và nhấn nút xem thông báo Client sẽ gửi yêu cầu đến server o Server truy cập cơ sở dữ liệu để lấy nội dung thông báo, trả về cho client Client hiển thị nội dung này lên màn hình cho người dùng 182 Java Mobile 9 .4 Thiết kế mô hình dữ liệu: 9 .4. 1 Mô hình thực thể kết hợp: Hình 9 .4 Mô hình thực thể kết hợp ER 9 .4. 2 Các bảng dữ liệu: ChuyenNganh: MaChuyenNganh, TenChuyenNganh SV: MaSV, TenSV,... DiemTC DangKyTH: MaSV, MaLopTH ThongBao: MaThongBao, NgayTB, TieuDe, NoiDung 9 .4. 3 Chi tiết các bảng dữ liệu: 9 .4. 3.1 ChuyenNganh: Các chuyên ngành của khoa Tên field Kiểu dữ liệu MaChuyenNganh TenChuyenNganh nvarchar(100) Ghi chú Mã chuyên ngành nvarchar (4) Ý nghĩa Khóa chính Tên chuyên ngành Bảng 9.2 Table ChuyenNganh 9 .4. 3.2 SV: Lưu trữ thông tin của sinh viên Tên field Kiểu dữ liệu Ý nghĩa MaSV... viên ChuyenNganh nvarchar (4) Mã chuyên ngành password Mật mã account của sinh viên nvarchar(25) Bảng 9.3 Table SV 1 84 Khóa chính Khoá ngoại Java Mobile 9 .4. 3.3 MonHoc: Lưu trữ thông tin môn học Tên field Kiểu dữ liệu Ý nghĩa MaMH nvarchar(5) Mã môn học TenMH nvarchar(30) Tên môn học SoTCLT int Số tín chỉ lý thuyết SoTCTH int Ghi chú Khoá chính Số tín chỉ thực hành Bảng 9 .4 Table MonHoc 9 .4. 3 .4 GV: Lưu... NoiDung Ghi chú Khoá chính nvarchar(2000) Nội dung thông báo Bảng 9.12 Table ThongBao 9 .4. 4 Ràng buộc dữ liệu: 9 .4. 4.1 Ràng buộc miền giá trị: Điểm lý thuyết, điểm thực hành, điểm tổng cộng trong khoảng 0 đến 10 Ngày sinh của sinh viên phải nhỏ hơn ngày hiện tại Năm học có dạng xxxx-yyyy với yyyy=xxxx+1 Vd: 200 4- 2 005 Mã môn học có dạng xxyyy với xx là dạng ký tự, yyy là các ký số Học kỳ có giá trị... Mobile 9 .4. 4 .4 Ràng buộc chu trình: Sinh viên chỉ được phép đăng ký các học phần thực hành của các học phần lý thuyết đã đăng ký Lop_MonLT MaLopTH MaLopLT DangKyLT DangKyTH MaSV : Các học phần thực hành SV đã đăng ký : Các học phần thực hành có mở ứng với các học phần lý thuyết SV đã đăng ký Hình 9.5 Ràng buộc chu trình 189 Java Mobile 9 .4. 5 Mô hình dữ liệu: Hình 9.6 Mô hình cơ sở dữ liệu 9 .4. 6 Các... Mobile MaLop nvarchar(12) Mã lớp tương ứng STT int Khoá ngoại STT lớp (nếu mở nhiều lớp nhỏ như các lớp Anh văn) MaMH nvarchar(5) Mã môn học HK int Học kỳ (1 hay 2) NamHoc nvarchar(9) Năm học (vd: 200 4- 2 005) SiSo int Sĩ số đăng ký hiện tại SiSoMax int Sĩ số dự kiến MaGV int Mã giáo viên phụ trách Phong nvarchar(10) Phòng học Thu nvarchar(5) Khoá ngoại Lịch học vào các ngày trong Khoá ngoại tuần Tiết... ký trước được đánh dấu riêng o Client nhận thông tin từ server, hiển thị danh sách các học phần thực hành để người dùng đăng ký o Sau khi người dùng nhấn nút đăng ký, client sẽ lấy danh sách các lớp người dùng mới đăng ký và danh sách các lớp người dùng bỏ đăng ký gửi lên server o Server truy cập cơ sở dữ liệu, thực hiện đăng ký và huỷ đăng ký theo yêu cầu của client Luồng sự kiện phụ: Sau khi hết use... đối xứng mà server và client đã chọn từ trước) bằng thuật toán DES thành session key và gửi về cho client o Client dùng khoá bí mật giải mã session key này để tạo lại số ngẫu nhiên tương ứng mà server đã tạo Sau đó, client dùng số ngẫu nhiên vừa tìm được để mã hoá password gửi kèm account đến server o Server nhận hai giá trị này từ client, truy cập cơ sở dữ liệu để lấy password của account tương ứng. .. 9.2.2 Mô hình bảo mật (mã hoá password): Sử dụng thuật toán DES, dùng khoá đối xứng để mã hoá password trong chương trình Same Private Key Encrypted Session Key Encrypted Data Same Session Key Same Session Key Hình 9.2 Mô hình mã hoá password 176 Java Mobile 9.3 Phân tích - thiết kế: 9.3.1 Mô hình use case: 9.3.1.1 Lược đồ chính: Hình 9.3 Lược đồ use case 9.3.1.2 Danh sách các use case: STT Use case Ý nghĩa... o Client hiển thị danh sách lên cho người dùng, người dùng chọn các môn muốn đăng ký hoặc hiệu chỉnh lại đăng ký cũ o Người dùng nhấn nút đăng ký, client lấy danh sách các môn mới được đăng ký và các môn vừa được người dùng gỡ bỏ gửi cho server o Server truy cập cơ sở dữ liệu, xoá các đăng ký thực hành đã đăng ký trong học kỳ này Sau đó xoá các đăng ký lý thuyết cũ đã được gỡ bỏ và ghi các đăng ký . Java Mobile 9 .4 Thiết kế mô hình dữ liệu: 9 .4. 1 Mô hình thực thể kết hợp: Hình 9 .4 Mô hình thực thể kết hợp ER 9 .4. 2 Các bảng dữ liệu: ChuyenNganh: MaChuyenNganh, TenChuyenNganh SV: MaSV,. 9 .4. 3 Chi tiết các bảng dữ liệu: 9 .4. 3.1 ChuyenNganh: Các chuyên ngành của khoa Tên field Kiểu dữ liệu Ý nghĩa Ghi chú MaChuyenNganh nvarchar (4) Mã chuyên ngành Khóa chính TenChuyenNganh. Server Hình 9.1 Kiến trúc chương trình ứng dụng Ứ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ẽ

Ngày đăng: 12/08/2014, 10:20

Xem thêm: Nghiên cứu JM và xây dựng ứng dụng minh họa (Đặng Nguyễn Kim Anh vs Đào Anh Tuấn) - 4 docx

Mục lục

    Lời Cảm Ơn

    Mục Lục

    Danh Sách Các Hình

    Danh Sách Các Bảng

    Phần 1: Kiến thức nền tảng J2ME

    Chương 1: Tổng quan về J2ME

    1.1 Giới thiệu J2ME (Java 2 Micro Edition)

    1.2 Lý do chúng ta cần J2ME

    1.3 Các thành phần của J2ME:

    Chương 2: Giới thiệu CLDC và MIDP

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w