Tải bản đầy đủ (.docx) (48 trang)

Tìm hiểu facebook API và ứng dụng eStore

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.06 MB, 48 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
------o0o------
Đồ án môn: ĐỒ ÁN CHUYÊN NGHÀNH
Tìm Hiểu Facebook API &
Ứng Dụng eStore
Giảng viên hướng dẫn:
CH. Hầu Nguyễn Thành Nam
CH. Cáp Phạm Đình Thăng
Sinh viên thực hiện:
Võ Quang Thiều 08520597
Ngô Văn Toàn 08520411
TP. Hồ Chí Minh 06/2012.
Đồ Án Chuyên Nghành API và ứng dụng eStore - Facebook
Lời mở đầu.
Ngày nay, công nghệ thông tin có mặt trong hầu hết các lĩnh vực của đời sống
kinh tế xã hội đặc biệt nó là công cụ hỗ trợ đắc lực trong công tác quản lý. Việc đưa tin
học vào trong quản lý kinh doanh là một trong những ứng dụng quan trọng nhất trong
nhiều ứng dụng của cơ sở dữ liệu. Nhờ vào việc tin học hoá mà công việc quản lý và
điều hành doanh nghiệp tỏ ra nhanh chóng và hiệu quả hơn rất nhiều.
Hiện nay, hầu hết các tổ chức, doanh nghiệp đều đã nhận thức được tầm quan
trọng và tác dụng to lớn của việc áp dụng tin học hoá trong công tác quản lý của mình.
Vì vậy mà nhu cầu xây dựng những phần mềm quản lý của các doanh nghiệp rất lớn.
Hầu hết các doanh nghiệp, tổ chức dù lớn hay nhỏ đều đang có xu hướng muốn áp dụng
tin học trong công tác quản lý.
Cùng với sự phát triển to lớn đó, song song với việc phát triển về chiều rộng thì
phát triển về chiều sâu cũng được nhiều nhà phát triển quan tâm. Và một vấn đề đặt ra là
Internet đang ngày càng bùng nổ và tiếp cận gẫn gũi với con người nên làm việc trên
Internet là một nhu cầu bức thiết. Vì thế dần dần các hệ thống phân bố hay các mô hình
phân tán được áp dụng triệt để trong việc phát triển phần mềm và trong các ứng dụng
CNTT nói chung để phục vụ tốt hơn nhu cầu của cá nhân cũng như doanh nghiệp trong


đời sống và kinh doanh.
Sau thời gian làm việc, nhóm cũng đã hoàn thành đề tài quản lý khách sạn cho
môn Xử lý phân bố. Tuy phần mềm cũng còn nhiều điểm hạn chế và sai sót song vẫn
đáp ứng được những yêu cầu đặt ra của đề tài.
Nhóm xin chân thành cảm ơn ThS. Nguyễn Trác Thức (giảng viên bộ môn) đã giúp đỡ
nhóm trong quá trình hoàn thành đề tài.
TP. Hồ Chí Minh, tháng12 năm 2011.
Nhóm Sinh Viên - UIT
Đồ Án Chuyên Nghành API và ứng dụng eStore - Facebook
I. Giới Thiệu Chung
1. Thông tin nhóm thực hiện
1.1. Thông tin cở bản
ST
T
MSSV Họ tên Email Điện thoại
1 08520411 Ngô Văn Toàn
2 08520597 Võ Quang Thiều
1.2. Phân chia công việc:
2. Thông tin chung về đề tài
Đề tài tập trung vào việc tìm hiểu API của facebook và từ đó ứng dụng vào phát
triển trang eStore – trang bán hàng trực tuyến. Ứng dụng được chạy trên nền
Facebook application và phát triển bằng công nghệ ASP.net.
II. Phát Triển Đề Tài
1. Thuyết minh nội dung
1.1. Phát biểu vấn đề
• Làm cách nào để có thể đưa thông tin sản phẩm của mình đến với
cộng đồng một cách nhanh nhất? Đó là câu hỏi mà nhiều doanh nghiệp
đều muốn được giải quyết một cách nhanh nhất.
• Như chúng ta biết Facebook là trang mạng xã hội lớn nhất thế giới
hiện nay. Theo thống kế tính đến năm 2012 có đến… sử dụng

