Việc kết nối, truyền nhận dữ liệu giữa client và server:

Một phần của tài liệu Xây dựng ứng dụng tìm kiếm đa phương tiện trên điện thoại iphone (Trang 93 - 94)

2. Cơ bản về Core Audio

4.3.1. Việc kết nối, truyền nhận dữ liệu giữa client và server:

Vấn đề đặt ra khi tạo ứng dụng là làm sao có thể tạo một kết nối giữa client (iPhone) và server (máy tìm kiếm Socbay). iPhone SDK cung cấp một số cách:

- Download dữ liệu trực tiếp từ URL

- Sử dụng giao thức HTTP gửi yêu cầu lên server và nhận dữ liệu về theo kiểu không đồng bộ.

- Sử dụng Socket

* Download dữ liệu trực tiếp từ URL: đây là cách đơn giản nhất để nhận dữ liệu từ web server. Sử dụng một lớp có phương thức khởi tạo (init) có tên chứa “withContentsOfURL:” Đây là các phương thức đặc biệt sẽ xử lý tất cả các việc để nhận dữ liệu từ Internet. Tất cả những gì phải làm là truyền cho phương thức này một đối tượng NSURL chứa url và nó sẽ tạo và trả về một đối tượng chứa dữ liệu của url. Tuy nhiên, quá trình xử lý theo cách này là đồng bộ hóa, tức là khi hàm “withContentsOfURL” được gọi, chương trình sẽ bị dừng để chờ cho đến khi nó hoàn thành việc download dữ liệu. Với các dữ liệu nhỏ thì đây không phải là vấn đề, nhưng vơi các dữ liệu lớn thì nó sẽ dẫn tới việc người dùng không thể tương tác với ứng dụng cho đến khi dữ liệu được nhận về hết.

* Sử dụng giao thức HTTP: gọi trực tiếp đến các service. Cách này sẽ lấy dữ liệu theo kiểu không đồng bộ, đồng thời bắt được các lỗi xảy ra. Như vậy khắc phục được nhược điểm của việc download trực tiếp từ URL. Tuy nhiên, với giao thức HTTP, mỗi lần người dùng muốn thực hiện một request lên server sẽ phải mất thời gian tạo lại kết nối, làm chậm ứng dụng. Nó cũng không thể khống chế được luồng dữ liệu gửi lên

và trả về như sử dụng kết nối socket. Hơn nữa là tính trong suốt của ứng dụng client với các service cung cấp bởi Socbay Search Engine. Thông thường, những service như vậy thường được giữ trong suốt với tất cả các client để đảm bảo tính bảo mật và có khả năng thay đổi khi cần thiết. Việc gọi trực tiếp đến những server này sẽ không an toàn, và trong trường hợp muốn bảo trì và thay đổi sẽ làm ảnh hưởng đến toàn bộ hệ thống.

* Sử dụng socket: người lập trình có thể điều khiển được việc truyền nhận dữ liệu theo kiểu đồng bộ hay không đồng bộ, đồng thời kiểm soát được luồng dữ liệu gửi lên và trả về. Với cách thức này thì phải xây dựng 2 module client và server. Module client các trách nhiệm tạo thread để xử lý các dữ liệu trả về từ server. Module server có trách nhiệm lắng nghe những gói tin được gửi lên từ client, xử lý, sau đó gọi và lấy thông tin từ service được cung cấp bởi Socbay Search Engine và trả lại cho client.

Một phần của tài liệu Xây dựng ứng dụng tìm kiếm đa phương tiện trên điện thoại iphone (Trang 93 - 94)