4.1.1.1 Khái niệm:
Web service là một hệ thống phần mềm được thiết kế để hỗ trợ khả năng tương tác giữa các ứng dụng trên các máy tính khác nhau thông qua mạng internet,giao diện chung và sự gắn kết của nó được mô tả bằng XML.Web service có thể xác định bằng địa chỉ URL,thực hiện các chức năng và đưa ra thông tin mà người dùng yêu cầu.Web service được xây dựng dựa trên SOAP.Web service cho phép máy chủ cung cấp dịch vụ trao đổi và truyền dữ liệu với máy client.Khi phía máy client gửi yêu cầu truy vấn,phía server kiểm tra yêu cầu và trả lời yêu cầu dữ liệu của client bằng cách truyền dữ liệu dựa trên chuẩn SOAP.
4.1.1.2 Các đặc điểm của web service:
- Webservice cho phép client và server tương tác được với nhau trong những môi trường khác nhau.
- Web service được xây dựng dựa trên mã nguồn mở và được phát triển từ các chuẩn đã được công nhận.
- Webservice bao gồm nhiều mô đun và có thể đưa lên mạng internet. - Một ứng dụng khi được triển khai sẽ hoạt động theo mô hình client-server.
4.1.1.3 Các yếu tố nền tảng của web service:
Là một chuẩn mở do W3C(World Wide Web Consortium) đưa ra cách thức mô tả dữ liệu,được sử dụng định nghĩa các thành phần dữ liệu trên trang web.XML có cấu trúc hoàn toàn giống HTML.Tất cả các dữ liệu giao tiếp sẽ được chuyển sang định dạng thẻ XML.
4.1.1.3.2 WSDL:
Định nghĩa cách mô tả dịch vụ web theo cú pháp XML,bao gồm các thông tin: - Tên dịch vụ.
- Giao thức và kiểu mã hóa sẽ được dùng khi gọi các hàm của dịch vụ Web. - Loại thông tin:tham số,những kiểu dữ liệu.
Một WSDL gồm hai phần: phần giao diện mô tả giao diện và phương thức kết nối và phần thi hành mô tả thông tin truy xuất CSDL được lưu trong 2 tập tin XML tương ứng là tập tin giao diện dịch vụ và tập tin thi hành dịch vụ.WSDL được sử dụng kết hợp với XML,SOAP để cung cấp dịch vụ web qua internet,client có thể đọc WSDL để xem các chức năng có trên server và dùng SOAP để thực hiện các chức năng đó.
4.1.1.3.3 UDDI:
UDDI được dùng để xác định các thông tin về các web service được cung cấp bởi các nhà cung cấp dịch vụ,cho phép client truy tìm và nhận thông tin được yêu cầu khi sử dụng dịch vụ web.UDDI cung cấp 3 loại thành phần khác nhau:
- White pages(trang trắng): chứa thông tin liên hệ và các định dạng chính yếu của dịch vụ web,như địa chỉ,tên giao dịch,..cho phép các đối tượng khác xác định được dịch vụ.
- Yellow pages(trang vàng): chứa thông tin mô tả dịch vụ web theo những loại khác nhau,cho phép các đối tượng thấy được web service theo từng loại.
- Green pages(trang xanh): chứa thông tin kỹ thuật mô tả các hành vi chức năng của web service.
Giao thức truy xuất đối tượng đơn giản,trao đổi thông tin giữa các ứng dụng thông qua mạng internet,thông thường sử dụng giao thức HTTP.SOAP được xây dựng bởi Microsoft và phần mềm Userland,được thiết kế đơn giản và dễ mở rộng,không bị ràng buộc bởi bất kỳ ngôn ngữ lập trình hoặc công nghệ nào,có cấu trúc như XML,sử dụng các tài liệu XML như những thông điệp trao đổi,SOAP được xem như là cấu trúc xương sống của các ứng dụng phân tán xây dựng từ nhiều ngôn ngữ,hệ điều hành khác nhau.Đặc biệt,SOAP có thể dễ dàng vượt qua tường lửa giúp cho việc liên lạc trở nên dễ dàng hơn.
Cấu trúc một thông điệp SOAP:
Hình 9.Cấu trúc một thông điệp SOAP.
- Phần tử gốc SOAP envelope: phần tử bao trùm nội dung thông điệp,khai báo văn bản XML như là một thông điệp SOAP.
- Phần tử đầu trang SOAP header: chứa các thông tin tiêu đề cho trang,những đầu mục có thể mang dữ liệu chứng thực,thông tin mã hóa,…
- Phần tử khai báo nội dung chính trong thông điệp SOAP body: chứa các thông tin yêu cầu và phản hồi.
Hình 10.Mô hình hoạt động của web service.
Trong mô hình hoạt động của mỗi web service,bao gồm 3 thành phần:
- Các nhà cung cấp dịch vụ service provider,xây dựng và cài đặt đối tượng dịch vụ lên một web server và cung cấp bản mô tả dịch vụ để hướng dẫn mọi người cách khai thác,ngôn ngữ sử dụng cho các bản mô tả dịch vụ là SDL với cấu trúc cú pháp của XML.
- Các nhà khai thác dịch vụ service requester,xem xét các bản mô tả dịch vụ của nhà cung cấp,dựa vào đó xây dựng các lớp trung gian truy xuất đối tượng dịch vụ,thiết kế giao diện cho ứng dụng.
- Những người dùng cuối,truy cập trang web của nhà khai thác dịch vụ,sử dụng một cách gián tiếp dịch vụ web của các nhà cung cấp.
4.1.2 TẠO WEB SERVICE BẰNG ECLIPSE LẤY DỮ LIỆU TỪ CƠ SỞ DỮ LIỆU SQL. SQL.
4.1.2.1 Thiết kế cơ sở dữ liệu.
Hình 11.Mô hình dữ liệu tổng thể CSDL stock.
4.1.2.1.1 Bảng hose.
- Mô tả: lưu trữ thông tin của sàn chứng khoán hose.
- Các thành phần: ticker,date,openprice,highprice,lowprice,closeprice,volume. Bảng 1.hose – lưu trữ thông tin sàn hose.
hose -ticker -date -openprice -highprice -lowprice -closeprice -volume company_list -mack -sanck -giahientai -giasosach -pb -caonhat52tuan -thapnhat52tuan -eps -pe -eps4quytruoc -pe4quytruoc -roa -roe -donbaytc -beta -khoiluongluuhanh -khoiluongniemyet -cophieuquy -nuocngoaisohuu -vonthitruong -doanhthu -lnst -voncsh -tongno -tongtaisan -tencongty -tenquocte -diachi -dienthoai -fax -website
Attribute
Tên trường
Key type
Null
value Data type
Max Data length
Remarks
ticker varchar 9 Mã cổ phiếu
date varchar 10 Ngày tháng năm
openprice varchar 9 Giá mở cửa
highprice varchar 9 Giá cao nhất
lowprice varchar 9 Giá thấp nhất
closeprice varchar 9 Giá đóng cửa
volume varchar 9 Khối lượng
4.1.2.1.2 Bảng company_list.
- Mô tả: lưu trữ thông tin của các công ty có cổ phiếu niêm yết trên các trung tâm giao dịch chứng khoán. - Các thành phần: mack,sanck,giahientai,giasosach,pb,caonhat52tuan,thapnhat52tuan,eps,pe,eps4quytr uoc,pe4quytruoc,roa,roe,donbaytc,beta,khoiluongluuhanh,khoiluongniemyet,cophieuqu y,nuocngoaisohuu,vonthitruong,doanhthu,lnst,voncsh,tongno,tongtaisan,tencongty,tenq uocte,diachi,dienthoai,fax,website.Khoá chính là mack.
Attribute
Tên trường
Key type
Null
value Data type
Max Data length
Mack PK varchar 9 Mã cổ khoán
sanck varchar 10 Sàn chứng khoán
giasosach varchar 9 Giá sổ sách
giahientai varchar 9 Giá hiện tại
pb varchar 9 Price-to-book ratio
caonhat52tuan varchar 9 Cao nhất 52 tuần
thapnhat52tuan varchar 9 Thấp nhất 52 tuần
eps varchar 9 Earning per share
pe varchar 9 Price/earning per share
eps4quytruoc varchar 9 Eps 4 quý trước
pe4quytruoc varchar 9 Pe 4 quý trước
roa varchar 9 Return on total assets
roe varchar 9 Return on common equyty
donbaytc varchar 9 Đòn bẩy tài chính
beta varchar 9 Beta
khoiluongluuhanh varchar 30 Khối lượng lưu hành
khoiluongniemyet varchar 30 Khối lượng niêm yết
cophieuquy varchar 30 Cổ phiếu quý
nuocngoaisohuu varchar 30 Nước ngoài sở hữu
vonthitruong varchar 30 Vốn thị trường
doanhthu varchar 30 Doanh thu
lnst varchar 30 Lợi nhuận sau thuế
voncsh varchar 30 Vốn chủ sở hữu
tongno varchar 30 Tổng nợ
tencongty varchar 100 Tên công ty
tenquocte varchar 100 Tên quốc tế
diachi varchar 200 Địa chỉ
dienthoai varchar 30 Điện thoại
fax varchar 30 Fax
website varchar 100 Website
4.1.2.2 Kết nối tới cơ sở dữ liệu SQL.
Khóa luận dùng hệ quản trị cơ sở dữ liệu SQL Server với nhiều ưu điểm hơn các hệ cơ sở dữ liệu khác như mạnh hơn,tính bảo mật tốt hơn.Để kết nối tới cơ sở dữ liệu bằng ngôn ngữ lập trình Java,khóa luận sử dụng kết nối thông qua ODBC.Để ứng dụng client kết nối với cơ sở dữ liệu server dùng ODBC,ta phải cung cấp thông tin về nguồn dữ liệu ODBC.ODBC cung cấp thông tin này một tên đơn giản để ta có thể tham chiếu đến nó,thay vì phải thiết lập thông tin từ đầu mỗi lần ta cần đến nó.Tên này chính là tên nguồn dữ liệu hay DSN.
Hình 12.DSN stock của cơ sở dữ liệu SQL.
4.1.2.3 Tạo web service bằng Eclipse.
Để xây dựng web service trên Eclipse,cần phải chú ý 2 vấn đề chính là: - Eclipse phải là bản “Eclipse IDE for Java EE Developers”. - Web service runtime là Axis2.
Java EE(Java Enterprise Edition) là môi trường phát triển và triển khai các ứng dụng được phát triển bởi Sun,là cái nền cung cấp các dịch vụ,các hàm giao tiếp và các giao thức triển khai các ứng dụng đa tầng,là một nền tảng chuyên cho lập trình các ứng dụng web trên các web server,bao gồm nhiều công nghệ như JSP,Servlet,..Server J2EE cung cấp 2 container là web container và EJB container:
- EJB container: quản lý và thực thi các thành phần enterprice bean. - Web container: quản lý và thực thi các thành phần JSP,Servlet.
Axis là một web service framework mã nguồn mở được phát triển bởi Apache Software Foundation.Phiên bản hiện nay Axis2 hoạt động linh hoạt,hiệu quả hơn so với phiên bản đầu tiên Axis1.Một số tính năng của Axis2:
- Gửi các thông điệp SOAP.
- Nhận và xử lý các thông điệp SOAP.
- Tạo lớp cài đặt cho cả client và server sử dụng WSDL.
- Hỗ trợ WSDL,cho phép dễ dàng khai thác,truy cập dịch vụ,tự động sinh ra các bản mô tả cho các dịch vụ được phát triển từ Axis2.
4.2 GIAO TIẾP GIỮA CLIENT VÀ SERVER.
Chương trình dùng thư viện mở ksoap2-Android để kết nối web service client và server.Đây là một thư viện SOAP khá hiệu quả cho nền tảng Android với nhiều tính năng cải tiến và đã được sửa nhiều lỗi hơn các phiên bản trước đấy.
4.2.1 KSOAP2-ANDROID LÀ GÌ ?
Ksoap là một thư viện mở cho các SOAP web service client trong môi trường Java như Applet hay ứng dụng J2ME.Ksoap2 được thiết kế lại hoàn toàn dựa trên những bài học từ phiên bản đầu tiên ksoap1.x.Ksoap2-Android là một nhánh trong thư viện ksoap2 được thêm vào để hỗ trợ cho nền tảng Android.
4.2.2 SỬ DỤNG KSOAP2-ANDROID ĐỂ LẤY DỮ LIỆU TỪ SERVER:
Để thực hiện được các chức năng chính của chương trình,chương trình sẽ yêu cầu dữ liệu từ server trả về theo nhiều thông tin khác nhau,nhưng các bước cơ bản để gửi yêu cầu và nhận phản hồi từ server thì tương tự nhau:
- Trước hết phải khởi tạo một SoapObject để gửi yêu cầu cho server với NAMESPACE và METHOD_NAME tùy theo yêu cầu.
- Tùy theo từng phương thức khác nhau mà tham số cần truyền vào khác nhau bằng hàm addProperty có sẵn của đối tượng SoapObject.
- Thiết lập Soap Envelope là thông điệp Soap dùng để trao đổi giữa các ứng dụng và gửi tới web service server.
- Xử lý kết quả phản hồi từ server,lọc lấy thông tin cần thiết.
Ví dụ về yêu cầu thông tin của một mã cổ phiếu và xử lý phản hồi lại của chương trình:
- Khởi tạo một SoapObject:
Hình 13.Khởi tạo 1 Soap object.
- Truyền tham số cần thiết,ở ví dụ này phương thức getInfoByTicker có 2 tham số là: mack,date.
Hình 14.Thiết lập tham số.
- Thiết lập Soap Envelope và gửi tới web service server.
Hình 15.Thiết lập Soap Envelope và gửi tới web service server.
- Xử lý kết quả từ server trả về.
CHƯƠNG 5: XÂY DỰNG VÀ TRIỂN KHAI ỨNG DỤNG
Chương này giới thiệu các chức năng chính của chương trình,cấu trúc thiết kế của client,server và giao diện tương tác server-client,kết quả sau khi đưa chương trình vào hoạt động.
5.1 XÂY DỰNG CHƯƠNG TRÌNH:
5.1.1 CÁC CHỨC NĂNG CHÍNH CỦA CHƯƠNG TRÌNH:
- Theo dõi,cập nhật thông tin các mã cổ phiếu mà người dùng quan tâm.Thông tin được server cập nhật theo từng ngày nên đảm bảo thông tin mà người dùng nhận được là mới nhất.Hiển thị các thông tin của mã cổ phiếu với giao diện chặt chẽ,bố cục hợp lý,logic.
- Theo dõi các tin tức về tình hình chứng khoán trên các sàn giao dịch lớn trong nước và thị trường chứng khoán nước nhà.Thông tin được server cập nhật liên tục.
- Tìm kiếm và thêm các mã cổ phiếu vào trong danh sách những mã cổ phiếu mà người dùng quan tâm.
- Tự động vẽ biểu đồ thể hiện sự biến đổi của giá cả và khối lượng mỗi mã cổ phiếu mà người dùng quan tâm.Biểu đồ được thể hiện theo khoảng thời gian: 1 tuần,1 tháng,3 tháng,6 tháng,1 năm.
request data
request update search
response
request news
Hình 17.Mô hình hệ thống của chương trình.
5.1.2 THIẾT KẾ SERVER:
Phạm vi khóa luận chỉ tập trung vào phần client và giao diện server-client,nên server chỉ làm đủ để phục vụ vấn đề kiểm tra giao diện và các chức năng chính của chương trình.
Biều đồ lớp thiết kế chi tiết:
CSDL CSDL Server Server Client Client Client Client
Hình 18.Thiết kế tổng quan server.
Phần server gồm có lớp chính là MyStock bao gồm 3 phương thức chính với chức năng khác nhau để phục vụ cho các chức năng của client:
- Phương thức getListTicker(String masan): có chức năng lấy tất cả các mã cổ phiếu có trong một sàn giao dịch trong cơ sở dữ liệu.
- Phương thức getAllDataByTicker(String mack): có chức năng lấy toàn bộ dữ liệu của một mã cổ phiếu trong cơ sở dữ liệu.
- Phương thức getInfoByTicker(String mack,String date): có chức năng lấy dữ liệu của một mã cổ phiếu theo một ngày nhất định ở trong cơ sở dữ liệu.
Các lớp stocks,stock,ticker là các lớp nằm trong lớp MyStock là các đối tượng được tạo ra để thuận tiện cho việc cất giữ thông tin.
5.1.3 THIẾT KẾ CLIENT:
Biểu đồ lớp thiết kế chi tiết:
Xác định mối quan hệ giữa các lớp và các thuộc tính,phương thức tương ứng của mỗi lớp.
Hình 19.Thiết kế tổng quan client.
Phần client bao gồm 7 lớp chính đảm nhiệm xây dựng các chức năng chính của chương trình.Mỗi class có chức năng và vai trò khác nhau trong xây dựng chương trình:
- Lớp Main:đảm nhiệm chức năng xây dựng giao diện người sử dụng,xử lý các tương tác của người dùng với chương trình.
- Lớp newsAdapter,myAdapter: là các lớp nằm trong lớp Main,có nhiệm vụ hỗ trợ xây dựng danh sách các tin tức và mã cổ phiếu trong giao diện chương trình.
- Lớp ChartView: đảm nhiệm chức năng vẽ biểu đồ cho mỗi mã cổ phiểu.
- Lớp CallWebservice: có chức năng liên lạc với server để lấy thông tin cần thiết mà người dùng yêu cầu.
- Lớp News: được tạo ra để thể hiện một đối tượng tin tức có 2 thuộc tính chính là title và summary.
- Lớp Order: được tạo ra để thể hiện một đối tượng mã cổ phiếu với thuộc tính title.
5.1.4 THIẾT KẾ CHỨC NĂNG:
Biều đồ tuần tự mô tả tương tác giữa người dùng và các đối tượng hệ thống theo trình tự thời gian,nhấn mạnh thứ tự thực hiện của các tương tác.Thành phần cơ bản của một biểu đồ tuần tự là:
Bảng 3.Các thành phần trong biểu đồ tuần tự.
Phần tử Ký hiệu Mô tả
Đối tượng Được biểu diễn bằng 1 hình chữ nhật,bên trong là tên đối tượng.Nét đứt bên dưới thể hiện đường sống của đối tượng,các đối tượng chỉ xuất hiện khi tham gia vào tương tác và được thể hiện bằng các hình chữ nhật nằm dọc trên đường sống.
Thông điệp Được biểu diễn bằng mũi tên nối giữa các
đối tượng thể hiện thông điệp được gọi từ đối tượng này đến đối tượng kia.
Các chức năng của chương trình được mô tả bằng các biểu đồ tuần tự thể hiện rõ sự tương tác giữa các đối tượng với nhau.
5.1.4.1 Xem thông tin mã cổ phiếu:
Hình 20.Biểu đồ tuần tự ca sử dụng xem thông tin mã cổ phiếu.
Hình 21.Biểu đồ tuần tự ca sử dụng xóa 1 mã cổ phiếu khỏi danh sách.
5.1.4.3 Vẽ biểu đồ cho mã cổ phiếu:
5.1.4.4 Cập nhật thông tin mã cổ phiếu:
Hình 23.Biểu đồ tuần tự ca sử dụng cập nhật thông tin mã cổ phiếu.
5.1.4.5 Xóa toàn bộ mã cổ phiếu khỏi danh sách:
Hình 24.Biểu đồ tuần tự ca sử dụng xóa toàn bộ mã cổ phiếu.
Hình 25.Biểu đồ tuần tự ca sử dụng tìm kiếm mã cổ phiếu.