facebook, trong đó Việt Nam có…người sử dụng.
• Vì vậy xây dựng một ứng dụng cho phép người dùng có thể đăng ký
thành viên, quảng cáo và đăng sản phẩm của mình lên đó sẽ được
nhiều người hưởng ứng, nó giúp khách hàng có thể tiếp cần với sản
phẩm nhiều hơn.
• Vấn đề còn lại là công cụ hổ trợ để ta có thể phát triển ứng dụng. Và
Facebook API là thành quả mà nhà phát triển Facebook tạo ra để giúp
nhà phát triển ứng dụng có thể dễ dàng sử dụng và hoàn thành ý tưởng
của mình. Chúng ta cần biết được API là gì và sử dụng nó như thế nào.
1.2. Mục tiêu đề tài
• Giúp ta hiểu được Facebook API là gì? Các phương thức của nó và
cách sử dụng ra sao. Đặc biệt là áp dụng trong ASP.net như thế nào.

• Như đã biết Facebook Connect được tạo ra tháng 5 năm 2008, cho
phép người sử dụng Facebook đăng đăng ký bản sắc Facebook trên bất
Nhóm Sinh Viên - UIT Trang 3/47
Đồ Án Chuyên Nghành API và ứng dụng eStore - Facebook
kỳ trang web nào của họ và cung cấp dữ liệu người dùng cá nhân hóa
thông qua Facebook. Trong năm 2010, với số lượng người sử dụng
Facebook đã đạt đến con số một nửa tỷ và Open Graph đã tiếp thêm
“nhiên liệu” tích hợp dữ liệu, Connect được đà như là một công cụ bán
hàng trên các trang web thương mại điện tử.
• Theo Facebook, 30% người dùng tích cực tham gia với các trang web
bên thứ ba thông qua Facebook Connect mỗi tháng.
• Bên cạnh đó kinh doanh trực tuyến với việc áp dụng CNTT vào chiến
lược lâu dài của doanh nghiệp, thì nhu cầu quảng bá sản phẩm ngày
càng trở lên cấp bách. Việc quảng bá sản phẩm trên các trang web
đang rất được quan tâm và dần trở thành một việc vô cùng quan trọng
quyết định đến sự thành công của công ty doanh nghiệp.
• Theo lối kinh doanh trực tuyến hiện nay, đa số khách hàng chỉ thực sự

biết tới sản phẩm một cách hạn chế và khách hàng ít có sự lựa chọn tối
ưu. Việc quảng bá sản phẩm chỉ thông qua trang web của chính công
ty đó hoặc phần quảng cáo sản phẩm ở các site khác nhau. Sự ra đời
của các trang Web như Amazon.com, Vatgia.com, raovat.com… cũng
đã mang tới một hiệu quả nhất định, tuy vậy mức phí mà người dùng
phải trả để những sản phẩm của mình có mặt trên các site này không
hề nhỏ. Ngày nay với sự bùng nổ mạng xã hội Facebook, thông tin của
doanh nghiệp cũng như người dùng được biết đến và trao đổi vơi nhau
một cách dễ dàng, như vậy yêu cầu đặt ra là tại sao không sử dụng một
ứng dụng (site) được tích hợp sẵn trên Facebook cho phép các doanh
nghiệp(người dùng) có thể đăng ký trở thành thành viên và giao tiếp
với khách hàng một cách nhanh chóng và hiệu quả.
• Khi đó việc đăng nhập sẽ rất dễ dàng: Site sẽ tự động tích hợp cho
phép người dùng đăng ký lấy lại những thông tin ở tài khoản
Facebook, và nhập thêm thông tin cần cho việc quảng bá và đăng sản
phẩm và giao dịch.
1.3. Ý nghĩa thực tiễn
• Ứng dụng triển khai giúp giảm chi phí quảng bá sản phẩm theo cách
thông thường.
• Tăng lợi nhuận cho phía doanh nghiệp, rút ngắn thời gian lựa chọn sản
phẩm cho khách hàng. Tối ưu hóa chức năng hỗ trợ khách hàng.
Nhóm Sinh Viên - UIT Trang 4/47
Đồ Án Chuyên Nghành API và ứng dụng eStore - Facebook
2. Nội dung triển khai
2.1. Tìm hiều Facebook API
2.1.1. Facebook API là gì?
• API - Application Programming Interface – tạm dịch là giao diện
chương trình ứng dụng. API là một phương tiện để giao tiếp giữa các
chương trình, là xu hướng trong thế giới lập trình. Không chỉ chỉ có
Facebook API mà Google, Yahoo, Amazon và các công ty lớn khác

