Định hướng nghiên cứu Nhằm mục đích nghiên cứu, tìm hiểu về công nghệ lập trình di động,webservice và một số công nghệ khác,chúng tôi đã xây dựng ứng dụng sổ tay nấu ăntrên iphone với mo
Trang 1DANH SÁCH HÌNH SỬ DỤNG TRONG ĐỒ ÁN
Hình 1: Kế hoạch nghiên cứu đề tài 7
Hình 2: Hệ điều hành MAC OS 12
Hình 3: Kiến trúc iOS 14
Hình 4 : Công cụ lập trình Xcode 17
Hình 5: Giao diện chính của Xcode 3.2.5 17
Hình 6: Interface Builder 18
Hình 7: Instrument Memory Leak 18
Hình 8: SQLite Manager 19
Hình 9: iPhone Simulator 19
Hình 10: Mô hình MCV trong lập trình iOS 20
Hình 11: Tạo một project mới từ Xcode 21
Hình 12: Tạo giao diện 22
Hình 13: Liên kết đối tượng và Outlet 23
Hình 14: Gán sự kiện vào button 23
Hình 15: Kết nối một sự kiện của đối tượng với một phương thức 25
Hình 16: Nền tảng Web Service 28
Hình 17: Chồng giao thức của dịch vụ Web 28
Hình 18: Mô hình client – server của Web Service 29
Hình 19: Client truy suất nhiều Web Service cùng lúc 30
Hình 20: Tạo một Web Service với Visual Studio 2008 (1) 33
Hình 21: Tạo một Web Service với Visual Studio 2008 (2) 33
Hình 22: Tạo một Web Service với Visual Studio 2008 (3) 34
Hình 23: Tạo một Web Service với Visual Studio 2008 (4) 34
Hình 24: Tạo một Web Service với Visual Studio 2008 (5) 34
Hình 25: Cách gọi một Web Service từ Client (1) 35
Hình 26: Cách gọi một Web Service từ Client (2) 35
Hình 27: Cách gọi một Web Service từ Client (3) 36
Hình 28 : Mô hình ứng dụng 41
Hình 29: Sơ đồ mô tả chức năng trên Web Server 42
Hình 30: Sơ đồ chức năng trên iPhone 43
Hình 31: Use-case chức năng tại trang chính 44
Hình 32: Use-case chức năng sổ tay 44
Hình 33: Use-case chức năng xem Mẹo vặt 45
Hình 34: Use-case chức năng xem Tin tức 45
Hình 35: Use-case chức năng Setting 45
Hình 36: Mô hình quan hệ dữ liệu phía client 51
Hình 37: Mô hình quan hệ dữ liệu của dữ liệu trên Server 56
Hình 38: Prototypem Screen Follow cho mô đun “Trang chủ” 57
Hình 39: Prototypem Screen Follow cho mô đun “Thực đơn” 58
Hình 40: Prototypem Screen Follow cho mô đun “Mẹo vặt” 59
Hình 41: Prototypem Screen Follow cho mô đun “Tin tức” 59
Hình 42: Prototypem Screen Follow cho mô đun “Cài đặt” 60
Hình 43: Thuật toán tìm kiếm 61
Hình 44: Mô hình hóa các package trong iPhone 62
Hình 45: Mô hình Web Server 64
Hình 46: Mô hình Web Service 64
Trang 2Hình 51: Kết quả mô đun "Cài đặt" 68
Hình 52: Giao diện của Web Server 69
Hình 53: Danh sách các phương thức mà Web Service cung cấp 69
Hình 54: Chi tiết một phương thức mà Web Service cung cấp 70
Trang 3Bảng 1: Các lệnh sử dụng để khai báo trong Objective-C 11
Bảng 2: Các lệnh xác định khả năng truy cập trong Objective-C 11
Bảng 3: Các lệnh sử dụng để xử lý ngoại lệ trong Objective-C 12
Bảng 4: Ràng buộc về thiết kế và thực thi 37
Bảng 5: Yêu cầu phi chức năng 38
Bảng 6: Yêu cầu chức năng 41
Trang 4TỔNG QUAN VỀ ĐỀ TÀI 4
I Giới thiệu chung 4
II Định hướng về công nghệ 4
III Định hướng và kế hoạch nghiên cứu 5
III.1 Định hướng nghiên cứu 5
III.2 Kế hoạch nghiên cứu 6
CƠ SỞ LÝ THUYẾT 8
I Giới thiệu các nền tảng mobile 8
II Objective-C và lập trình iPhone 9
II.1 Giới thiệu về Objective-C 9
II.1.1 Giới thiệu chung 9
II.1.2 Lý do sử dụng Objective-C 10
II.1.3 Các từ khóa trong Objective-C 11
II.2 Lập trình iPhone 12
II.2.1 Giới thiệu chung 12
II.2.1.1 Mac-OS 12
II.2.1.2 iPhone-OS 13
II.2.1.3 Hệ quản trị cơ sở dữ liệu SQlite 16
II.2.1.4 Các công cụ và môi trường lập trình iPhone 16
II.2.1.5 Môi trường yêu cầu 16
II.2.2 Các tool cần thiết 17
II.2.2.1 Xcode 17
II.2.2.2 Interface Builder 18
II.2.2.3 Instrument Memory Leak 18
II.2.2.4 SQlite Manager 19
II.2.2.5 iPhone Simulator 19
II.2.3 Các bước xây dựng một ứng dụng cho iPhone 20
II.2.3.1 Mô hình MVC 20
II.2.3.2 Xây dựng giao diện người dùng với Interface Builder 21
II.2.3.3 Xử lý sự kiện trên iPhone 23
II.2.3.4 Làm việc với SQLite 25
III Webservice 27
III.1 Giới thiệu 27
III.1.1 Đặc điểm 27
III.1.2 Đặc điểm 27
III.2 Nền tảng của Webservice 28
III.3 Kiến trúc của Webservice 28
III.4 Các hoạt động của Webservice 29
III.5 Các thành phần của Webservice 31
III.5.1 SOAP (Simple Object Acccess Protocol) 31
III.5.2 WSDL (Web Service Definition Language) 31
III.6 Webservice và Visual Studio 2008 32
III.6.1 Các bước xây dựng Webservice với Visual Studio 2008 32
III.6.2 Cách tạo một Web Service với Visual Studio 2008 33
III.6.3 Cách gọi và thực thi một Webservice từ Client 35
Trang 5I.1 Phân tích yêu cầu đề tài 37
I.1.1 Môi trường vận hành 37
I.1.2 Ràng buộc về thiết kế và thực thi 37
I.1.3 Yêu cầu phi chức năng 38
I.1.4 Yêu cầu chức năng 39
I.2 Giải pháp cho đề tài 41
I.2.1 Mô hình ứng dụng 41
I.2.2 Giải pháp công nghệ 41
II Thiết kế và triển khai giải pháp 42
II.1 Sơ đồ chức năng của hệ thống 42
II.1.1 Chức năng trên Web Server 42
II.1.2 Sơ đồ chức năng trên iPhone 43
II.2 Diagram của bài toán 44
II.2.1 User-case chức năng Home: 44
II.2.2 Use-case chức năng Sổ tay: 44
II.2.3 Use-case chức năng xem Mẹo vặt 45
II.2.4 Use-case chức năng xem Tin tức 45
II.2.5 Use-case chức năng Setting 45
II.3 Thiết kế cơ sở dữ liệu 46
II.3.1 Cơ sở dữ liệu ở Client 46
II.3.1.1 Các bảng dữ liệu 46
II.3.1.2 Mô hình quan hệ dữ liệu phía client 51
II.3.2 Cơ sở dữ liệu trên Server 52
II.3.2.1 Các bảng dữ liệu 52
II.3.2.2 Mô hình quan hệ dữ liệu 56
II.4 Thiết kế Prototype và Screen Follow cho hệ thống 57
II.4.1 Prototypem Screen Follow cho mô đun “Trang chủ” 57
II.4.2 Prototypem Screen Follow cho mô đun “Thực đơn” 58
II.4.3 Prototypem Screen Follow cho mô đun “Mẹo vặt” 59
II.4.4 Prototypem Screen Follow cho mô đun “Tin tức” 59
II.4.5 Prototypem Screen Follow cho mô đun “Cài đặt” 60
II.5 Các thuật toán chính của chương trình 61
II.5.1 Thuật toán sắp xếp 61
II.5.2 Thuật toán tìm kiếm 61
TRIỂN KHAI VÀ CÀI ĐẶT CÁC MÔ ĐUN 62
I Mô đun trên iPhone 62
I.1 Mô hình hóa các mô đun 62
I.2 Triển khai các chức năng 62
I.2.1 Gói “Home” 62
I.2.2 Gói “Manual” 62
I.2.3 Gói “Tips” 63
I.2.4 Gói “News” 63
I.2.5 Gói “Setting” 63
I.2.6 Gói “Images” 64
I.2.7 Gói “Process” 64
Trang 6III Chạy demo trên môi trường thật 65
III.1 Chạy trên iPhone 65
III.2 Web Server và Web Service 69
III.2.1 Web Server 69
III.2.2 Web Service 69
KẾT LUẬN 71
I Nhật xét chung 71
II Ưu điểm và hạn chế 71
II.1 Ưu điểm 71
II.2 Hạn chế 72
III Hướng phát triển 72
TÀI LIỆU THAM KHẢO 73
Trang 7MỞ ĐẦU
LỜI MỞ ĐẦU
Mạng điện thoại di động xuất hiện tại Việt Nam từ đầu những năm 1990 vàtheo thời gian, số lượng các thuê bao cũng như các nhà cung cấp dịch vụ di độngtại Việt Nam ngày càng tăng Cùng với sự phát triển của số lượng thuê bao di động
là sự đa dạng hoá các dịch vụ hướng đến thiết bị di động Ngày nay điện thoại diđộng không chỉ còn mang chức năng gọi điện hay nhắn tin thông thường mà còn làmột thiết bị giải trí, tra cứu thông tin rất tiện lợi Do đó, xây dựng các ứng dụngcho điện thoại di động đang là một yêu cầu tất yếu trong xu thế hiện nay Ngànhcông nghiệp phần mềm cho các thiết bị di động được xem như một mảnh đất màu
mỡ và hứa hẹn đem lại nhiều tỉ đô la doanh thu
Những hướng phát triển ứng dụng trên điện thoại di động phổ biến hiện nay
là sử dụng ngôn ngữ C++ trên nền hệ điều hành Symbian, J2ME và Objective-Ctrên iPhone Trong luận văn của chúng tôi, chúng tôi chọn nghiên cứu iOS trêniPhone vì đây là lĩnh vực khá mới mẽ và đang được ưu chuộng trên thị trường
Objective-C là ngôn ngữ lập trình đã xuất hiện từ rất lâu, nó được thiết kế vàphát triển từ năm 1980 Hiện tại, Objective-C lại trở nên phổ biến vì nó được Applechọn làm ngôn ngữ lập trình cho hệ thống Mac và iPhone Objective-C được thiết
kế bởi Brad Cox khi ông làm việc cho công ty Stepstone vào đầu những năm 1980.Objective-C được thiết kế để phục vụ mục đích lập trình hướng đối tượng Nó hoạtđộng giống như là một tập hợp các thành phần mở rộng rất mạnh mẽ của ngôn ngữ
C Objective-C kết hợp các đặc điểm ưu tú nhất của C và ngôn ngữ SmallTalk.Objective-C khá đơn giản để học và có đầy đủ các khả năng của một ngôn ngữ lậptrình hướng đối tượng Objective-C đơn giản và nhỏ gọn nhưng lại là một thànhphần mở rộng rất mạnh của ngôn ngữ chuẩn ANSI C Hầu hết các ngôn ngữ lậptrình hướng đối tượng cung cấp:
Trang 81 Một thư viện các Objects.
2 Các công cụ phát triển cần thiết
3 Hỗ trợ hướng đối tượng và các thư viện liên quan
Objective-C cũng cung cấp đầy đủ các thành phần trên Bạn có thể sử dụngObjective-C để phát triển một phần mềm hoàn thiện Vì những đặc tính ưu việt củaObjective-C, và cùng với mong muốn học hỏi lập trình trên điện thoại, nên nhómsinh viên làm đồ án đã chọn nó đề làm luận văn tốt nghiệp
Về chương trình ứng dụng, tính khả thi và thực tế đang được đề cao Chúngtôi nhận thấy xu hướng mở rộng các ứng dụng từ máy tính sang điện thoại đangđược chú trọng Việc chuyển từ máy tính sang điện thoại sẽ khiến sự tiện dụngtăng, số người sử dụng chắc chắn sẽ tăng nhanh vì đối với nhiều người chiếc điệnthoại di động dễ sử dụng hơn rất nhiều so với chiếc máy tính "phức tạp và khóhiểu"
Ứng dụng mà chúng tôi chọn để bước vào lĩnh vực khá mới mẽ này là ứngdụng sổ tay nấu ăn “iCooking” Ăn là nhu cầu không thể thiếu được của mỗi ngườichúng ta Do vậy công việc nấu ăn chiếm một vị trí rất quan trọng trong đời sốngthường ngày Lịch sử dân tộc Việt nam có từ trên 4.000 năm, trải qua bao nhiêu thử
thách và biến cố lịch sử của dân tộc, sự tồn tại của bánh dầy và bánh chưng ở mộtmức độ nào đó cũng nói lên sức sinh tồn của dân tộc, nói lên tính chất cổ truyềncủa kỹ thuật nấu ăn Việt Nam Chính từ tính chất cổ truyền này nó tạo nên phongcách độc đáo trong ăn uống của dân tộc Việt Nam
Việt Nam nằm trong vành đai nhiệt đới, trải dài 15 vĩ tuyến với khí hậu nhiệtđới gió mùa, lại có nhiều cao nguyên và vùng núi cao như Sapa, Tam Đảo, Đà Lạt,
… với khí hậu mang sắc thái ôn đới Vì tính đa dạng của khí hậu và thổ nhưỡngnên thực vật nói chung và rau quả nói riêng của nước ta rất phong phú, nhiệt đới có,cận nhiệt đới có, ôn đới cũng có Rau quả nước ta có quanh năm, mùa nào thức nấy,rải rác khắp nơi hoặc tập trung thành các vùng chuyên canh để tiêu thụ tại chỗ Bêncạnh đó với bờ biển dài có nhiều sông, rạch, ngòi là nguồn cung cấp thủy sản vô
Trang 9tận không những đủ dùng trong nước mà còn đóng hộp để xuất khẩu Khí hậu ởnước ta không những thuận lợi cho việc phát triển cây trồng mà còn thuận lợi choviệc phát triển chăn nuôi gia súc (chủ yếu là gà, vịt, lợn, trâu, bò, dê, thỏ đượcphát triển tùy theo từng vùng) Xuất phát từ đặc điểm đó, ngoài việc sinh sống bằngnghề cày cấy, người Việt Nam còn sinh sống bằng nghề chày lưới, cho nên hai thứ
đồ ăn chủ yếu là gạo và cá Gạo có thể dùng để nấu cơm, làm bánh như gạo tẻ xay
ra để làm bún, gạo nếp dùng nấu sôi hoặc làm bánh Cá có thể đem chế biến vớinhiều hình thức kho, rán, nấu hấp, nướng, thậm chí còn để làm mắm Chính từ đặcđiểm đó đã tạo nên phong cách độc đáo trong ăn uống của người Việt Nam
Và từ lâu để lưu lại những giá trị văn hóa, nhưng công thức chế biến độc đáongười ta đã viết thành sách Vào những năm trước, khoa học kĩ thuật phát triểnnhững công thức nấu ăn được lưu trữ và sử dụng thông qua máy tính Đến hômnay, với sự bức phá vượt bật của thiết bị cầm tay, mà điển hình là những chiếcsmartphone Những công thức nấu ăn đó nay sẽ được tích hợp trên iPhone để dễdàng quản lý, sử dụng, chia sẻ mọi lúc mọi nơi
Luận văn mà chúng em trình bày gồm 5 phần chính:
1 Tổng quan về đề tài: Giới thiệu chung, các định hướng và kế hoạchnghiêu cứu
2 Cơ sở lí thuyết : giới thiệu nền tảng về mobile, lập trình iPhone,webservice và lý thuyết về nghiệp vụ
3 Phân tích và thiết kế hệ thống: Phân tích yêu cầu thực tế từ ngườidùng để đưa ra hướng thiết kế thích hợp Từng bước thiết kế ứngdụng
4 Triển khai và cài đặt ứng dụng : cài đặt ứng dụng lên điện thoại, càiđặt server và chạy demo trên môi trường thật
5 Kết luận: Đánh giá, tổng kết các kết quả đạt được và hướng phát triểntrong tương lai
Trang 10CHƯƠNG I
TỔNG QUAN VỀ ĐỀ TÀI
Cùng với sự phát triển của các thiết bị di động và với xu thế di động hóa củacon người thì lập trình di động đang là một mảng rất phát triển trên thế giới với cácnền tảng như Symbian, Rim, Window Mobile hay mới đây là Android và iOS
Một chiếc điện thoại bây giờ không chỉ là “Nghe – Gọi” mà nó cnf có thểlướt Web, Game 3D, Chat, Email, ứng dụng văn phòng, quản lý từ xa,… Có thể nóigần như tất cả các tiện ích trên máy tính điện tử đang dần tích hợp trên thiết bị diđộng
Và một tương lai không xa việc tìm ra sự khác biệt của một thiết bị di độngthong minh và chiếc máy tính thông thường sẽ trở nên không còn ý nghĩa
II Định hướng về công nghệ
Với bài toán đặt ra như trên, chúng tôi đã đưa ra được định hướng về công nghệ và từ đó lập ra kế hoạch nghiên cứu và giả pháp phát triển ứng dụng
Về công nghệ :
Tìm hiểu hệ điều hành MAC-OS và iOS
Objective-C và lập trình iPhone
o Lý thuyết về nền tảng, kiến trúc
o Cài đặt môi trường
o Các bước xây dựng ứng dụng hoàn chỉnh
Tìm hiểu SQLite
Webservice, Aspx và LinQ trong Visual Studio 2008
o Lý thuyết về Webservice, Aspx
o Môi trường và công cụ
o Các bước xây dụng 1 Webservice
Cách kết hợp giữa ứng dụng trong Iphone và Webservice
Trang 11 Tìm hiểu XML
SOAP và các phương thức truyền dữ liệu qua mạng
Về hệ thống :
Tìm hiểu và phân tích các nhu cầu của người dùng
Phân tích và thiết kế hệ thống nghiệp vụ phù hợp
o Đáp ứng được yêu cầu quản lý cơ bản
o Đáp ứng được cách thức của một tài liệu về nấu ăn
o Có thể cập nhật, nâng cấp hệ thống
Đánh giá khả năng ứng dụng và mở rộng cho sản phẩm
o Yêu cầu khi cài đặt
o Đánh giá tính khả thi
o Đánh giá khả năng mở rộng cho sản phẩm
Về quy trình sản xuất và ứng dụng:
Áp dụng quy trình sản xuất phần mềm theo chuẩn CMMi5
III Định hướng và kế hoạch nghiên cứu
III.1 Định hướng nghiên cứu
Nhằm mục đích nghiên cứu, tìm hiểu về công nghệ lập trình di động,webservice và một số công nghệ khác,chúng tôi đã xây dựng ứng dụng sổ tay nấu ăntrên iphone với mong muốn tạo ra một sản phẩm hoàn chỉnh từ những công nghệ
mà mình đã nghiên cứu được đem lại sự tiện lợi cho người sử dụng
Với mục tiêu hướng đến người dùng là những bạn trẻ, năng động, thích nấu
ăn, chúng tôi đã xây dựng giao diện ứng dụng thân thiện với người dùng với nhữngtính năng cơ bản và hữu ích nhất
Quản lý món ăn theo từng danh mục, nhóm
Trang 12 Các mẹo vặt, bí quyết khi nấu ăn.
Giới thiệu các món đặc sản, nhà hàng
Quảng cáo
III.2 Kế hoạch nghiên cứu
Với yêu cầu và mục đích như trên, chúng em triển khai nghiên cứu đề tàitheo kế hoạch sau:
Trang 13Hình 1: Kế hoạch nghiên cứu đề tài.
Trang 14 Symbian
Symbian là hệ điều hành được viết và sử dụng cho một số điện thoại diđộng cao cấp của Nokia là chủ yếu
Android
Là ngôi sao mới nổi, được phát triển bởi Google theo hướng mã nguồn
mở Android được xây dựng trên Linux Kernel, rất dễ phát triển và họclập trình khá nhanh Ngôn ngữ nền tảng là Java, Android được dự đoán
sẽ ngang với iOS và thâm chí hơn thế
Trang 15.II Objective-C và lập trình iPhone
.II.1 Giới thiệu về Objective-C
.II.1.1. Giới thiệu chung
Objective-C là ngôn ngữ lập trình đã xuất hiện từ rất lâu, nó được thiết kế vàphát triển từ năm 1980 Hiện tại, Objective-C lại trở nên phổ biến vì nó được Applechọn làm ngôn ngữ lập trình cho hệ thống Mac và iPhone
Objective-C được thiết kế bởi Brad Cox khi ông làm việc cho công tyStepstone vào đầu những năm 1980 Objective-C được thiết kế để phục vụ mụcđích lập trình hướng đối tượng Nó hoạt động giống như là một tập hợp các thànhphần mở rộng rất mạnh mẽ của ngôn ngữ C Objective-C kết hợp các đặc điểm ưu
tú nhất của C và ngôn ngữ SmallTalk Objective-C khá đơn giản để học và có đầy
đủ các khả năng của một ngôn ngữ lập trình hướng đối tượng
Objective-C đơn giản và nhỏ gọn nhưng lại là một thành phần mở rộng rấtmạnh của ngôn ngữ chuẩn ANSI C Objective-C cung cấp đầy đủ các khả năng lậptrình hướng đối tượng nhưng lại được thực thi theo cách khá đơn giản và dễ dàng.Hầu hết các ngôn ngữ lập trình hướng đối tượng cung cấp:
- Một thư viện các đối tượng
- Các công cụ phát triển cần thiết
- Hỗ trợ hướng đối tượng và các thư viện liên quan
C cung cấp đầy đủ các thành phần trên Có thể sử dụng
Objective-C để phát triển một phần mềm hoàn thiện Apple đã chọn Objective-Objective-C làm ngônngữ lập trình chính cho hệ thống máy Mac và iphone
Là ngôn ngữ hướng đối tượng nên Objective-C giải quyết các vấn đề lậptrình dựa trên khái niệm các Object Nó bao gồm 3 phần:
- Interface: Interface của một lớp thông thường được định nghĩa trong fileheader với đuôi *.h Nó chính là phần khai báo của một lớp
- Implementation: Mã nguồn của chương trình được viết trong phầnimplementation của lớp và được định nghĩa trong một file có đuôi *.m Đây
là phần định nghĩa của lớp
- Instantiation: Sau khi khai báo và định nghĩa một lớp, chúng ta có thể thụcthể hóa lớp này bằng việc cấp phát bộ nhớ cho new object của lớp đó
Tóm lại: Objective là:
Trang 16- Thành phần mở rộng của ngôn ngữ lập trình C.
- Là ngôn ngữ lập trình hướng đói tượng đơn giản nhưng mạnh mẽ
- Là ngôn ngữ được Apple sử dụng để phát triển các ứng dụng cho hệ thống máyMac và Iphone
- Nó là thành phần mở rộng của chuẩn ANSI C vì vậy các chương trình viếtbằng C của framework này sẽ không bị mất đi tính năng nào và người dùngđược hưởng các lợi thế của ngôn ngữ C Với ngôn ngữ này, người dùng cóthể lựa chọn cả lập trình hướng đối tượng và lập trình thủ tục khi cần thiết
- Nó đơn giản và dễ học bởi cú pháp khá ngắn gọn giúp cho lập trình viên đạtđược hiệu quả mong muốn mà không gặp nhiều khó khăn
- Nó rất năng động so với các ngôn ngữ mở rộng khác dựa trên C Trình biêndịch đóng vai trò rất quan trọng trong việc bảo vệ thông tin liên quan đếncác đối tượng để sử dụng lúc run time
- Nó là một ngôn ngữ mạnh bởi vì các quyết định có thể đưa ra lúc biên dịch
sẽ được trì hoãn cho tới khi chương trình chạy
- Sự năng động của Objective-C cũng có lợi thế đáng kể:
Nó hỗ trợ ràng buộc đóng và mở tạo ra một cấu trúc đơn giản đối vớigiao diện tương tác người dùng
Nó cho phép phát triển các công cụ phát triển phức tạp Một giao diệncho hệ thống run time tạo điều kiện cho việc tiếp cận các thông tin lúcrun time giúp cho việc monitor ứng dụng viết bằng Objective-C
.II.1.3. Các từ khóa trong Objective-C
Objective-C là ngôn ngữ mở rộng của ngôn ngữ lập trình C, do đó chươngtrình được viết bằng C hay C++ hoàn toàn có thể được biên dịch như Objective-C
Trang 17Ngoài các từ khóa dùng trong C và C++, Objective-C cung cấp thêm một số từkhóa khác Để tránh xung đột với từ khóa của ngôn ngữ khác, Objective-C dùng
“@” đứng trước mỗi từ khóa Những từ khóa này được gọi là Compiler Directives.Các lệnh chỉ thị được sử dụng để khai báo, định nghĩa các lớp, các thể loại, các phươngthức:
@interface Sử dụng để khai báo một lớp (class) hay
một giao diện (interface)
@implementation Dùng để định nghĩa một lớp (class) hay
một thể loại (category)
thức (formal protocol)
(category) hoặc phương thức (protocol).Bảng 1: Các lệnh sử dụng để khai báo trong Objective-C
Các lệnh chỉ thị được sử dụng để xác định khả năng truy cập của các thực thể.
(Mặc định là @protected)
thực thể chỉ trong lớp mà nó được khaibáo
@protected Giới hạn phạm vi truy cập của một biến
thực thể chỉ trong lớp khai báo nó vàcác lớp khác kế thừa lớp này
biến này
Bảng 2: Các lệnh xác định khả năng truy cập trong Objective-C
Các lệnh chỉ thị liên quan đến việc xử lý ngoại lệ (Exception handling)
này có thể phát sinh ngoại lệ
Trang 18@catch Bắt khối lệnh được thực thi nếu ngoại lệ phát
sinh (ngoại lệ bên trong khối mã lệnh @tryngay trước đó)
@finally Một khối mã lệnh sẽ được thực thi không cần
biết có ngoại lệ xảy ra trong @try hay khôngBảng 3: Các lệnh sử dụng để xử lý ngoại lệ trong Objective-C
.II.2 Lập trình iPhone
.II.2.1 Giới thiệu chung
.II.2.1.1. Mac-OS
Hình 2: Hệ điều hành MAC OS
Mac OS X là một hệ điều hành có lõi là Unix, giao diện đồ họa được công tyApple tạo ra.Từ năm 2002 Mac OS X đựơc đính kèm trong tất cả các máy tínhMacintosh Nó thừa kế từ hệ điều hành Mac OS 9, hệ điều hành chính thức củaApple ra đời năm 1999 Mac OS X là một hệ điều hành Unix sử dụng giao diện đồhọa được xây dựng trên công nghệ phát triển bởi NeXT vào nửa cuối năm 1980,sau đó được Apple mua lại năm 1996 Từ phiên bản thứ 6 của Mac OS X Leopard10.6.5 trở đi mỗi phiên bản của Mac đều được chứng nhận tiêu chuẩn Unix 03 –chạy trên hệ thống phần cứng intel Phiên bản cho server đầu tiên Mac OS X Server1.0 được đưa ra năm 1999 cùng với phiên bản cho máy tính để bàn Mac OS X 10.0
“Cheetah” theo sau vào ngày 24 tháng 3 năm 2001 Bản phát hành của Mac OS Xđược đặt tên big-cats ( những họ mèo lớn) Ví dụ: Mac OS X 10.6 được đặt tên là
“Snow Leopard” Phiên bản cho server Mac OS X server có kiến trúc tuơng tự nhưmáy tính để bàn bao gồm các công cụ quản lý người dùng, cung cấp dịch vụ truycập mạng Các công cụ được nạp sẵn như thư điện tử, máy chủ Samba, máy chủ
Trang 19LADP, tên miền máy chủ…, và những công cụ khác Nó có sẵn trong hệ thống phầncứng máy chủ XServer của Apple, tuy nhiên có thể hoạt động trong hầu hết cácmẫu đựợc bán trên thị trường của Apple.
Mac OS X xây dựng trên lõi Macintosh (Macintosh kernel), chứa các thànhphần của FreeBSD và NetBSD, là bổ sung của Unix được đưa vào NeXTSTEP tạonên cốt lõi của hệ điều hành Mac OS X NeXTSTEP làm hệ điều hành hướng đốitượng được Steve Jobs của công ty NeXTSTEP phát triển, sau đó ông rời Applenăm 1985 Trong khi Steve Jobs tạm rời Apple, Apple đã cố gắng tạo ra thế hệ OStiếp theo thông qua Taligent, Copland với dự án Gershwin với một chút thành công
Cuối cùng, NeXTSTEP được gọi là OPENSTEP được lựa chọn là nền tảngcho hệ điều hành tiếp theo của Apple, Apple đã mua đứt NeXT Steve Jobs trở lạiApple đảm nhiệm vị trí CEO tạm thời và chính thức sau này, ông theo dõi sựchuyển đổi lập trình thân thiện OPENSTEP vào trong một hệ thống có thể đượcchấp nhận bởi thị trường người dùng cá nhân và chuyên gia của Apple Dự án nàyđầu tiên được gọi là Rhapsody sau đó đổi tên thành Mac OS X
.II.2.1.2. iPhone-OS
a Giới thiệu về iPhone- OS
iOS là hệ điều hành cho thiết bị di động của Apple Ban đầu nó được phát
triển cho iPhone, về sau nó hỗ trợ hầu hết các thiết bị di động của Apple như: iPodTouch, iPad, Apple TV iOS được giới thiệu với iPhone vào 9/01/2007 tạiMacworld Conference & Expo Apple không bán bản quyền iOS cho bất kỳ nhàphát triển phần cứng nào khác
Tính đến 14/11/2010, kho ứng dụng của iOS trên Apple Store có khoảng300.000 ứng dụng và kho ứng dụng này luôn liên tục được cập nhật
Trang 20b Kiến trúc iPhone-OS
Hình 3: Kiến trúc iOS
- Cocoa Touch
Multi-Touch UI Framework: Gói thư viện xử lý việc tương tác giao
diện với người dùng
Core Motion Framework: Gói thư viện xử lý việc và xử lý dữ liệu từ
các thiết bị
View Hierarchy Framework: Gói thư viện xử lý việc lấy nội dung
văn bản
Localization Framework: Gói thư viện dùng để xác định tên quốc gia
có sử dụng các thiết bị di động trên nền tản iOS
Controls Framework: Gói thư viện quản lý các control trên iOS.
Alets Framework: Gói thư viện xử lý các sự kiện cảnh báo cho iOS.
Web View UI Framework: Gói thư viện xử lý các vấn đề về Web.
Map kit Framework: Gói thư viện về bản đồ.
Image Picker UI Framework: Gói thư viện hỗ trợ xử lý đối tượng
Picker
Camera Framework: Gói thư viện hỗ trợ tương tác thiết bị camera và
iOS
- Media
Core Audio Framework: Gói thư viện quản lý,cung cấp dịch vụ về
audio cho iOS
OpenAL Framework: Gói thư viện audio cho game, website trên
iOS
Audio Mixing Framework: Gói thư viện audio cho các ứng dụng xử
lý âm thanh trên iOS
Trang 21 Audio Recording Framwork: Gói thư viện hỗ trợ việc ghi âm cho
iOS
Video playback Framwork: Gói thư viện hỗ trợ chơi game, xem
film toàn trên iOS
JPEG, PNG, TIFF: Các định dạng tập ảnh được hỗ trợ trên iOS.
Address Book UI Framework: Hỗ trợ các thư viện để thiết kế ứng
dụng liên quan đến Address Book
Networking Framework: Gói thư viện hỗ trợ xử lý mạng, lập trình
các ứng dụng về mạng trên iOS
File Access Framework: Gói thư viện hỗ trợ xử lý tập tin trên iOS.
SQLite Framework: Gói thư viện hỗ trợ, xử lý dữ liệu với SQLite.
Net Services Framework: Gói thư viện hỗ trợ các dịch vụ mạng trên
iOS
Threading Framework: Gói thư viện hỗ trợ xử lý luồng trên iOS.
Message UI Framework: Gói thư viện hỗ trợ gởi thư điện tử.
Power Management: Tiện ích hỗ trợ quản lý nguồn điện đối với các
thiết bị di động sử dụng công nghệ iOS
Keychain Access: là một tiện ích cho phép người sử dụng xem các
mật khẩu, các giấy chứng nhận, các dữ liệu trong bộ chìa khóa họ tạo
Trang 22.II.2.1.3 Hệ quản trị cơ sở dữ liệu SQlite
a Giới thiệu
SQLite là phần mềm quản lý cơ sở dữ liệu (DBMS) tương tự như Mysql,PostgreSQL Đặc điểm của SQLite là gọn, nhẹ, đơn giản Chương trình gồm 1 fileduy nhất vỏn vẹn chưa đến 500kB, không cần cài đặt, không cần cấu hình hay khởiđộng mà có thể sử dụng ngay Dữ liệu database cũng được lưu ở một file duy nhất.Không có khái niệm user, password hay quyền hạn trong SQLite database
SQLite không thích hợp với những hệ thống lớn nhưng ở quy mô vừa tầm thìSQLite phát huy uy lực và không hề yếu kém về mặt chức năng hay tốc độ Với cácđặc điểm trên SQLite được sử dụng nhiều trong việc phát triển, thử nghiệm v v và
là sự lưa chọn phù hợp cho những người bắt đầu học database
b Đặc điểm
- Cơ sở dữ liệu dạng quan hệ (RDBMS), hỗ trợ chuẩn SQL-92
- Sử dụng dưới dạng thư viện nhúng, không chạy ở theo kiểu server độc lập
- Hỗ trợ các ngôn ngữ phổ biến: C, C++, C#, Basic, Python, PHP, Java
- Không cần chỉ định kiểu dữ liệu (SQLite is typeless)
- Có các công cụ quản lý bằng đồ hoạ
- Download & sử dụng miễn phí
c Phiên bản
Hiện tại SQLite có 2 nhánh khác nhau là version 2.x và version 3.x, do cấu tạo
dữ liệu nội bộ khác nhau nên tên lệnh và tên thư viện của từng nhánh khác nhau.Lệnh sqlite làcủa version 2.x, sqlite3 là lệnh của version 3.x Địa chỉ trang chủhttp://sqlite.org.
.II.2.2. Các công cụ và môi trường lập trình iPhone
II.2.2.1 Môi trường yêu cầu
- Hệ điều hành Mac OS version 10.x
- iOS SDK version 3.x trở lên
Trang 23- Các tool cần thiết khác như : Xcode,Interface Builder,Instrument MemoryLeak,iPhone Simulator,SQLite Manager.
II.2.2.2 Các tool cần thiết
Xcode
Hình 4 : Công cụ lập trình Xcode
Xcode là một tập hợp các công cụ để phát triển phần mềm trên Mac OS,xcode được phát triển bởi Apple Phiên bản mới nhất là 3.2, được đóng gói trongphiên bản Mac OS 10.6, tuy nhiên nó không mặc định cài sẵn mà có thể cài từDVD hoặc tải xuống từ trang chủ Apple Phiên bản hiện tại là 3.2.5 bao gồm iOSSDK 4.2.Bộ công cụ Xcode, giống như Mac OS X nó có nguồn gốc từ NeXT.Trước ngày 23 tháng 10 năm 2003 phát hành cho Mac OS 10.3, Apple đã giới thiệu
bộ công cụ này là công cụ phát triển
Các thành phần: Ứng dụng chính của bộ IDE này là Xcode, Xcode chứ hầu
hết các tài liệu phát triển của Apple, và Interface Builder một công cụ phát triểngiao diện đồ hoạ thân thiện Bộ Xcode bao gồm phiên bảo đã chỉnh sửa của phầnmềm miễn phí GCC xCode hỗ trợ các ngôn ngữ lập trình: C, C++, Objective-C,Java, AppleScript, Python và Ruby với một khối các mẫu lập trình Phần mềm củahãng thứ 3 được thêm vào có thể hỗ trợ GNU Pascal, Free Pascal, Ada, Per, C#,Haskell và D
Hình 5: Giao diện chính của Xcode 3.2.5
Trang 24Interface Builder
Công cụ hỗ trợ thiết kế giao diện cho các ứng dụng iOS với các control trựcquan
Hình 6: Interface Builder
c Instrument Memory Leak
Công cụ kiểm soát và tối ưu hóa bộ nhớ khi phát triển một ứng dụng trên iphonetrước khi đưa lên sử dụng trên máy thật
Hình 7: Instrument Memory Leak
Trang 25Hình 9: iPhone Simulator.
Trang 26.I.1.1 Các bước xây dựng một ứng dụng cho iPhone
a Giới thiệu mô hình MVC
Phương pháp thiết kế MVC bắt nguồn từ việc phát triển giao diện ngườidùng trong ngôn ngữ lập trình Smalltalk, đây là một trong những phương pháp thiết
kế thành công nhất trong các phương pháp thiết kế hướng đối tượng Hiện nay,MVC được dùng rộng rãi trong nhiều hệ thống phần mềm hướng đối tượng, bất kểđược viết bằng ngôn ngữ hướng đối tượng nào
MVC là viết tắt của Model-View-Controller Phương pháp thiết kế MVC(MVC Design Pattern) là phương pháp chia nhỏ một ứng dụng nhiều lớp hoặc chianhỏ phần giao diện người dùng (user interface) của một ứng dụng thành ba thànhphần chính là Model, View và Controller
- Model : Là một đối tượng hoặc tập hợp các đối tượng biểu diễn cho phần
dữ liệu của chương trình, ví dụ các dữ liệu được lưu trong cơ sở dữ liệu (CSDL)hay từ các hệ thống ứng dụng khác (như mail )
- View : Là phần giao diện với người dùng, bao gồm việc hiện dữ liệu ra màn
hình, cung cấp các menu, nút bấm, hộp đối thoại, chọn lựa , để người dùng có thểthêm, xóa, sửa, tìm kiếm và làm các thao tác khác đối với dữ liệu trong hệ thống
- Controller :Là phần điều khiển toàn bộ logic về hoạt động của giao diện,
tương tác với thao tác của người dùng (từ chuột, bàn phím và các thiết bị ngoại vikhác) và cập nhật, thao tác trên dữ liệu theo đầu vào nhận được và điều khiển việcchọn phần “Hiển thị” thích hợp để truyền dữ liệu tới người dùng
Với phương pháp thiết kế này, các chức năng hiển thị, chức năng logic điềukhiển và chức năng truy cập dữ liệu của chương trình được chia làm các phần táchbiệt
Ưu điểm của mô hình này là ứng dụng được phát triển một cách độc lập, không bị phụ thuộc giữa các thành phần, nên việc thêm hoặc xóa một module trong ứng dụng này khá dễ dàng và nhẹ nhàng hơn so với việc phát triển ứng dụng theo
mô hình cũ
b Mô hình MVC trong lập trình ứng dụng iPhone
Hình 10: Mô hình MCV trong lập trình iOS.
Mô hình MCV là mô hình chính được sử dụng trong lập trình iOS.Trong thực tế,một ứng dụng có thể bao gồm nhiều đối tượng Model,đối tượng View và
Trang 27đối tượng Controller khác nhau.Một đối tượng controller sẽ tương tác với đối tượng Model thông qua các methods và properties giao tiếp của đối tượng
Model.Việc giao tiếp trong mô hình MVC được thực hiện thông qua
- Interface Builder tương tác với source code thông qua Outlet và Action
Outlet: kết nối giữa các item trên View với source code tương ứng, đượckhai báo trong source code như sau:
@property(nonatomic, retain)IBOutlet id someElement;
Action: liên kết item với hành động tương ứng được khai báo trong source code
-(Action)someAction:(id)sender;
b Các bước xây dựng giao diện
- Tạo một project mới từ Xcode
Mở Xcode và chọn File >> New Project và chọn View Based Project đặt tên
là SampleProject
Hình 11: Tạo một project mới từ Xcode
Sau khi tạo project sẽ có được 3 file mới SampleProject.h, SampleProject.m và
Trang 28- Tạo Outlet và Action
Mở file SampleProject.h và sửa lại như sau:
- Tạo giao diện và liên kết với source code
Mở file SampleProject.xib sẽ hiển thị màn hình Interface Builder
Hình 12: Tạo giao diện
Kéo thả vào 1 Button trên View và liên kết với Outlet với source code
Trang 29Hình 13: Liên kết đối tượng và Outlet
Gán sự kiện vào button
Hình 14: Gán sự kiện vào button
.I.1.1.3 Xử lý sự kiện trên iPhone
Trong lập trình iPhone,việc xử lý sự kiện được thực thi bởi lớp UIControl,nhờ
đó chúng ta có thể sử dụng nhiều phương thức quan trọng trong iOS SDK thôngqua lớp này UIControl là lớp con của UIView,chứa các đối tượng User interfacecontrol quan trọng như UIButton,UISlider,UISwitch,UISegmentedControl…và cácthuộc tính cơ bản của nó như: enabled,hightlighted,selected…
Ngoài ra khi sử dụng lớp UIControl chúng ta có thể truy cập trực tiếp đến các
sự kiện touch events thông qua các phương thức :
beginTrackingWithTouch:withEvent:, continueTrackingWithTouch:withEvent, endTrackingWithTouch:withEvent…và xử lý các sự kiện khác bằng cách gọi các phương thức Action hoặc Target
- Sử dụng phương thức addTarget:Action:forControlEvents:
Trang 30Phương thức này được sử dụng khi khai báo và khởi tạo một đối tượng trong Xcode bằng code hoặc bằng cách sử dụng Interface Builder nhưng muốn thay đổi
xử lý trong quá trình chạy ứng dụng.Việc sử dụng các phương thức [init] hoặc [itemWithType] sẽ cho phép khởi tạo và tùy chỉnh một đối tượng mà không cần sử dụng Interface Builder và khai báo Outlet cho đối tượng đó
Bên cạnh đó việc gắn kết xử lý sự kiện cho đối tượng được thực hiện đơn giảnqua code mà không cần phải khai báo (IBAction) cho mỗi hàm và thực hiện tham chiếu từ Interface Builder.Cách sử dụng phương thức
addTarget:Action:forControlEvents: khá đơn giản và thuận tiện cho việc chỉnh
sửa,bổ sung sau này
- Sử dụng một IBAction
Đây là phương pháp được sử dụng một khi đối tượng đã được tạo trong
Interface Builder và theo đó chúng ta không thể thay đổi phương thức xử lý trong quá trình chạy ứng dụng.Việc kết nối giữa sự kiện của một đối tượng với một phương thức xử lý được thực hiện trên giao diện trực quan của Interface Builder Đối với một đối tượng ngoài việc phải tạo trên Interface Builder thì cần phải khai báo Outlet cho đối tượng đó trong source code
Ví dụ :
UIButton *sampleButton;
@propertise (nonatomic, retain) IBOutlet UIButton *sampleButton;
Việc khai báo IBOutlet là rất quan trọng,giúp Interface Builder có thể nhận diện được đối tượng được khai báo trong source code
Để liên kết một sự kiện của đối tượng với một hàm xử lý trong source thì phải khai báo IBAction cho hàm tương ứng
Ví dụ : -(IBAction) sampleButtonPressed: (id)sender;
Trang 31
Từ Interface Builder chúng ta có thể tùy chọn kết nối sự kiện của đối tượng với một IBAction bằng cách kéo thả trực quan.
Hình 15: Kết nối một sự kiện của đối tượng với một phương thức
.I.1.1.4 Làm việc với SQLite
SQLite là một hệ quản trị cơ sở dữ liệu không lệ thuộc máy chủ.Cơ sở dữ liệu SQLite được chứa trong một tập tin *.sqlite Với tính chất gọn nhẹ này, SQLite rất phù hợp với các chương trình vừa hoặc nhỏ,những chương trình chạy trên thiết bị đòi hỏi sự tối ưu về bộ nhớ như điện thoại di động,máy tính bảng,Pocket PC… Khiphân phối sản phẩm, nhà phát triển không cần phải cài đặt hệ quản trị cơ sở dữ liệu lên máy người sử dụng, mà chỉ việc đóng gói tập tin *.sqlite kèm theo chương trình
Việc cài đặt SQLite được thực hiện một cách đơn giản,chỉ cần cài đặt plug-inSqlite Manager của Firefox.Tạo một database mới,cách thao tác giống như trong các hệ quản trị cơ sở dữ liệu khác
Cách sử dụng Sqlite trong lập trình iphone
- Add thư viện Sqlite từ <SDK Folder>/usr/lib vào thư mục framework của project
- Import <sqlite3.h> vào lớp thao tác trực tiếp với database
- Kết nối với sqlite
sqlite3 *database;
NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory
stringByAppendingPathComponent:@"database.sqlite"];
//kết nối database
sqlite3_open([path UTF8String], &database) == SQLITE_OK)
Trang 32- Tạo đối tượng
Giả sử có 1 một table tb_Area
@property (nonatomic, retain) NSString *areaName;
@property (nonatomic) NSInteger areaID;
- Khởi tạo đối tượng
AreaObject *areaObj = [[AreaObject alloc] init];
- Thực thi câu lệnh sql
if (sqlite3_prepare_v2(database, [query UTF8String], -1, &statement, nil) ==
SQLITE_OK) {
//thực thi câu lệnh query
while (sqlite3_step(statement) == SQLITE_ROW) {
//kiểm tra row có tồn tại hay không
if (sqlite3_column_text(statement, 1) != NULL) {
//Thực hiện xử lý set giá trị cho Object
[areaObj setAreaName:[NSString stringWithUTF8String:(char
Trang 33.II Webservice
.II.1 Giới thiệu
.II.1.1 Định nghĩa
Một Web service được định nghĩa là một tập các phương thức có thể được định
vị thông qua địa chỉ URL, các phương thức này được công bố trên hệ thống mạng
và được dùng như những khối cơ bản để xây dựng một ứng dụng phân tán (Trích sách: Developing XML Web service using Microsoft Visual Studio NET) Nói một cách đơn giản hơn, web service là tập hợp các phương thức có thể được các ứng dụng khác triệu gọi từ xa (RPC- Remote Procedure Call) để hình thành nên một hệứng dụng phân tán
.II.1.2 Đặc điểm
- Dịch vụ Web cho phép client và server tương tác được với nhau ngay cảtrong những môi trường khác nhau Ví dụ, đặt Web server cho ứng dụng trênmột máy chủ chạy hệ điều hành Linux trong khi người dùng sử dụng máytính chạy hệ điều hành Windows, ứng dụng vẫn có thể chạy và xử lý bìnhthường mà không cần thêm yêu cầu đặc biệt để tương thích giữa hai hệ điềuhành này
- Phần lớn kĩ thuật của Dịch vụ Web đượ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, ví dụ như XML
- Một Dịch vụ Web bao gồm có nhiều mô-đun và có thể công bố lên mạngInternet
- Là sự kết hợp của việc phát triển theo hướng từng thành phần với những lĩnhvực cụ thể và cơ sở hạ tầng Web, đưa ra những lợi ích cho cả doanh nghiệp,khách hàng, những nhà cung cấp khác và cả những cá nhân thông qua mạngInternet
- Một ứng dụng khi được triển khai sẽ hoạt động theo mô hình client-server
Nó có thể được triển khai bởi một phần mềm ứng dụng phía server ví dụ nhưPHP, Oracle Application server hay Microsoft.Net…
- Ngày nay dịch vụ Web đang rất phát triển, những lĩnh vực trong cuộc sống
có thể áp dụng và tích hợp dịch vụ Web là khá rộng lớn như dịch vụ chọn lọc
và phân loại tin tức (hệ thống thư viện có kết nối đến web portal để tìm kiếmcác thông tin cần thiết); ứng dụng cho các dịch vụ du lịch (cung cấp giá vé,thông tin về địa điểm…), các đại lý bán hàng qua mạng, thông tin thươngmại như giá cả, tỷ giá hối đoái, đấu giá qua mạng…hay dịch vụ giao dịchtrực tuyến (cho cả B2B và B2C) như đặt vé máy bay, thông tin thuê xe…
- Các ứng dụng có tích hợp dịch vụ Web đã không còn là xa lạ, đặc biệt trongđiều kiện thương mại điện tử đang bùng nổ và phát triển không ngừng cùngvới sự lớn mạnh của Internet Bất kì một lĩnh vực nào trong cuộc sống cũng
Trang 34có thể tích hợp với dịch vụ Web, đây là cách thức kinh doanh và làm việc cóhiệu quả bởi thời đại ngày nay là thời đại của truyền thông và trao đổi thôngtin qua mạng Do vậy, việc phát triển và tích hợp các ứng dụng với dịch vụWeb đang được quan tâm phát triển là điều hoàn toàn dễ hiểu.
.II.2 Nền tảng của Webservice
Webservice được phát triển trên cơ sở của HTTP, SOAP, XML
Hình 16: Nền tảng Web Service
.II.3 Kiến trúc của Webservice
Dịch vụ Web gồm có 3 chuẩn chính: SOAP (Simple Object Access Protocol),WSDL (Web Service Description Language) và UDDI (Universal Description,Discovery, and Integration) Hình 1 mô tả chồng giao thức của dịch vụ Web, trong
đó 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 đượcgửi đi chính xác bởi HTTP và TCP/IP
Hình 17: Chồng giao thức của dịch vụ Web
Chồng giao thức dịch vụ Web là tập hợp các giao thức mạng máy tính được sửdụng để định nghĩa, xác định vị trí, thi hành và tạo nên dịch vụ Web tương tác vớinhững ứng dụng hay dịch vụ khác Chồng giao thức này có 4 thành phần chính:
Trang 35- Dịch vụ vận chuyển (Service Transport): có nhiệm vụ truyền thông điệp giữacá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 ExtensibleExchange 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
- Mô tả dịch vụ: đượ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ộtngô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ệncông việc này
.II.4 Các hoạt động của Webservice
Hình 18: Mô hình client – server của Web Service
Một ứng dụng web service thường gồm 2 phần: client và server Client và server
sẽ giao tiếp với nhau theo giao thức HTTP: Ứng dụng client sẽ gửi những lời gọihàm đến server thông qua các gói tin HTTP request và kết quả thực thi hàm sẽđược server hồi đáp thông qua các gói tin HTTP response
- SOAP: Các thông điệp sẽ được định dạng theo chuẩn giao thức SOAP
(Simple Object Access Protocol) Đây thực chất cũng chỉ là một ngôn ngữđược định nghĩa bên trên ngôn ngữ XML có sẵn
- WSDL (Web Service Definition Language): Đây là file XML chứa các
Trang 36dụng sẽ phải dựa vào nội dung file này để biết Web service hỗ trợ nhữnghàm này và nhận những tham số tương ứng, kết quả trả về như thế nào Nếuchúng ta phát triển Web service trong môi trường J2ME thì không nhất thiếtphải hiểu rõ cấu trúc về file WSDL, vì trong bộ công cụ Wireless Toolkit củaSun đã cung cấp sẵn công cụ Stub Generator Chức năng của bộ công cụ này
là đọc file WSDL và phát sinh thành những lớp java tương ứng cho nhà pháttriển ứng dụng
- UDDI(Universal Description, Discovery, and Integration): Đây là công cụ
giúp cho những nhà phát triển Web Service công bố những thông tin về webservice của mình cho cộng đồng các nhà phát triển ứng dụng Người dùng
sẽ dựa vào những thông tin này để sử dụng web service trong ứng dụngriêng của mình tạo thành một hệ ứng dụng phân tán
Mối quan hệ giữa các thành phần SOAP,WSDL,UDDI có thể được mô tảnhư sau: Một ứng dụng web service client cần sử dụng một web serviceđược đặt tại một nơi nào đó trên hệ thống mạng Trước tiên, client sẽ truyvấn đến các mẫu tin UDDI, có thể theo tên, loại hay một thông tin riêng biệtnào đó Khi đã xác định được web service cần tìm, client có thể lấy thôngtin về địa chỉ của tài liệu WSDL của web service này dựa trên mẫu tinUDDI Tài liệu WSDL sẽ mô tả cách thức liên lạc với web service, địnhdạng của gói tin truy vấn và phản hồi theo cũng được mô tả bằng XMLschema Dựa vào những thông tin này client có thể tạo những gói tin SOAPtương ứng để liên lạc với server
Ứng dụng web service có thể được cài đặt ở những mức độ cao hơn nhưnhững mô hình sau:
Hình 19: Client truy suất nhiều Web Service cùng lúc
.II.5 Các thành phần của Webservice
.II.5.1. SOAP (Simple Object Acccess Protocol)
SOAP là một giao thức đơn giản nhằm mục đích trao đổi thông tin trong môitrường ứng dụng phân tán SOAP dựa trên nền công nghệ XML và bao gồm 2thành phần:
Trang 37- Một “bì thư” (envelope) để quản lý các thông tin mở rộng và mang tính điềukhiển.
- Một chuẩn mã hóa quy định cách thể hiện thông tin trong envelope
SOAP có thể được sử dụng kết hợp với các giao thức chuẩn khác nhưSMTP,HTTP/HTTPS,FTP… Tuy nhiên hiện nay chỉ mới có HTTP/HTTPS đượcxem như giao thức chuẩn để trao đổi gói tin SOAP Việc sử dụng SOAP như mộtgiao thức trao đổi dữ liệu chuẩn khiến web service có khả năng hoạt động trênnhiều môi trường lập trình khác nhau như Java, NET,…
.II.5.2. WSDL (Web Service Definition Language)
WSDL định nghĩa cách mô tả Web service theo cú pháp tổng quát của 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 sử dụng khi gọi các hàm của Web service
- Loại thông tin: thao tác, tham số, những kiểu dữ liệu (có thể là giao diện củaWeb service cộng với tên cho giao diện này)
- Một WSDL hợp lệ gồm hai phần: phần giao diện (mô tả giao diện và phươngthức kết nối) và phần thi hành mô tả thông tin truy xuất CSDL Cả hai phầnnày sẽ đượ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ụ Giao diện của một Web service được miêu tảtrong phần này đưa ra cách thức làm thế nào để giao tiếp qua Web service.Tên, giao thức liên kết và định dạng thông điệp yêu cầu để tương tác vớiWeb service được đưa vào thư mục của WSDL
WSDL thường được sử dụng kết hợp với XML schema và SOAP để cung cấp Web service qua Internet Một client khi kết nối tới Web service có thể đọc WSDL để xác định những chức năng sẵn có trên server Sau đó, client có thể sử dụng SOAP để lấy ra chức năng chính xác có trong WSDL
.II.6 Webservice và Visual Studio 2008
.II.6.1 Các bước xây dựng Webservice với Visual Studio 2008
Có 4 giai đoạn chính để xây dựng một web service là xây dựng, triển khai, tiến hành và quản lý:
- Giai đoạn xây dựng bao gồm phát triển và chạy thử ứng dụng web service,
Trang 38- Giai đoạn triển khai bao gồm công bố định nghĩa service, xây dựng WSDL,
và triển khai mã thực thi của web service
- Giai đoạn tiến hành bao gồm tìm kiếm và gọi thực thi web service
- Giai đoạn quản lý bao gồm quản lý và quản trị ứng dụng web service
Để xây dựng một dịch vụ Web, chúng ta cần hiểu được những việc phải làm vànên bắt đầu từ đâu Có 3 cách tiếp cận chủ yếu để xây dựng nên một dịch vụ Web,
có thể từ một ứng dụng đã có (bottom-up); từ một định nghĩa dịch vụ, WSDL đểphát sinh một ứng dụng mới (top-down) hoặc có thể từ một nhóm các dịch vụ Webhiện có, kết hợp lại với nhau để tạo nên các chức năng mới hoặc mở rộng thêmchức năng Những hướng tiếp cận này dựa trên những gì mà chúng ta đã có, tùythuộc vào yêu cầu của hệ thống, trong đó tối đa việc sử dụng lại các chức năng, cácthành phần, môđun đã được xây dựng
Qui trình xây dựng một dịch vụ Web bao gồm các bước sau:
1 Định nghĩa và xây dựng các chức năng, các dịch vụ mà dịch vụ sẽ cungcấp (sử dụng ngôn ngữ Java chẳng hạn)
2 Tạo WSDL cho dịch vụ
3 Xây dựng SOAP server
4 Đăng ký WSDL với UDDI registry để cho phép các client có thể tìmthấy và truy xuất
5 Client nhận file WSDL và từ đó xây dựng SOAP client để có thể kết nốivới SOAP server
6 Xây dựng ứng dụng phía client (chẳng hạn sử dụng Java) và sau đó gọithực hiện dịch vụ thông qua việc kết nối tới SOAP server
Lựa chọn một ngôn ngữ, xây dựng các tiến trình nghiệp vụ và chúng ta bắt đầutạo nên một dịch vụ Web như ý muốn Sau đó là cung cấp dịch vụ Web này trênInternet
.II.6.2. Cách tạo một Web Service với Visual Studio 2008
- Bước 1:
Trang 39Hình 20: Tạo một Web Service với Visual Studio 2008 (1)
- Bước 2:
Hình 21: Tạo một Web Service với Visual Studio 2008 (2)
- Chạy chương trình ta được