Từ những lý dó đó, chúng em quyết định chọn đề tài cứu về môi trường phát triển ứng dụng cho thiết bị di động và xây dựng một ứng dụng đọc tin tức trực tuyến trên hệ điều hành iOS có kết
Trang 1LỜI MỞ ĐẦU
Nhu cầu thực tế và lý do chọn đề tài
Với sự ra đời của máy tính bảng (tablet) cùng những dòng điện thoại thông minh (smart phone) có cấu hình ngày càng “khủng” song hành cùng nhiều nền tảng hệ điều hành
di động thân thiện với người dùng và cũng không kém phần mạnh mẽ, giờ đây khi nhắc tới thiết bị di động, người dùng không còn nghĩ tới những chiếc điện thoại đơn thuần chỉ để nghe, gọi, nhắn tin như trước Thiết bị di động đã có thể đáp ứng mọi nhu cầu của con người từ làm việc, liên lạc, giao tiếp, giải trí, v.v… Bên cạnh đó, nhờ vào sự tiện lợi cũng như tính thẩm mĩ, thiết bị di động ngày càng thể hiện ưu thế của mình so với chiếc máy tính PC truyền thống
Song hành cùng với sự bùng nổ của của thiết bị di động là sự phát triển không ngừng của công nghệ truyền thông tốc độ cao Công nghệ 3G, 4G ra đời đã đem đến cho thiết bị
di động tốc độ kết nối truyền tải dữ liệu ngày nhanh, không thua kém gì mạng băng thông rộng truyền thống trên PC
Nhờ vào sự phát triển rông rãi của thiết bị di động kéo theo sự tăng trưởng không ngừng của ngành công nghiệp phần mềm di động Phát triền phần mềm di động tại Việt Nam hiện nay vẫn đang trong giai đoạn phát triển và hứa hẹn nhiều tiềm năng trong tương lai Từ những lý dó đó, chúng em quyết định chọn đề tài cứu về môi trường phát triển ứng dụng cho thiết bị di động và xây dựng một ứng dụng đọc tin tức trực tuyến trên hệ điều hành iOS có kết hợp xây dựng hệ thống webservice
di động cũng có sự khác biệt nhất định so với hệ thống cho website hay các máy tính trạm
Do vậy, nội dung đề tài cần giải quyết các công việc sau:
• Tìm hiểu về nền tảng lập trình cho thiết bị di động, ngôn ngữ lập trình, công cụ
hỗ trợ lập trình di động
• Tìm hiểu các công nghệ phát triển ứng dụng di động hiện có, tìm ra ưu, nhược
Trang 2điểm của mỗi loại công nghệ
• Nghiên cứu về hệ thống webservice, các công nghệ xây dựng webservice phổ biến
• Lựa chọn công nghệ xây dựng webservice cho ứng dụng di động
• Xây dựng một ứng dụng đọc tin tức online trên nền hệ điều hành iOS có sử dụng
hệ thống webservice
Nội dung đề tài:
• Chương 1: Sơ lược về thiết bị di động và ứng dụng di động
• Chương 2: Tổng quan hệ điều hành iOS
• Chương 3: Môi trường lập trình ứng dụng iOS
• Chương 4: Công nghệ Webservice
• Chương 5: Xây dựng đọc tin tức trực tuyến cho iPhone
• Kết luận: Kết quả đạt được và hướng phát triển
TP.Hồ Chí Minh, ngày 1 tháng 10 năm 2012
Sinh viên thực hiện:
Nguyễn Văn Đường
Trang 31.1 Sơ lược về thiết bị di động
Thiết bị di động (hay còn gọi là thiết bị cầm tay) là một thiết bị nhỏ gọn, thường có một màn hình hiển thị với đầu vào là bàn phím cảm ứng hoặc một bàn phím vật lý thu nhỏ Trước đâu khi nhắc tới thiết bị di động người ta sẽ nghĩ tới những chiếc điện thoại di động nhưng hiện tại thiết bị di động không chỉ có vậy Sự phát triển mạnh mẽ của các hệ điều hành di động đã đem đến cho người dùng những thiết bị nhỏ gọn và cơ động hơn máy tính
PC truyền thống như máy tính bảng (tablet), máy đọc sách, hay thậm trí cả những chiếc máy nghe nhạc được tích hợp hệ điều hành đều được được coi là thiết bị di động
Những thiết bị di động hiện tại đã có hàng loạt tính năng hiện đại như kết nối Wifi, GPS, NFC, 3G , nhờ vậy chúng hoàn toàn đủ khả năng phục vụ mọi nhu cầu trong đời sống sinh hoạt của con người, từ làm việc, liên lạc, tới giải trí Hơn thế nữa, nhờ vào tính tiện dụng và thiết kế đa dạng hợp thời trang, thiết bị di động đã làm thay đổi hoàn toàn thói quen sử dụng máy tính của chúng ta
Hoàn toàn có thể nói thời điểm hiện tại đang là giai đoạn bùng nổ thực sự của thiết bị
di động trên toàn cầu Ngành công nghiệp di động thật sự đang trở thành một mảng thị trường hấp dẫn mà bất cứ công ty nào cũng muốn nhắm tới Thị trường di động ngày càng
đa dạng với sự góp mặt của hoàng loạt tên tuổi lớn như Nokia, Apple, Samsung, LG,… thậm trí gần đây với sự kiện Amazon (nhà bán lẻ trực tuyến lớn nhất Hoa Kì) cho ra đời chiếc máy tính bảng Kindle đã cho thấy xu hướng thâm nhập thị trường di động là mong muốn của mọi công ty trên thế giới
1.2 Hệ điều hành di động
Phần quan trọng nhất làm nên sức mạnh của một thiết bị di động đó là hệ điều hành Cũng tương tự như hệ điều hành máy tính PC, hệ điều hành trên thiết bị di động cũng là một phần mềm chạy trên thiết bị di động dùng để điều hành, quản lý các phần cứng và các tài nguyên phần mềm của thiết bị Hệ điều hành đóng vai trò trung gian trong giao tiếp giữa người dùng và thiết bị di động, cung cấp một môi trường cho phép phát triển và thực hiện các ứng dụng một cách dễ dàng
Ở thời điểm hiện tại có khá nhiều hệ điều hành cho thiết bị di động trong đó nổi bật
và phát triển rộng rãi hơn cả phải kể đến iOS (của Apple), Android (của Google), Window Phone (của Microsoft), BlackBerry OS (của RIM) ngoài ra còn có một số tên tuổi khác như Symbian (của Nokia), Banda OS (của Samsung),Firefox OS, Tizen, Window
Trang 4Mobile… tuy nhiên thị phần của những hệ điều hành này hiện không nhiều.
1.3 Ứng dụng di động
Ứng dụng di động được hiểu là một ứng dụng phần mềm được thiết kế để chạy trên điện thoại thông minh, máy tính bảng hay những thiết bị di động khác Ứng dụng di động ban đầu được cung cấp để phục vụ cho những công việc căn bản như eMail, sổ địa chỉ (contact), lịch, chứng khoán, thông tin thời tiết.Tuy nhiên do nhu cầu ngày càng mở rộng cùng với sự hỗ trợ mạnh mẽ từ các công cụ phát triển, giờ đâu ứng dụng di động đã trở nên hết sức đa dạng, từ game online, GPS, ngân hàng điện tử, đặt vé, …
Ứng dụng di động đa phần được phân phối trên các chợ ứng dụng của các hãng sản suất phần mềm hay phần cứng nổi tiếng Một số chợ ứng dụng nổi tiếng nhất hiện nay gồm có:
Apple App Store: Ra đời cùng với chiếc điện thoại nổi tiếng iPhone vào tháng 8/2008, tới nay App Store của Apple đã có tới 625.000 ứng dụng cung cấp cho các thiết bị sử dụng hệ điều hành iOS bao gồm cả iPhone, iPad và iPod Touch
Google Play: là một của hàng phần mềm trực tuyến được phát triển bởi Google cho các thiết bị chạy hệ điều hành Android Google Play được khai trương vào tháng 10/2008 và tới cuối tháng 4/2012 ước tính đã có hơn 430.000 ứng dụng
Nokia Store: Nokia Store trước đây có tên là Ovi Store là chợ cung cấp ứng dụng của hãng điện thoại Phần Lan Nokia cho các thiết bị họ đặc biệt là thiết bị điện thoại thông minh (Smart Phone)
BlackBerry App World: là kênh phân phối ứng dụng cho các sản phẩm chạy hệ điều hành BlackBerry OS của hãng Research In Motion (RIM) Ra mắt chính thức vào ngày 1/4/2009
và tới tháng 9/2012 ước tính đã có 105.000 ứng dụng được phân phối tại đây
Windows Phone Marketplace: là một dịch vụ của Microsoft cung cấp các ứng dụng di động cho nền tảng Windows Phone 7 đã được ra mắt vào tháng 10/2010 Tới tháng 6/2012 Windows Phone Marketplace đã có 100.000 ứng dụng
Amazon Appstore: Được ra mắt vào 22/3/2011, Amazon Appstore cung cấp ứng dụng cho thiết bị cho sử dụng hệ điều hành Android Hiện nay Amazon Appstore mới có khoảng 3.800 ứng dụng nhưng với sự ra đời của chiếc máy tính bảng Kindle Fire của Amazon với
hệ điều hành Android tùy biến hứa hẹn sẽ thúc đẩy sự phát triển trong thời gian tới cho Amazon Appstore
Trang 5Ưu điểm của Native App lập trình viên có thể thoải mái truy cập vào hệ thống, phần cứng của thiết bị (như hệ thống file, camera, microphonr, accelerometer,…)
Nhược điểm là bị bó buộc với công nghệ và nền tảng của nhà sản xuất đưa ra
Web Application: là các ứng dụng được xây dựng trên nền tảng web (mà điển hình là HTML5), chỉ hoạt động trên trình duyệt của điện thoại Tiền thân của ý tưởng này là những trang web có giao diện tùy biến cao, chạy được trên nhiều độ phân giải màn hình, về sau phát triển mạnh và hình thành nên một hướng đi mới cho việc phát triển ứng dụng di động
Ưu điểm của web app là có thể thoải mái phatr triển ứng dụng mà không cần quan tâm tới nền tảng vì nó là ứng dụng đa nền, viết một lần có thể chạy trên nhiều nền tảng di động khác nhau, chỉ cần nền tảng đó hỗ trợ web
Nhược điểm: là không có được sức mạnh truy cập sâu vào hệ thống và thiết bị phần cứng như native app
Hybird Application: là loại ứng dụng lai giữa 2 khái niệm Native app và Web App Có thể hiểu nôm ba các ứng dụng này là một native app chỉ có một đối tượng webview trên màn hình, dùng để hiển thị nội dung trang web app, và web app giao tiếp với native app thông qua một cầu nối (bridge) để mang lại sức mạnh của native app cho web app
Chương 2: Tổng quan về hệ điều hành iOS
2.1 Tổng quan về hệ điều hành iOS
Hệ điều hành iOS là hệ điều hành được công ty Apple phát hành cho các thiết bị di động của hãng iOS được công bố lần đầu tiên tại hội nghị Macworld Conference & Expo ngày 9 tháng 1 năm 2007 và được phát hành chính thức vào tháng 6 năm đó cho chiếc điện thoại thông minh iPhone thế hệ đầu tiên của Apple
Ban đầu các ứng dụng của hãng thứ 3 không được hỗ trợ trên iOS Ngày 17 tháng 10
Trang 6năm 2007, Apple thông báo rằng một bản SDK cho lập trình iOS được hãng phát triển và
dự định sẽ được phát hành nó cho các nhà phát triển vào tháng 2 Phiên bản beta đầu tiên được phát hành vào ngày 6 tháng 3 năm 2008
Lần lượt các phiên bản hệ điều hành tiếp theo của hệ điều hành iOS được apple cập nhật cho iPhone, iPad và iPod Touch thông qua iTunes Phiên bản mới nhất của iOS là phiên bản 6.0 ra mắt ngày 12 tháng 9 năm 2012 cùng với chiếc điện thoại iPhone 6 của Apple
2.2 Các phiên bản của hệ điều hành iOS
Phiên bản 1.x: Đây là phiên bản đầu tiên và xuất hiện cùng chiếc iPhone đầu tiên (hay còn gọi là iPhone 2G) vào ngày 29/6/2007 Hệ điều hành mới mang đến một giao diện và cách thức sử dụng hoàn toàn mới trên thiết bị điện thoại thông minh với việc loại bỏ bàn phím vật lý thay bằng cảm ứng đa điểm
Phiên bản 2.x:Phiên bản thứ 2 được giới thiệu sau phiên bản đầu tiên 1 năm và phát hành chính thức cùng với chiếc iPhone thế hệ thứ 2 (iPhone 3G) cùng sự xuất hiện của App Store mang đến những ứng dụng từ các nhà phát triển thứ 3 cho thiết bị di động của Apple Các ứng dụng gốc như mail, danh bạ, lịch, trình duyệt Safari,… cũng lần lượt được cải tiến thông qua các bản cập nhật nhỏ sau đó iPhone 2G và iPod Touch Gen 1 vẫn có thể cập nhật phiên bản 2.x này
Phiên bản 3.x: một năm sau khi phát hành phiên bản hệ điều hành thứ 2, phiên bả thứ 3 được giới thiệu và chình thức ra mắt ngày 17/6/2009 cùng chiếc iPhone 3GS Ở phiên bản này, nhiều tính năng thiếu sót mà người dùng than phiền đã được Apple bổ sung gần như đầy đủ như: sao chép văn bản, nhắn tin đa phương tiện (MMS),… Các thiết bị đang chạy phiên bản 2.x vẫn có thể năng cấp lên phiên bản 3.x này nhưng đối với iPhone 2G thì một
số tính năng sẽ không được cập nhật Đây cũng là phiên bản cuối cùng mà iPhone 2G và iPod Touch Gen 1 có thể sử dụng
Trong thời điểu phiên bản 3.x đang được sử dụng thì Apple cho ra mắt chiếc máy tính bảng iPad đầu tiên của hãng và đã làm hẳn một phiên bản sử dụng riêng cho chiếc máy này là phiên bản 3.2 Nhìn chung, phiên bản dành riêng cho iPad này không có nhiều khác biệt vì vốn dĩ Apple chỉ tùy chình kích thước cũng như bổ sung them một số tính năng để phù hợp với màn hình của iPad
Phiên bản 4.x: thời điểm ra mắt phiên bản 4.x cũng là lúc Apple chính thức đặt tên hệ điều hành của mình là “iOS” và đây cũng là phiên bản đầu tiên của hệ điều ành này hỗ trợ đồng
Trang 7thời nhiều thiết bị iPhone 2G,3G sẽ lược bỏ bớt chức năng trên iOS 4 này vì một số hạn chế về phần cứng Đây là phiên bản cuối cùng mà iPhone 3G và iPod Gen 2 có thể năng cấp.Bên cạnh nâng cấp về ứng dụng bên trong hệ điều hành, phiên bản này còn có những tính năng đáng chú ý như: thư mục chứa ứng dụng (App Folder), khả năng chạy đa nhiệm (multitasking), thoại video qua wifi (Facetime), AirPlay, Wifi Hostpot (duy nhất trên iPhone từ iOS 4.3).
Phiên bản 5.x: được phát hành ngày 6/6/2011 Phiên bản này được phát hành cho iPhone 3GS, iPhone 4(GSM và CDMA), iPhone 4S, iPod Touch (thế hệ 3 và 4), iPad, iPad 2 Phiên bản này được nâng cấp nhiều chức năng mới trong đó có tiện ích Siri (chỉ hỗ trợ cho iPhone 4S) là một ứng dụng giúp giao tiếp với thiết bị bằng giọng nói, được Apple đặc biệt giữ bí mật cho tới tận ngày ra mắt
Phiên bản 6.x: được giới thiệu ngày 11/6/2012 và phát hành chính thức ngày 19/9/2012 Phiên bản này không hỗ trợ cho nhiều thiết bị phần cứng lỗi thời đặc biệt là iPod Touch thế
hệ thứ 3 và iPad thế hệ đầu Phiên bản này được Apple giới thiệu với nhiều cải tiến mà người dùng mong đợi:
o Facebook: Cuối cùng Apple cũng tích hợp sâu hơn với mạng xã hội Facebook trên iOS 6 Trước đây, với nền tảng iOS 5, Apple kết thân với mạng Twitter và thời điểm đó đã khiến rất nhiều người dùng than thở bởi hãng này vẫn chưa hỗ trợ Facebook vốn là mạng xã hội lớn nhất thế giới
o Siri: Siri trở nên mạnh mẽ hơn, có thể dùng giọng nói để ra lệnh mở các ứng dụng Nhờ đó, nếu người dùng ngồi cạnh bàn làm việc, cầm lấy iPhone và yêu cầu Siri bật nhạc hay ra lệnh cho nàng trợ lý mở các ứng dụng và các hành động khác nhau Siri đặc biệt xuất sắc khi thực hiện mệnh lệnh tìm kiếm số liệu/bàn thắng trong thể thao, tìm thời gian phát sóng phim, thời gian bán vé, và đặt lịch
ăn tối…
o Eyes Free: Một tính năng cực kỳ thú vị được Apple trang bị cho iOS đó chính là Eyes Free (rảnh mắt) Hãng này đang hợp tác với hàng loạt hãng xe hơi nổi tiếng, như Audi, BMW, Mercedes… để tích hợp chức năng Siri trên vô lăng
o Passbook: Tính năng này sẽ quản lý tất cả các loại vé, từ vé xem phim, vé tàu,
vé máy bay, cả vé đi xem thể thao… trên một ứng dụng riêng Với Passbook, người dùng có thể mua vé trên Fandango, và vé điện tử sẽ được gửi tới điện thoại của mình Sau đó, khi đi đến rạp chiếu phim hay lên tàu điện thì chỉ cần quẹt điện thoại iPhone tại các quầy soát vé
o Apple Maps: Apple đã chính thức nói lời chia tay với Google Maps Ứng dụng
Trang 8bản đồ của Apple giúp người dùng xác định vị trí rẽ, các địa điểm giải trí…, và đặc biệt người dùng có thể tìm kiếm trên Apple Maps bằng cách ra lệnh cho Siri Mặc dù Apple đã có màn trình diễn ấn tượng về ứng dụng của mình nhưng nhiều người hoài nghi về việc liệu đây có phải là quyết định sáng suốt khi tìm cách loại bỏ Google Maps Thực tế sau khi phát hành được gần một tháng ứng dụng bản đồ của Apple đã bộc lộ nhiều lối khiến người dùng thất vọng, thậm chí
là bực tức CEO Tim Cook của Apple đã phải công nhận thất bại của Apple Maps xin lỗi người dùng và cho biết Apple đang gấp rút làm việc để hoàn thiện bản đồ này
o Email: Apple nâng cấp hai tính năng đặc biệt quan trọng cho Email, đó là cho phép người dùng gán email VIP để đánh dấu e-mail được gửi từ những người quan trọng Ngoài ra, iOS 6 cho phép người dùng chèn ảnh và video vào e-mail trực tiếp từ ứng dụng Email
2.3 Các thiết bị di động sử dụng nền tảng iOS
iPhone: Với việc sự mắt iPhone 5 vào 29/9/2012 hiện nay có tất cả 6 phiên bản iPhone được bán trên thị trường lần lượt là iPhone 2, iPhone 3G, iPhone 3Gs, iPhone 4, iPhone 4S, iPhone 5 Ở mỗi thế hệ iPhone Apple giới thiệu đến người dùng đều có những nâng cấp đáng kể, đặc biệt là iPhone 4 với sự thay đổi lớn về thiết kế cũng như cấu hình Phiên bản mới nhất iPhone 5 với màn hình kích thước 5 inch (những phiên bản trước đều là 4,5 inch) đang nhận được nhiều đánh giá trái chiều từ người dùng cũng như giới công nghệ
iPod Touch: được xem là chiếc iPhone lược bỏ tính năng thoại, nhắn tin Với tính năng gần như 1 chiếc iPhone thực thụ gồm màn hình cảm ướng, cài đặt ứng dụng của iPhone,… iPod đã thực sự tạo ra một cơn sốt trên thị trường máy nghe nhạc ngay từ khi ra mắt phiên bản đầu tiên Hiện nay đã có tất cả 5 thế hệ iPod được ra mắt
iPad: đây là chiếc máy tính bảng đình đám và nổi tiếng nhất thời điểm hiện tại Có tất cả 3 thế hệ iPad đã ra mắt là iPad, iPad 2 và New iPad Mặc dù các hãng khách cho ra mắt hàng loạt thiết bị máy tính bảng nhưng tới thời điểm hiện tại iPad vẫn là biếu tượng của thiết bị máy tính bảng, chiếm phần lớn thị phần thiết bị này
Chương 3: Môi trường lập trình ứng dụng iOS
Hệ điều hành iOS hỗ trợ tốt cho cả 3 loại ứng dụng là Native App, Web App và
Trang 9Hibrid App Nội dung đề tài sẽ đi sâu vào giới thiệu môi trường lập trình ứng dụng Native cho iOS.
3.1 Bộ công cụ lập trình Xcode
3.1.1 Giới thiệu
Xcode là một môi trường phát triển tích hợp (Integrated Development Environment) chứa một bộ công cụ phát triển phần mềm được phát triển và phân phối bởi Apple để phát triển phần mềm cho OS X và iOS Xcode được phát hành lần đầu tiên năm 2003, phiên bản mới nhất là Xcode 4.5.1 Xcode được cung cấp miễn phí nhưng nó chỉ chạy được trên hệ điều hành Mac OS X, không hỗ trợ Windows hay bất kì hệ điều hành nào khác Các nhà phát triển phần mềm có thể download Xcode về từ trang chủ của Apple:
Chính vì thế, tài khoản miễn phí chỉ phù hợp cho người mới bắt đầu Khi bắt đầu làm những apps thương mại, chúng ta phải cần đến 1 trong 2 lựa chọn sau:
Tài khoản Nhà phát triển Chuẩn (Standard program)
- Chi phí $99/năm
- Với tài kho ản này, chúng ta có thể tiếp cận được nhiều tài liệu hơn việc phát triển phần mềm cho iOS, được hỗ trợ về kỹ thuật từ Apple Và quan trọng nhất là có thể chạy thử apps trên thiết bị thật thay vì chỉ kiểm tra trên simulator Quan trọng hơn nữa là apps của chúng ta có cơ hội được đưa lên Apple AppStore Có 2 lựa chọn trong tài khoản này:
- Cá nhân (Individual): đăng ký với tên của cá nhân và những apps được đưa lên Apple AppStore sẽ xuất hi ện dưới tên này
- Công ty (Company): đăng ký với tên công ty (yêu cầu những giấy tờ liên quan) Apps được đưa lên sẽ xuất hi ện dưới tên công ty đã đăng ký
Trang 10Tài khoản cho Công ty/Tổ chức chuyên nghiệp (Enterprise program)
- Chi phí $299/năm
- Gói tài khoản này dành cho các công ty phát triển phần mềm cho iPhone OS, có khả năng xuất bản các apps lên những thiết bị nội bộ trong công ty Dành cho những công
ty, tổ chức lớn có nhu cầu viết phần mềm cho iPhone OS phục vụ nhu cầu riêng của công
ty, không cần phải tải và cài đặt từ Apple AppStore
3.1.2 Giao diện làm việc của Xcode
a Giao diện tạo project mới:
Hình : Tạo mới một project trong XCode
Từ phiên bản Xcode 4 trở đi ngoài lựa chọn tạo project cho ứng dụng chạy trên Mac
OS X, XCode còn phép tạo project phát triển ứng dụng cho iPhone hoặc iPad Xcode cung cấp sẵn các template để tạo mới project ứng với nhu cầu phát triển ứng dụng khác nhau Khi tạo xong project mới thì giao diện sẽ như sau:
Trang 11Hình :Giao diện làm việc chính của XCode
- Toolbar : hiển thị trạng thái của project và giúp sử dụng các chức năng chung của project một cách dễ dàng
- Navigator : Quản lý các file và group
- Editor : chỉnh sửa nội dung của project
- Utility : giúp hợp nhất giữa xcode và các thư viện , giúp đỡ của Interface Builder
Trang 12Hình :Giới thiệu giao diện chính của XCode
b Building Interface:
Trang 13Hình :Giao diện Interface Builder
Một sự thay đổi lớn trong XCode 4 so với các phiên bản trước là Interface Builder, chức năng này giúp hỗ trợ người lập trình thiết kế giao diện bằng phương thức kéo thả trực tiếp các item từ library ra giao diện đang thiết kế
3.2 Ngôn ngữ lập trình Objective-C
3.2.1 Lịch sử ra đời và phát triển
Objective-C là một ngôn ngữ lập trình hướng đối tượng sử dụng để phát triển ứng dụng cho hệ điều hành Mac OS X (hệ điều hành của máy tính Mac) và các thiết bị iOS.Objective-C được tạo ra từ những năm 1980 bởi hai lập trình viên Brad Cox và Tom Love Tuy nhiên tại thời điểm đó ngôn ngữ này không được nhiều người biết tới cho đến khi nó được mua lại bởi NeXT cho hệ điều hành NeXTSTEP của họ Sau khi NeXT được mua lại nởi Apple năm 1996, Objective-C trở thành ngôn ngữ lập trình chính cho Mac OS
Trang 14x và sau này là cả iOS.
3.2.2 Đặc điểm cơ bản
Objective-C được phát minh dựa trên ngôn ngữ C nên những mã được viết bằng C hoàn toàn có thể sử dụng trong một trương trình sử dụng Objective-C Tuy nhiên Objective-C có thêm những tính năng riêng của mình nên không thể sử dụng trong một trương trình C truyền thống
a. Sử dụng phương thức trong Objective-C:
• Cách khai báo phương thức trong Objective-C:
Không tham số:<(kiểu trả về)>
Có tham số: <(kiểu trả về)>:<(kiểu)>:<(kiểu)>;
• Gọi phương thức:
Với phương thứckhông có giá trị trả về: [<đối tượng >];
[<đối tượng >:<kiểu>]
Với phương thức có giá trị trả về:
(kiểu dữ liệu tương ứng) =[<đối tượng>]
(kiểu dữ liệu tương ứng)=[<đối tượng>:<kiểu>:<kiểu>]
b. Lớp và đối tượng:
Không giống những ngôn ngữ khác như C hay Java, Class (lớp) trong Objective-C được chia thành 2 phần riêng biệt:
- Phần bề mặt (Interface) trong đó khai báo các biến và chức năng hay phương thức
- Phần thực thi (Implementation) trong đó chứa các mã thực thi của chức năng hay phương thức được khai báo trong phần Interface
Thông thường hai phần này sẽ được chứa trong hai file (tập tin) khác nhau File có phần mở rộng là “.h” chứa phần interface, phần Implementation nằng trong file “.m”
- Sử dụng #import để thay thế cho #include
- Objective-C chỉ cho phép đơn kế thừa Mặc định tất cả các lớp sẽ kế thừa từ NSObject
- Các thuộc tính được khai báo trong cặp {…} và phương thức được khai báo bên ngoài
- Nếu phương thức bắt đầu bằng dấu “+” có nghĩa nó thuộc phạm vi lớp (static), còn nếu bắt đầu bằng “-“ thì nó thuộc phạm vi lớp object
- Các phạm vi truy xuất public, private, protected đều giống C++, mặc định biến khai báo mà ko chỉ rõ phạm vi truy xuất thì sẽ là biến protected
- Cách truy nhập phần tử cũng sử dụng toán tử “.” đối với object và ”->” nếu là con trỏ
c Exception và handler:
Trang 15Objective-C hỗ trợ các cấu trúc try – catch – throw – finally giống như ngôn ngữ C++.
d Categories:
Là một đặc điểm cho phép thêm mới vào lớp một phương thức Khi đã làm quen với lập trình hướng đối tượng bạn sẽ thấy đây là một trong những thuộc tính vô cùng hữu ích của Objective-C, nhờ nó mà ngay cả khi bạn không có mã nguồn của lớp nhưng bạn vẫn hoàn toàn có thể thêm phương thức cho lớp như thường Đặc điểm này giúp giảm đi đáng
kể sự kế thừa phức tạp trong C++, khi việc kế thừa chỉ để phục vụ cho việc them mới một phương thức Mặt khác việc chia mã nguồn trên nhiều tập tin cũng giúp ích đáng kể cho việc phát triển
Lưu ý:
- Tên của category phải là duy nhất
- Có thể them bao nhiêu lần mở rộng lớp từ category là không giới hạn nhưng với
tên là duy nhất
- Không thể bổ sung biến thành phần bằng category.
- Có thể sử dụng category để tạo ra các phương thức private.
Objective-C có 2 lựa chọn là @synthesize và @dynamic, với lựa chon là
@synthesize thì mặc nhiên trình biên dịch sẽ giúp bạn sinh ra các phương thức set và get trên thuộc tính, xen kẽ vào đó @dynamic có thể được sử dụng để chia các phương thức
f. Kiểu ID:
ID trong Objective-C gần tương tự như void* trong C Ta không cần phải biết rõ kiểu của đối tượng khi gọi phương thức trong Objective-C điều này hoàn toàn khác vớ C++ bởi đơn giản khi gọi phương thức cũng giống như ta truyền thông điệp trong Objective-C Nếu đối tượng đó có phương thức thì sẽ đáp lại thông điệp mà bạn truyền (gọi phương thức) và phương thức được gọi
g Dynamic types (ép kiểu động):
Trang 16Những phương thức dưới đây dùng để kiểm tra kiểu:
-(BOOL) isKindOfClass: classObj - đối tượng là hậu duệ hoặc thể hiện của classObj
- (BOOL) isMemberOfClass: classObj – là một phần của objClass
- (BOOL) respondsToSelector: selector – đối tượng có phương thức bởi selector+ (BOOL) instancesRespondToSelector: selector – đối tượng được tạo bởi lớp có đáp ứng selector
-(id) performSelector: selector – triệu gọi chính sách selector trên đối tượng
h Constructor – hàm khởi tạo
Với một lớp thì hàm khởi tạo dùng để sinh đối tượng và cũng là chỗ để tư duy về hàm huỷ và cách thức lưu trong bộ nhớ của đối tượng Tất nhiên không có gì là không thể viết khi bạn đã hiểu rõ và thông thạo ngôn ngữ Và hẳn nhiên bạn có thể quên hết những luật về khởi tạo đối tượng hàm tạo và hàm huỷ của C++, với Objective-C bạn hoàn toàn có thể tự mình chế biến những hàm đó theo ý thích và cũng không có quy luật gì về tên tuổi hàm, tuy nhiên theo thói quen truyền thống để giúp style – code trở nên sáng sủa nên dung bằng các từ như init hoặc tương tự để định nghĩa hàm khởi tạo
i. Memory Management
Objective-C có 2 lựa chọn cho việc quản lý bộ nhớ Thông thường bộ nhớ được quản
lý bởi lập trình viên, Objective-C có trình biên dịch chỉ thị như “release”, “retain”,
“autorelease” là những chỉ thị hỗ trợ lập trình viên mạnh mẽ trong việc quản lý bộ nhớ.Objective-C sử dụng một tham chiếu đếm để dò tìm ra những thay đổi trên một đối tượng Biến đếm này sẽ tăng lên một khi đối tượng được cấp phát bộ nhớ bằng phương thức alloc, biến đếm này sẽ giảm đi một khi đối tượng được giải phóng bằng phương thức dealloc Như vậy nguyên lý cấp phát và duy trì bộ nhớ của đối tượng trong Objective-C được sử dụng thông qua phương thức alloc và dealloc
Mặt khác, Objective-C cũng cung cấp một cơ chế thông minh giúp bạn không phải quan tâm đến việc cấp phát và giải phóng bộ nhớ là cơ chế NSAutoreleasePool Để dùng được cơ chế này ta chỉ việc nhớ kẹp đoạn code mà bạn muốn kiểm soát vào giữa đoạn code:
NSAutoreleasePool *pool = [[ NSAutorelease alloc] init] ;
………
[pool release];
Trang 17Nguyên lý này cũng giống như lời gọi hàm vì thế ta hoàn toàn có thể sử dụng lồng nhau và sự đóng mở hợp lý (giống như thẻ đóng và mở của XML) tự nhiên Objective-C sẽ đẩy các lời gọi pool sau xuống stack và đặt pool mới trên cùng sau đó nhét các object được tạo ra trong long nó vào cái pool mới tạo để nếu xong thì giải phóng rồi lại đẩy tiếp thẳng pool ở dưới lên.
Có thể lồng các khối NSAutoreleasePool vào nhau Khi ta gọi autorelease thì Objective-C tự biết nhét biến vào NSAutoreleasePool mới nhất Mỗi khi biến NSAutoreleasePool mới nhất được giải phóng, biến cũ hơn được tự động độn lên thành biến mới nhất
Khi chương trình sử dụng bộ nhớ nhiều, để tránh giữ bộ nhớ lâu mà không được tự động giải phóng, gây tình trạng thiếu bộ nhớ (cần hết sức lưu ý khi lập trình cho thiết bị ít
bộ nhớ như iPhone) nên tạo NSAutoreleasePool mới mỗi khi cần xử lý lâu, mất thời gian
3.3 Tổng quan về lập trình iOS
Nền tảng chủ yếu để phát triển phần mềm cho iOS là sử dụng Cocoa Touch Cocoa Touch là một UI framework để xây dựng ứng dụng cho thiết bị chạy iOS Mới làm quen với Cocoa Touch ta sẽ thấy nó rất khác so với Java, C#.Net hay những ngôn ngữ lập trình khác Cocoa Touch bao gồm UIKit (Bộ xây dựng giao diện) và Foundation frameworks, chúng cung cấp nền móng cơ bản cũng như các tiện ích giúp ta xây dựng ứng dụng hướng
sự kiện và hướng đồ hoạ trong iOS Nó còn có một số frameworks khác cung cấp các dịch
vụ chính (key services) truy cập tới các đặc tính thiết bị như phần danh bạ (contact) của người dùng
Để dễ dàng hơn trong việc tiếp cận Cocoa Touch cần phải chú ý những đặc điểm khác biệt của iOS so với những hệ điều hành khác:
3.3.1 Hỗ trợ đa nhiệm (multi – threading)
Những phiên bản cũ của hệ điều hành iOS không hỗ trợ đa nhiệm Từ phiên bản 4.0 được ra mắt với tên iOS 4 hệ điều hành iOS bắt đầu hỗ trợ chạy đa nhiệm
Trang 18chứa nhiều thành phần con.
3.3.3 Hạn chế trong việc truy cập
Một điểm khác biệt nữa giữa iOS và các hệ điều hành máy tínhlà những ứng dụng trên iOS sẽ bị giới hạn quyền truy cập iOS rất nghiêm khắc hạn chế những gì chúng ta có thể làm, đặc biệt là những truy cập tới tập tin hệ thống Chúng ta chỉ có thể làm việc với những thư mục, tập tin trong phạm vi ứng dụng của chúng ta (được gọi là application’s sandbox) Đó là nơi chúng ta lưu trữ tài liện, cài đặt cấu hình và một số loại dữ liệu khác Chúng ta không có quyền truy cập sâu vào hệ thống để thực hiện các chức năng như khởi động lại máy hay truy cập vào những thông số cài đặt của thiết bị từ ứng dụng của mình
3.3.4 Hạn chế về thời gian phản hồi của hệ thống
Về khía cạnh này trước hết ta phải nhìn theo góc nhìn của người dung Với một thiết
bị di động, người dung muốn sử dụng ứng dụng thật nhanh, trong những lúc không được tiện nghi cho lắm (đang đi trên đường, cần tra cứu một thông tin,…) Người dung thiết bị
di động chắc chắn không muốn và không thể đợi một thời gian dài để thực hiện một tác vụ nào đó Khác với người dung máy tính, ngồi ở bàn làm việc, có thể ngả lưng ra sau và đợi một phần mềm khởi động trong vòng 30 giây hay có thể là một phút, đối với thiết bị di động, khi khởi động chương trình thì tất cả mọi thứ phải được tải và mở ra trong vòng vài giây Khi đóng trương trình, nếu những tác vụ lưu trữ thông tin cài đặt hay thong số chạy chậm hơn 5 giây đồng nghĩa với thất bại vì hệ thống sẽ không thực hiện các tác vụ đó nữa
3.3.5 Hạn chế về kích thước màn hình
Rõ ràng màn hình của những thiết bị di động luôn có kích thước nhỏ hơn những máy tính để bàn hoặc laptop Chính vì thế mà chúng ta cần phải lưu ý khi thiết kế giao diện người dùng sao cho hợp lý và dễ dàng nhất cho người sử dụng
3.3.6 Hạn chế về tài nguyên hệ thống
Mặc dù cấu hình của những chiếc smart phone này càng mạnh nhưng vẫn là khập khiễng nếu so sánh với máy tính truyền thống Không có được những CPU tốc độ nhanh như trên máy tính, các hệ điều hành di động cũng được thiết kế nhỏ gọn và linh hoạt để có thể chạy mượt mà trên CPU đó, vì thế khi phát triển ứng dụng iOS chúng ta cần quan tâm kĩ đến việc sử dụng tài nguyên hệ thống
Trang 193.3.7 Những lợi thế của các thiết bị chạy iOS
Khi iOS không được hỗ trợ một số chức năng thì nó phải được cung cấp một số chức năng khác mà bản thân Cocoa không có Hay nói cách khác là Cocoa Touch được hỗ trợ một số chức năng không có trên hệ điều hành của máy Mac
iOS hỗ trợ chúng ta định vị tọa độ địa lý qua Core Location
Thiết bị iOS có camera chụp hình và thư viện hình ảnh và iOS SDK cho phép truy cập
cả 2 thứ này
iPhone, iPod và iPad được trang bị một cảm biến trọng lực (accelerometer) để biết được thiết bị đang được cầm và di chuyển như thế nào
3.3.8 Cách tiếp cận khác so với lập trình thiết bị máy tính truyền thống
Điều khác biệt quan trọng nhất trong các biết bị di động như iPhone, iPod, iPad là chúng không có bàn phím và chuột Bởi vậy chúng ta cần có những phương pháp tiếp cận khác để xử lý bàn phím ảo cũng như những thao tác cảm ứng của người dùng lên màn hình Ví dụ: khi người dùng bấm vào một text-field thì hệ điều hành tự hiểu phải làm gì, bàn phím ảo xuất hiện Và chúng ta không cần phải viết bất kỳ dòng lệnh nào để kiểm soát việc này
3.4 Kiến trúc một ứng dụng iOS
3.4.1 Mô hình kiến trúc của một ứng dụng iOS chuẩn
Để hiểu kiến trúc của một ứng dụng iOS, cần tìm hiểu về Design Patterns Có 3 pattern chính mà chúng ta sử dụng khi phát triển ứng dụng:
Delegation:
Delegation là một pattern nơi mà một đối tượng gửi định kỳ các thông điệp (message) tới một đối tượng xác định khác để lấy dữ liệu đầu vào hay để thông báo cho delegate (đối tượng ủy quyền) các sự kiện đang xảy ra Các phương thức của Delegate được nhóm lại thành một giao thức, và được trình bày dưới dạng một lớp
Đối tượng ứng dụng (application object) bảo Delegate của nó là chương trình khởi động chính (main start-up routine) đã hoàn thành và việc cấu hình có thể bắt đầu Bạn muốn Delegate tạo một thể hiện (instance) của một controller để thiết lập và quản lý view
Model-View-Controller (MVC):
Trang 20MVC hay Model-View-Controller (tiếng Anh) là một mẫu kiến trúc phần mềm cho
kỹ thuật kỹ sư phần mềm Khi sử đúng cách, mẫu MVC giúp cho người phát triển phần mềm cô lập các nguyên tắc nghiệp vụ và giao diện người dùng một cách rõ ràng hơn Phần mềm phát triển theo mẫu MVC tạo nhiều thuận lợi cho việc bảo trì vì các nguyên tắc nghề nghiệp và giao diện ít liên quan với nhau Mô hình MVC bao gồm các thành phần:
- Đối tượng Model: bao gồm tất cả các đối tượng, biểu diễn và quản lý dữ liệu của đối tượng
- Đối tượng View: Để hiển thị dữ liệu và cho phép người dùng có thể chỉnh sửa nó Bạn cần có một view chính chứa các view nhỏ
- Đối tượng Controller: Một đối tượng trung gian giữa đối tượng Model và đối tượng View Lấy dữ liệu từ Model để hiển thị lên ở View
Hình : Mô hình MVC
Target-Action:
Là kỹ thuật cho phép đối tượng điều khiển (Nút - button, Thanh trượt – slider…) đáp lại một sự kiện người dùng (như kích chuột hay nhấn phím) để gửi một thông điệp (The
Trang 21action) tới một đối tượng khác (The target), đối tượng đích này sẽ dịch sự kiện và điều khiển nó một cách thích hợp Khi chúng ta nhấn vào nút, nút bảo đối tượng Controller cập nhật lại đối tượng Model và đối tƣợng View dựa trên dữ liệu người dùng nhập vào
3.4.1 Vòng đời một ứng dụng iOS (application life cycle)
Một vòng đời ứng dụng tạo thành một chuỗi sự kiện xảy ra giữa quá trình khởi động và chấm dứt ứng dụng Trong iOS, người dùng khởi chạy ứng dụng bằng cách nhấp vào icon của ứng dụng trên màn hình Một thời gian ngắn sau đó:
- Hệ thống hiển thị một số hiệu ứng đồ họa chuyển tiếp có thể là màn hình chào mừng (Wellcome screen), popup thông báo (notification),…
- Xử lý khởi chạy ứng dụng bằng cách gọi một số hàm chức năng chính
Từ thời điểm này, phần lớn các công việc khởi tạo được giao cho UIKit để tải giao diện người dùng của ứng dụng và bắt đầu vòng lặp sự kiện của ứng dụng
Trong iOS 4 và những phiên bản về sau có hỗ trợ đa nhiệm, ứng dụng của bên thứ 3 có thể được chạy ngầm và lưu trạng thái trong bộ nhớ nên lần chạy tiếp theo của ứng dụng không phải lúc nào cũng liên quan tới việc bắt đầu áp dụng từ đầu
Trang 22Dưới đây là mô tả các sự kiện của ứng dụng trong vòng đời của nó:
Hình : Vòng đời ứng dụng iOS (1)
Trang 23Hình : Vòng đời ứng dụng iOS (2)
Đối với iOS 3 chỉ có 2 trạng thái của ứng dụng là Active và Not running
iOS 4 trở lên hỗ trợ đa nhiệm nên ứng dụng của bên thứ 3 có thể được chạy ở chế độ nền (background) do đó vòng đời của ứng dụng có thể có những trạng thái:
- Not running: Ứng dụng không được khởi chạy
- Inactive: Ứng dụng đang chạy nền nhưng không nhận được sự kiện
- Active: Ứng dụng đang chạy và có thể nhận được sự kiện
- Background: Hầu hết ứng dụng vào trạng thái này sau một thời gian ngắn sẽ đình chỉ hoạt động Tuy nhiên một ứng dụng có thể yêu cầu thêm thời gian thực hiện
để vẫn còn trong trạng thái này trong một khoảng thời gian Ngoài ra một ứng dụng có thể được đưa trực tiếp vào trạng thái này thay vì trạng thái inactive
- Susppended: Ứng dụng vào trạng thái chạy nền nhưng không tiếp tục thực thi code sử lý thì sau một khoảng thời gian hệ thống sẽ tự động đưa ứng dụng vào trạng thái này Trong trạng thái này ứng dụng đóng băng và không sử lý bất kì mã
Trang 24nào Và khi bộ nhớ của thiết bị gần đầy, hệ thống sẽ đình chỉ ứng dụng ở trạng thái này mà không cần thông báo, để lấy tài nguyên phục vụ cho các ứng dụng đang chạy.
Làm sao để một ứng dụng chạy nền (background) trở lại trạng thái chạy foreground?Khi người dùng chạy một ứng dụng đang sống trong trạng thái background hệ thống sẽ
di chuyển nó vào trạng thái inactive và sau đó vào trạng thái active Điều này được thực hiện bằng cách gọi các phương thức trong delegate của ứng dụng là applicationWillEnterForeground và applicationDidBecomeActive
lý xong những tác nhân gây gián đoạn bằng cách lựa chọn chấp nhận hoặc bỏ qua tác vụ gây gián đoạn đó
- Nếu người dùng bỏ qua tác nhân gây gián đoạn, ứng dụng sẽ tiếp tục được kích hoạt
- Nếu người dùng chấp nhận gián đoạn, ứng dụng sẽ chuyển vào trạng thái suspended
Trang 25Hình : Vòng đời ứng dụng iOS (4)Chương 4: Công nghệ Webservice
Ngày nay cùng với sự phát triển mạnh mẽ của môi trường internet, các ứng dụng triển khai trên nền Web ngày càng được phát triển rộng rãi và phong phú Trong nền kinh tế thị trường hiện nay, chuyển đổi dữ liệu, thông tin đang là một nhu cầu thiết yếu cho sự phát triển và tồn tại của các doanh nghiệp Dịch vụ Web (Web Service) được coi là một công nghệ mang đến cuộc cách mạng trong cách thức hoạt động của các dịch vụ B2B (Business
to Business) và B2C (Business to Customer) Giá trị cơ bản của dịch vụ Web dựa trên việc cung cấp các phương thức theo chuẩn trong việc truy nhập đối với hệ thống đóng gói và hệ thống kế thừa Các phần mềm được viết bởi những ngôn ngữ lập trình khác nhau và chạy
Trang 26trên những nền tảng khác nhau có thể sử dụng dịch vụ Web để chuyển đổi dữ liệu thông qua mạng Internet theo cách giao tiếp tương tự bên trong một máy tính Tuy nhiên, công nghệ xây dựng dịch vụ Web không nhất thiết phải là các công nghệ mới, nó có thể kết hợp với các công nghệ đã có như XML, SOAP, WSDL, UDDI… Với sự phát triển và lớn mạnh của Internet, dịch vụ Web thật sự là một công nghệ đáng được quan tâm để giảm chi phí và
độ phức tạp trong tích hợp và phát triển hệ thống
4.1 Giới thiệu về ứng dụng phân tán
Công nghệ Web Service đã thay đổi điện mạo và cách thức hoạt động của ứng dụng phân tán cũng như giải quyết khó khăn của ứng dụng phân tán trước đây là vấn đề với Firewall và Proxy Server Chúng ta sẽ tìm hiểu khái quái về ứng dụng phân tán để hiểu hơn
về web service
4.1.1 Tổng quan về hệ phân tán
Hệ phân tán là một hệ thống các thành phần (máy tính) xử lý phân tán và giao tiếp với nhau qua một cơ sở hạ tầng truyền thông chung
Phân loại Hệ phân tán bao gồm:
- Hệ phân tán mang tính hệ thống: hệ điều hành phân tán
- Hệ phân tán mang tính ứng dụng: các hệ thồng truyền tin phân tán
Mục tiêu của hệ phân tán:
- Giảm rủi ro và chi phí phát triển: Chi phí phát triển của những hệ thống lớn là rất tốn kém và có thể vượt khả năng chi trả của nhiều tổ chức Việc tập trung tất cả thông tin tại một nơi là nguy cơ tiềm tang về mất mát dữ liệu khi có sự cố xảy ra
- Sở hữu thông tin: Thông tin có thể ở nhiều dạng, nhiều nguồn, và thuộc sở hữu của nhiều tổ chức khác nhau Việc gom hết tất cả thông tin về một nơi là bất khả thi Do đó việc phân tán thông tin là cần thiết
- Độ an toàn: đối với những dữ liệu quan trọng và nhạy cảm, nhu cầu bảo mật thông tin được đưa lên hàng đầu, đồng thời dữ liệu phải được truy xuất dễ dàng Bởi vậy việc dữ liệu được chia nhỏ thành nhiều phần và phân tán nhiều nơi đáp ứng vấn đề bảo mật và truy xuất dễ dàng
Đặc trưng của hệ phân tán:
- Kết nối người sử dụng và chia sẻ tài nguyên, giải quyết bài toàn chia sẻ tài nguyên trong hệ thống
- Tính trong suốt: ẩn dấu sự rời rạc và nhược điểm nếu có của hệ thống với người sử
Trang 27- Các hệ điều hành khác nhau sẽ hỗ trợ những kiểu dữ liệu khác nhau Đôi khi các kiểu
dữ liệu không tương thích 100% trên các nền tảng hệ điều hành khác nhau Khi phát triển ứng dụng phân tán cần chú ý đến việc hòa hợp dữ liệu trên các môi trường
- Các thành phần của một ứng dụng phân tán thường ở nhiều nơi khác nhau trên mạng
do đó khả năng sinh lỗi cao hơn bình thường
- Nếu server lưu trạng thái client, khi client bị ngừng đột ngột, hệ thống cần có biện pháp thông báo cho server và thu hồi tài nguyên bị chiềm giữ cũng như dữ liệu đang gửi đi
- Dữ liệu phân tán thường được gửi qua nhiều node trên mạng, do đó bảo mật là vấn đề quan trọng cần giải quyết
- Vấn đề đồng bộ thời gian của client và server cũng rất quan trọng
4.1.4 Các hệ thống phân tán
RMI (Remote Mothod Invocation):
Trang 28- Được Sun đưa ra.
- Là một cơ chế cho phép một đối tượng đang chạy trên máy ảo Java này triệu gọi các phương thức tồn tại trên máy ảo Java khác
- Cơ chế hoạt động: thiết lập kết nối Clien-Server
o Server: cung cấp dịch vụ RMI
o Client: triệu gọi các phương thức trên đối tượng của dịch vụ do server cung cấp
- Được tích hợp sắn trong Java
DCOM (Distribite Component Object Model)
- Được Microsoft đưa ra
- Hoạt động dựa trên giao thức TCP-IP, thông qua việc gửi thông tin dưới dạng nhị phân (binary)
- Giao tiếp thông qua việc thiết lập Client-Server
CORBA (Common Object Request Broker Architecture)
- Được OMG (Object Management Group) đưa ra nhằm tạo nên một hệ thống phân tán vượt qua nhiều vấn đề về tính tương kết (interoperabity) với việc kết hợp các ứng dụng mạng
- CORBA là một hệ phân tán mở, động lập nền tảng và độc lập ngôn ngữ
4.1.5 Hạn chế của các hệ thống phân tán trên
- Firewall : các hệ thống phân tán trên khi hoạt động ở những mạng được che chắn bởi firewall đều phải được sự cho phép của những người quản trị firewall để được ra ngoài Đây là một lỗ hổng bảo mật tiềm tàng và khó chấp nhận đối với nhiều tổ chức
- Sự phối hợp các giao thức: các mô hình trên đều có đặc điểm và dựa trên các giao thức tầng dưới khác nhau Việc xây dựng chương trình chuyển đổi qua lại giữa các tầng với nhau dẫn đến việc mất mát thông tin và các tầng khác nhau có thể không thể cùng làm việc được với nhau
4.2 Dịch vụ web (Web Service)
4.2.1 Khái niệm web service
Theo định nghĩa của W3C (World Wide Web Consortium), dịch vụ Web 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 Dịch vụ Web là tài nguyên phần mềm có thể xác định bằng địa chỉ URL,
Trang 29thực hiện các chức năng và đưa ra các thông tin người dùng yêu cầu Một dịch vụ Web được tạo nên bằng cách lấy các chức năng và đóng gói chúng sao cho các ứng dụng khác
dễ dàng nhìn thấy và có thể truy cập đến những dịch vụ mà nó thực hiện, đồng thời có thể yêu cầu thông tin từ dịch vụ Web khác Nó bao gồm các mô đun độc lập cho hoạt động của khách hàng và doanh nghiệp và bản thân nó được thực thi trên server
Trước hết, có thể nói rằng ứng dụng cơ bản của Dịch vụ Web là tích hợp các hệ thống
và là một trong những hoạt động chính khi phát triển hệ thống Trong hệ thống này, các ứng dụng cần được tích hợp với cơ sở dữ liệu (CSDL) và các ứng dụng khác, người sử dụng sẽ giao tiếp với CSDL để tiến hành phân tích và lấy dữ liệu Trong thời gian gần đây, việc phát triển mạnh mẽ của thương mại điện tử và B2B cũng đòi hỏi các hệ thống phải có khả năng tích hợp với CSDL của các đối tác kinh doanh (nghĩa là tương tác với hệ thống bên ngoài – bên cạnh tương tác với các thành phần bên trong của hệ thống trong doanh nghiệp)
Chúng ta sẽ xem qua những khái niệm và cách thức cơ bản nhất để xây dựng một dịch
vụ Web trong tích hợp và phát triển hệ thống:
4.2.2 Đặc điểm của dịch vụ Web
- 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ên một máy chủ chạy hệ điều hành Linux trong khi người dùng sử dụng máy tính chạy hệ điều hành Windows, ứng dụng vẫn có thể chạy và xử lý bình thường mà không cần thêm yêu cầu đặc biệt để tương thích giữa hai hệ điều hà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ạng Internet
- 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ĩnh vự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ạng Internet
- 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
Trang 30dụ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ếm cá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ương mại như giá cả, tỷ giá hối đoái, đấu giá qua mạng…hay dịch vụ giao dịch trự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ùng vớ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 có 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ông tin 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
4.2.3 Ưu nhược điểm của dịch vụ web
- 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
Trang 31- Phải quan tâm nhiều hơn đến vấn đề an toàn và bảo mật.
4.2.4 Kiến trúc của dịch vụ Web
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) 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 được gửi đi chính xác bởi HTTP và TCP/IP
Hình :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ới nhữ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:
- Dịch vụ vận chuyển (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
- 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ộ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