cũng cung cấp các API riêng, với API này bạn có thể tạo ra các ứng
dụng bằng cách sử dụng tính năng hoặc dữ liệu hiện có trên máy chủ
của họ.
• Facebook API là một nền tảng để xây dựng những ứng dụng cho các
thành viên của mạng xã hội Facebook. API cho phép các ứng dụng sử
dụng các kết nối xã hội và các thông tin hồ sơ để làm cho các ứng
dụng liên quan tới nhau nhiều hơn. API cung cấp những lời gọi để lấy
thông tin về người sử dụng, nhóm người dùng, bạn bè, thông báo, sự
kiện và nguồn cấp dữ liệu…Cũng có thể dùng lời gọi API để cập nhật
và lấy thông tin hồ sơ.
• API sử dụng giao thức RESTful và các hồi đáp được trả lại dưới dạng
XML.
2.1.2. Cách thức làm việc Facebook API
• API là nền tảng do Facebook cung cấp cho người viết ứng dụng để dễ
dàng trong việc tạo ứng dụng và đảm bảo người viết ứng dụng không
can thiệp quá sâu vào hệ thống của Facebook. API cho phép thực thi
nền tảng thông qua các phương thức được định nghĩa. Thông qua các
lời gọi API, người tạo ứng dụng có thể lấy thông tin về user, groups,
photo,… mà họ cần.
• Facebook gửi phương thức POST tới máy chủ Facebook API. Nó bao
gồm một số các thông số yêu cầu như api_key của ứng dụng.
Session_key của người dùng đưa ra yêu cầu. Bên cạnh đó Facebook
còn thêm vào tham số fb_sig để thông báo ứng dụng đưa ra yêu cầu.
Bằng cách này tất cả các lời gọi API sẽ được đảm bảo, Facebook có
thể xác minh các yêu cầu được gửi từ một ứng dụng đã được chấp
thuận. Thông tin mà Facebook sẽ trả lại là một tài liệu XML.
2.1.3. Một số phương thức Facebook API
Nhóm Sinh Viên - UIT Trang 5/47
Đồ Án Chuyên Nghành API và ứng dụng eStore - Facebook
• User: Facebook API cung cấp một số phương thức cho phép nhà phát

triển ứng dụng truy cập vào một số thông tin người dùng:
o Getinfo(): lấy thông tin của người dùng, như name (họ tên),
first_name, last_name, id, email… Ví dụ lấy họ tên người dùng
ta dùng: API.user.getinfo().name sẽ trả về họ tên user. Một số
thông tin cần được cho phép của người dùng thì mới có thể lấy
được, ví dụ email, address, phone…
o GetLoggedInUser(): trả về uid của người hiện tại đang đăng
nhập ứng dụng.
o GetStandardInfo(): lấy thông tin cơ bản của người dùng như
name, first_name, last_name…
• Friends: Khi phát triển ứng dụng, việc hiển thị danh sách bạn bè của
người dùng là rất phổ biến. Để giải quyết vấn đề này API có các hàm
giúp người viết ứng dụng lấy thông tin về bạn bè của người dùng.
o areFriend(): kiểm tra xem 2 user của phải là bạn của nhau hay
không. Ở đây truyền vào 2 đối số là 2 uid hoặc 2 user hoặc 2
danh sách (list) user, uid. Kiểu trả về là dạng boolean. Ví dụ:
bool result = API.friends.areFriend(123123,3990023);
o get(): trả lại danh sách uid của người dùng là bạn của người
dùng hiện tại.
o getAppUsers(): lấy danh sách uid của người dùng đang sử dụng
ứng dụng của bạn.
o getAppUsersObjects(): trả về danh sách các user đang sử dụng
ứng dụng.
o getLists(): trả về freindslisst của người dùng hiện tại.
• Groups: Làm việc với nhóm cũng là một phần rất quan trọng của ứng
dụng. API đã cung cấp các phương thức:
o Get():Trả về các nhóm theo tiêu chí lọc như nhóm có liên kết
với một người dùng , theo một danh sách gids hoặc theo cả 2
tiêu chí lọc trên.
o getMember():Mô tả: Trả về danh sách thành viên của một

nhóm. Kết quả trả về là một mảng đa chiều với chiều đầu tiên
là kiểu thành viên (admin, member, officer, not_replied).
• Notifications: Facebook cho phép gửi và nhận các thông báo trong
ứng dụng với các hàm API. Có 2 hàm chính:
Nhóm Sinh Viên - UIT Trang 6/47
Đồ Án Chuyên Nghành API và ứng dụng eStore - Facebook
o Get():Trả về một mảng đa chiều với các đối tượng là các loại
thông báo: tin nhắn, giới thiệu nhóm, giới thiệu sự kiện, yêu
cầu kết bạn, chia sẻ, poke).
o getList(): Trả về tất cả thông tin của người dùng hiện tại.
• Photos: Với hơn 60 triệu bức ảnh được thêm vào mỗi tuần bởi người
dùng Facebook, các nhà phát triển Facebook đã cung cấp một nhóm
phương thức API để giúp các nhà phát triển ứng dụng dễ dàng thao tác
với các ảnh của người dùng.
o addTag(): Thêm một thẻ đi kèm thông tin cho một bức ảnh. Thẻ
chỉ có thể thêm vào những bức ảnh đang chờ giải quyết thuộc
sở hữu của người dùng cụ thể hoặc người dùng hiện hành. Ứng
dụng với quyền mở rộng photo_upload có thể thêm thẻ vào bất
kì bức ảnh nào thuộc quyền sở hữu của người dùng.
o createAlbums():Tạo và trả về một album mới thuộc quyền sở
hữu của một người dùng cụ thể hoặc người dùng hiện hành.
o Get(): Trả về tất cả các ảnh theo tiêu chí lọc. Có thể lọc theo 4
cách: được đánh dấu theo chủ đề đã quy định, có chứa trong
album được định rõ bởi aid, bao gồm tập các ảnh được định rõ
bởi pid hoặc cả 3 tiêu chí trên.
o
getAlbum(): Trả về siêu dữ liệu về tất cả các album ảnh được
tải lên bởi người dùng cụ thể. Phương thức này trả về thông tin
của tất cả các album dựa theo tiêu chí lọc. Nó có thể được sử
dụng để trả lại tất cả các album ảnh được tạo ra bởi người

dùng, truy vấn một danh sách các album thông qua aids hoặc
lọc theo cả 2 tiêu chí trên.
o getTags(): Trả về danh sách người dùng được đánh dấu của các
hình ảnh cụ thể.
o upload(): upload một ảnh thuộc sở hữu của người dùng cụ thể
hoặc người dùng hiện hành và trả về là một ảnh mới. Các loại
ảnh hỗ trợ như: gif, jpg, png, psd, tiff, jp2, iff, wbmp, xbm.
• Profile: Để dễ dàng tương tác với các thiết lập thông tin trong trang
hồ sơ của người dùng, nhóm hàm này đã cung cấp 2 phương thức:
Nhóm Sinh Viên - UIT Trang 7/47
Đồ Án Chuyên Nghành API và ứng dụng eStore - Facebook
o setFBML(): Thiết lập FBML cho hồ sơ của người dùng hoặc
trang Facebook , bao gồm: nội dung của hộp thông tin trên
nhãn Wall, hộp thông tin cho nhãn Boxes.
o getFBML(): Trả lại FBML của hộp thông tin hiện đang thiết
lập cho cấu hình của người dùng.

Stream: Để thực hiện các thao tác cập nhật thông tin như đăng bài,
bình luận,... tuy nhiên phải tuân theo quyền được phép thực hiện các
thao tác từ phía người khác. Nó gồm các phương thức cơ bản như:
o
addComment(): cho phép thêm bình luận vào bài đã được đăng
trên tường của người nào đó. Trong đó có các tham số như:
post_id: là id bài viết mà bạn đang bình luận, comment: là nội
dung bình luận, uid: là id của người sử dụng để đăng bài.
o
addLike(): dùng để like một bài viết nào đó, và đối số truyền
vào chính là id của bài viết đó – post_id.
o
getComments(): lấy danh sách các comment trong một bài bình

luận, tham số truyền vào chính là post_id – id bài cần lấy thông
tin comment.
o
Publish(): cho phép đăng lên tường ai đó, nội dung đăng có thể
là đoạn text hoặc kèm theo hình ảnh hay link,…
o Remove(): xóa bài đăng nào đó, thông số truyền vào là post_id
là id của bài cần xóa, có thể kèm theo uid để xác định xóa bài
của người nào.
o removeComment(): là xóa bình luận của người dùng nào đó
trong một bài bình luân, thông số truyền vào là comment_id là
id của lời bình luận cần xóa.
o removeLike(): tương tự như trên, removeLike() dùng để unlike
bài viết nào đó mà trước đó đã like.
2.1.4. API với FQL:
Nhóm Sinh Viên - UIT Trang 8/47
Đồ Án Chuyên Nghành API và ứng dụng eStore - Facebook
• FQL: là viết tắt của Facebook Query Language tạm dịch là ngôn ngữ
truy vấn.
o Ngôn ngữ truy vấn của Facebook (FQL) là một ngôn ngữ dựa
trên ngôn ngữ SQL, được các nhà phát triển Facebook tạo ra để
giúp người viết ứng dụng truy xuất tới các bảng trong cơ sở dữ
liệu bao gồm các bảng : user, friend, group, group_member,
event, event_member, photo, album, and photo_tag…
o Các đối tượng FQL được chấp nhận để gọi một câu truy vấn
FQL thông qua Graph API. FQL cung cấp một số tính năng
nâng cao không có sẵn trong Graph API, bao gồm xử lý nhiều
câu truy vấn trong 1 lời gọi hàm duy nhất.
• Cấu trúc câu truy vấn:
o Do FQL dựa trên nền tảng là ngôn ngữ SQL chính vì vậy cấu
trúc của FQL cũng tương tự như cấu trúc của SQL:

SELECT [ trường ] FROM [ bảng ] WHERE [ điều_kiện]
o Trong FQL, các mệnh đề trong SQL như ORDER BY, LIMIT
cũng được hỗ trợ:
SELECT [ trường ] FROM [ bảng ] WHERE [ điều_kiện]
ORDER BY[ trường] LIMIT [vị trí bắt đầu], [vị trí kết thúc]
o Tuy dựa trên nền tảng của SQL nhưng FQL cũng có những
điểm khác biệt. Đầu tiên là phải kể đến mệnh đề FROM. Nếu
như trong SQL sau from có thể là một hoặc nhiều bảng để truy
xuất dữ liệu nhưng trong FQL sau from chỉ có duy nhất một
bảng. Như vậy trong FQL không hỗ trợ các kiểu join. Để có thể
lấy dữ liệu từ nhiều bảng, cách phổ biến nhất là sử dụng các
câu truy vấn con. Ví dụ nếu muốn lấy danh sách những người
bạn của người dùng đang sử dụng ứng dụng câu truy vấn FQL
có thể là:
SELECT uid FROM user WHERE has_added_app = 1 AND
uid IN (SELECT uid2 FROM friend WHERE uid1=$user)
trong đó $user là uid của người dùng hiện tại.
o Thứ hai, để các ứng dụng truy xuất cơ sở dữ liệu một cách trực
tiếp, tất cả các truy vấn phải được đánh chỉ số, tránh cho việc
có quá nhiều câu truy vấn gửi tới server. Facebook chỉ cho phép
người tạo ứng dụng truy xuất trên 45 bảng dữ.
Nhóm Sinh Viên - UIT Trang 9/47
Đồ Án Chuyên Nghành API và ứng dụng eStore - Facebook
o Thứ ba, trong mệnh đề where, ít nhất phải có một trường được
đánh chỉ số. Ví dụ nếu muốn tìm tất cả những người dùng đang
chia sẻ ngày sinh nhật của người dùng hiện tại:
SELECT uid FROM user WHERE strpos(birthday, “September
27”) = 0
AND uid IN (SELECT uid2 FROM friend WHERE uid1 =
$user)

o Tiếp theo, để giảm một lượng lớn dữ liệu trao đổi, FQL không
hỗ trợ SELECT *. Cuối cùng, mệnh đề ORDER BY chỉ hỗ trợ
một trường đơn duy nhất, không hỗ trợ nhiều trường như trong
SQL.
• Phương thức sử dụng chính:
o API.fql.query(): sử dụng để gọi câu truy vấn.
o Tham số truyền vào chính là chuỗi truy vấn và giá trị trả về
cũng dạng chuỗi.
o Ví dụ lấy tên của người dùng facebook ta có thể thực hiện như
sau: string _name = API.fql.query(“SELECT name FROM user
WHERE uid = 1814236399”); như vậy là ta có thể lấy được tên
đầy đủ của user có id là 1814236399.
2.2. Ứng dụng eStore – Facebook application
• Để viết ứng dụng Facebook:
o Bạn cần một số kiến thức về các ngôn ngữ lập trình web: phổ
biến nhất là PHP - được đông đảo cộng đồng mạng và nhà phát
triển ứng dụng facebook hổ trợ - ngoài ra cũng có thể sử dụng
VB, ASP.net, …
o Cần biết một số máy chủ (web server) cho phép bạn có thể đặt
ứng dụng Facebook lên đó. Thông qua kiến trúc hệ thống ứng
dụng facebook (sẽ nói mục 3) thì ta sẽ hiểu tạo sao cần có một
server để đặt ứng dụng của bạn.
• Ứng dụng eStore là một ứng dụng dùng để tạo ra trang cho phép
chúng ta có thể rao bán sản phẩm của mình và thông tin rộng rãi đến
bạn bè của mình nhờ vào cộng đồng mạng facebook.
o Ứng dụng sử dụng công nghệ chính là ASP.Net và API của
facebook.
o Ứng dụng đáp ứng được đầy đủ các nghiệp vụ của một trang
web bán hàng đơn giản: đăng sản phẩm, tạo order, xem bình
luận sản phẩm, …

Nhóm Sinh Viên - UIT Trang 10/47
Đồ Án Chuyên Nghành API và ứng dụng eStore - Facebook
o Các bước xây dựng ứng dụng:
 Tạo một ứng dụng trên facebook để lấy appKey và
SecretId: 2 khóa quan trọng để nhận định ứng dụng của
mình.
 Tạo project asp.net để phát triển ứng dụng.
 Đưa ứng dụng lên hosting và config lại thông tin để ứng
dụng hoạt động.
(Chi tiết về phát triển ứng dụng eStore sẽ được nói ở phần sau.)
3. Kiến trúc hệ thống
3.1. Kiến trúc của Facebook:
3.1.1. Mô hình ứng dụng Web thông thường.
• Ứng dụng và cơ sở dữ liệu được đặt trên một máy chủ Web. Ứng dụng
sẽ chạy trên server và người dùng thực thi ứng dụng bằng cách sử
dụng giao thức HTTP thông qua trình duyệt. Mô hình này sẽ làm việc
hiệu quả nếu như server và client có 1 kết nối Internet ổn định.
3.1.2. Mô hình ứng dụng web Facebook
• Kiến trúc Facebook App - Canvas
Nhóm Sinh Viên - UIT Trang 11/47
Đồ Án Chuyên Nghành API và ứng dụng eStore - Facebook
• Người dùng truy cập Facebook.com và ứng dụng thông qua trình
duyệt và Internet. Tuy nhiên ứng dụng không được đặt tại máy chủ
của Facebook mà được lưu trên máy chủ của chính người tạo ra ứng
dụng đó. Facebook Platform cũng cung cấp một giao diện cho người
viết ứng dụng.
• Với một máy chủ web bình thường trung bình chỉ chịu được từ 100 tới
500 truy vấn cùng một lúc. Tuy nhiên với Facebook trung bình mỗi
giây phải hiện 600 nghìn hình ảnh cùng một lúc. Vấn đề đặt ra ở
đây là làm thế nào để mỗi giây Facebook hiện được 600 ngàn hình

ảnh ? Để giải quyết vấn đề này Facebook đã sử dụng vùng lưu trữ
đệm (cache) và đây cũng chính là trái tim của hệ thống.
Nhóm Sinh Viên - UIT Trang 12/47
Đồ Án Chuyên Nghành API và ứng dụng eStore - Facebook
• Facebook đã phát triển Haystack – một hệ thống quản lý các tập tin
hình ảnh trung gian để cải tiến sự truy vấn. Trước đây, Facebook đã sử
dụng hệ thống 2 tầng : một tầng chuyên cho việc upload hình ảnh và
lưu trữ vào server. Tầng kia có nhiệm vụ tìm và lấy hình ảnh từ server
để trả lời các truy vấn. Tuy vậy việc xử lý theo cách cổ điển này là
không phù hợp với nhu cầu tăng rất nhanh số lượng người dùng của
Facebook dẫn tới tình trạng nghẽn mạch Input / Output. Haystack sẽ
quản lý và lưu trữ các hình ảnh trong vùng đệm và từ đây sẽ trả lời các
truy vấn hìn ảnh. Bên cạnh đó Facebook còn cải tiến các đoạn code
trên webserver để giảm thiểu kích thước tập tin và thời gian tính toán.
Ngôn ngữ lập trình cho từng bộ phận cũng dần được tối ưu hóa. Người
truy cập sẽ được phân luồng ngẫu nhiên vào các ngân hàng dữ liệu để
giảm tải và các truy vấn của họ sẽ được hệ thống cache trả lời nhanh
chóng.
3.1.3. Cách thức làm việc
Nhóm Sinh Viên - UIT Trang 13/47
Đồ Án Chuyên Nghành API và ứng dụng eStore - Facebook
• Trình duyệt người dùng yêu cầu :
Địa chỉ này trỏ tới một cụm máy chủ trong trung tâm dữ liệu của
Facebook. Những server này sẽ phân tích các yêu cầu , xác định các
ứng dụng tương ứng, sau đó tìm kiếm Url callback mà nhà phát triển
ứng dụng cung cấp và thực hiện gọi tới Url đó.
• Máy chủ của Facebook sẽ gửi yêu cầu tới máy chủ của người tạo ứng
dụng. Yêu cầu này người dùng hoàn toàn không biết.
• Server chứa ứng dụng tạo một lời gọi API tới server của Facebook
bằng cách sử dụng FQL thông qua phương thức fql.query() của API

hoặc trực tiếp bằng các hàm API.
• Máy chủ chứa ứng dụng sẽ trả về FBML tới máy chủ của Facebook.
Kết quả đạt được cuối cùng là 1 tài liệu FBML. Tài liệu này sẽ được
gửi trả lại server của Facebook để thực thi.
• Tài liệu FBML sẽ được chuyển sang dạng HTML và phục vụ cho
người sử dụng. Đây là bước cuối cùng trong quá trình thực thi và trả
về kết quả cho trình duyệt.
3.2. Kiến trúc của ứng dụng eStore
3.2.1. Kiến trúc hệ thống.
Hệ thống website eStore được chia thành 3 thành phần chính, sự tương
tác giữa các thành phần được mô tả hình dưới đây:
Nhóm Sinh Viên - UIT Trang 14/47
Đồ Án Chuyên Nghành API và ứng dụng eStore - Facebook
Thành phần Diễn giải
Gói 2: Data & Business
Gói này chịu trách nhiệm lưu trữ và truy xuất dữ
liệu: Info Class.
Đảm nhận thực hiện các nhiệm vụ chính của hệ
thống: Service Class.
Gói 3: Helper Class
Là gói dùng chung cho cho hệ thống. Chứa các
hàm xử lý được viết chung như: ControlClass,
MegBox, SendMail, …
Gói 1: eStore
Gói này làm nhiệm vụ giao tiếp với người dùng
cuối để thu thập dữ liệu và hiển thị kết quả thông
qua các thành phần trong giao diện người sử
dụng: Các trang aspx, html, …
3.2.2. Mô tả chi tiết từng thành phần của hệ thống eStore.
3.2.2.1. Gói 1 : eStore.

Gói này làm nhiệm vụ giao tiếp với người dùng cuối để thu thập
dữ liệu và hiển thị kết quả thông qua các thành phần trong giao
diện người sử dụng.
Là các trang .aspx, .html, …
3.2.2.2. Gói 2 : Data & Business
Gói này được tích hợp chung trong lớp Service.
Nhóm Sinh Viên - UIT Trang 15/47
Đồ Án Chuyên Nghành API và ứng dụng eStore - Facebook
Gói này thực hiện các nhiệm vụ liên quan đến lưu trữ và truy xuất
dữ liệu của ứng dụng và thực hiện các nhiệm vụ của hệ thống, chi
tiết lớp như sau.
Lớp Info:
Nhóm Sinh Viên - UIT Trang 16/47
Đồ Án Chuyên Nghành API và ứng dụng eStore - Facebook
Lớp này gồm các lớp đối tượng.
Lớp đối tượng Diễn giải
EbookInfo Định nghĩa các trường CSDL ứng với bảng Ebook.
UserInfo Định nghĩa các trường CSDL ứng với User.
GroupUserInfo Định nghĩa các trường CSDL ứng với bảng GroupUser.
AuthorInfo Định nghĩa các trường CSDL ứng với bảng Author
CategoryInfo Định nghĩa các trường CSDL ứng với bảng Category
ContactInfo Định nghĩa các trường CSDL ứng với bảng Contact
PublisherInfo Định nghĩa các trường CSDL ứng với bảng Publisher
OrderInfo Định nghĩa các trường CSDL ứng với bảng Order
OrderDetailInfo Định nghĩa các trường CSDL ứng với bảng OrderDetail
Lớp Business:
Lớp này gồm các lớp đối tượng.
Lớp đối tượng Diễn giải
EbookService Thao tác với CSDL ứng với bảng Ebook.
UserService Thao tác với CSDL ứng với User.

GroupUserService Thao tác với CSDL ứng với bảng GroupUser.
AuthorService Thao tác với CSDL ứng với bảng Author
CategoryService Thao tác với CSDL ứng với bảng Category
ContactService Thao tác với CSDL ứng với bảng Contact
PublisherService Thao tác với CSDL ứng với bảng Publisher
Nhóm Sinh Viên - UIT Trang 17/47
Đồ Án Chuyên Nghành API và ứng dụng eStore - Facebook
OrderService Thao tác với CSDL ứng với bảng Order
OrderDetailService Thao tác với CSDL ứng với bảng OrderDetail
3.2.2.3. Gói 3: Lớp Common
Lớp đối tượng Diễn giải
ControlClass Reset các control về dạng mặt định lúc đầu.
DateTimeClass Định dạng này tháng theo chuẩn của chúng ta.
WebMsgBox Thông báo một tin nhắn.
SendMail Giúp hệ thống tự động gởi mail khi người dùng đăng ký.
FuntionClass Một số hàm phổ biến thường dùng: FormatPrice,
encryptData….
UrlRewrite Trả về chuỗi không dấu gắn vào đường dẫn.
4. Chức năng hệ thống
4.1. Yêu cầu chức năng nghiệp vụ.
STT Công việc Loại Công
Việc
Quy định liên quan Ý nghĩa/ghi chú
1 Lưu danh mục loại sản
phẩm
Lưu trữ qdLuuLoaiSP
Thêm, sửa,
xóa
2 Lưu thông tin sản phẩm đã Lưu trữ qdLuuSP Thêm, sửa,
xóa

Nhóm Sinh Viên - UIT Trang 18/47
Đồ Án Chuyên Nghành API và ứng dụng eStore - Facebook
Upload
3 Lưu danh mục nhóm người
dùng
Lưu trữ qdLuuNhomNguoiDung Thêm, sửa,
xóa
4 Lưu thông tin người dùng Lưu trữ qdLuuTTNguoiDung Thêm, sửa,
xóa
5 Lưu thông tin nhà sản xuất Lưu trữ qdLuuNSX Thêm, sửa,
xóa
6 Lưu thông tin đơn đặt
hàng
Lưu trữ qdLuuDDH Thêm, sửa,
xóa
7 Lưu chi tiết đơn đặt hàng Lưu trữ qdLuuCTHD Thêm, sửa,
xóa
8 Thay đổi, phục hồi mật
khẩu người dùng.
Lưu trữ qdMatKhau Thêm, sửa,
xóa
9 Hiển thị menu loại sản
phẩm
Kết xuất qdHTLoaiSP Thêm, sửa,
xóa
10 Hiển thị thông tin tổng
quan nhiều sản phẩm
Kết xuất qdHienThiTQSP
11 Hiển thị thông tin chi tiết
sản phẩm

Kết xuất qdHienThiCTSP
12 Hiển thị những sản phẩm
mới nhất
Kết xuất
qdHienThiSPMoi
13 Hiển thị thông tin chi tiết
nhóm người dùng.
Kết xuất qdHTCTNguoiDung
14 Hiển thị thông tin các hóa
đơn đặt hàng.
Kết xuất qdHTHoaDon
15
Hiển thị thông tin chi tiết
từng hóa đơn đặt hàng.
Kết xuất qdHTCTHD
16 Tìm kiếm sản phẩm Tra cứu qdTimSP
17 Lọc danh sách người dùng
theo nhóm.
Tra cứu qdLocDSNguoiDung
18 Hiển thị danh sách người
dùng.
Kết xuất qdDSNgDung
19 Tính năng giỏ hàng. Lưu trữ qdGioHang
20 Hiển thị thông tin giỏ hàng
cho khách hàng.
Kết xuất qdHienThiGioHang
21 Tính năng thành tiền
những sản phẩm khách
hàng chọn mua
Tính toán

qdTinhThanhTien
22 Hiển thị bình luận của
người tham gia ứng dụng
trên sản phẩm
Kết xuất
qdHienThiBinhLuan
Nhóm Sinh Viên - UIT Trang 19/47

×