Danh mục

Phát triển Java 2.0: Khai phá Twitter với Objectify-Appengine, Phần 2

Số trang: 35      Loại file: pdf      Dung lượng: 265.52 KB      Lượt xem: 13      Lượt tải: 0    
tailieu_vip

Phí tải xuống: 5,000 VND Tải xuống file đầy đủ (35 trang) 0
Xem trước 4 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Google App Engine không chỉ mở rộng quy mô các ứng dụng nó có thể giúp bạn xây dựng ứng dụng nhanh bằng cách sử dụng các công cụ mà bạn yêu thích.
Nội dung trích xuất từ tài liệu:
Phát triển Java 2.0: Khai phá Twitter với Objectify-Appengine, Phần 2 Phát triển Java 2.0: Khai phá Twitter với Objectify-Appengine, Phần 2 Bắt đầu tiến nhanh đến các ứng dụng web của GAE với Gaelyk, JSON và Ajax Google App Engine không chỉ mở rộng quy mô các ứng dụng: nó có thể giúp bạn xây dựng ứng dụng nhanh, bằng cách sử dụng các công cụ mà bạn yêu thích. Andrew Glover gói ghém mô hình miền domain dành cho ứng dụng khai phá Twitter của mình, thêm các móc nối tới việc lập chỉ mục và lưu dữ liệu vào một bộ nhớ đệm. Sau đó ông nối nó với cơ chế cấp phép OAuth của Twitter, các hàng đợi của GAE, một chút JSON và Ajax thông qua thư viện JavaScript được nhiều người ưa thích là JQuery. Lập chỉ mục và lưu dữ liệu vào một bộ nhớ đệm với Objectify-Appengine Theo mặc định, tất cả các thuộc tính được định nghĩa trong một đối tượng miền domain (và do đó, cả với API Entity mức thấp của Google) đều được lập chỉ mục. Đúng như trong thế giới quan hệ, lập chỉ mục giúp cho việc tìm kiếm kho dữ liệu bên dưới dễ dàng hơn và nhanh hơn đối với người dùng đầu cuối. Tuy nhiên, việc lập chỉ mục cũng tốn chi phí: khi đối tượng mới được tạo ra — chẳng hạn như một hàng mới, theo thuật ngữ quan hệ hoặc Entity (Thực thể) mới trong Bigtable — bạn phải cập nhật các chỉ mục của mình để tính đến dữ liệu mới thêm vào này. Khi bạn bắt đầu sử dụng GAE để lưu trữ và lấy ra dữ liệu từ đó, việc lập chỉ mục trở thành một mối quan tâm trong thế giới thực (mối quan tâm này cũng giống như với đồng đô la vậy). Khi bạn đăng ký một tài khoản GAE, bạn sẽ tự động nhận được 200 chỉ mục miễn phí; ngoài số này ra thì bạn sẽ phải trả thêm tiền. Giống như vậy, nếu bạn vượt quá 6,50 giờ CPU mỗi ngày, bạn sẽ bắt đầu nhận một khoản nợ của Google. Vì vậy, lập chỉ mục có chọn lọc là việc nên làm. Nếu bạn không cần lập chỉ mục cho một thuộc tính (tức là bạn không có kế hoạch tìm kiếm một đối tượng miền domain theo thuộc tính riêng lẻ đó), thì việc tắt chỉ mục đó là điều hợp lý. Trong Liệt kê 1, tôi cho bạn thấy cách sử dụng chú giải @Unindexed của Objectify để tắt một chỉ mục cụ thể. Tôi đã mở rộng đối tượng Retweet từ Phần 1, bằng cách thêm một số chức năng lập chỉ mục. Bạn có thể thấy những thay đổi này trong gói mã ví dụ mẫu. Trong Liệt kê 1, tôi đã sử dụng chú thích @Unindexed để không lập chỉ mục thuộc tính tên thực của người dùng của đối tượng Retweet, thuộc tính đó được đặt tên là userName chứ không phải screenName. Tôi cũng đã không lập chỉ mục URL hình ảnh của người dùng, một tính năng mới cho phép tôi tạo báo cáo tốt hơn trên giao diện người dùng. Tôi không lập kế hoạch tìm kiếm các đối tượng Retweet theo các thuộc tính này, do đó rõ ràng không cần lập chỉ mục cho chúng. Tất nhiên, tôi có thể loại bỏ chú giải @Unindexed nếu có thứ gì đó thay đổi. Liệt kê 1 cho thấy tôi đã cải tiến các thuộc tính của đối tượng Retweet như thế nào . Liệt kê 1. Đối tượng Retweet được nạp lại public class Retweet @Id private String id; private String screenName; private Date date; private String tweet; private Long influence; private Key owner; private Long tweetId; @Unindexed private String userName; @Unindexed private String userPicture; //... } Hai thuộc tính in đậm ở cuối danh sách —userName và userPicture— là các thuộc tính mới và cả hai đều không được lập chỉ mục. Tôi đã đổi tên userName thành screenName để tích hợp tốt hơn với Twitter. (Trong Twitter, tên người dùng chính là tên chính thức của bạn — Andrew Glover — còn tên hiển thị trên màn hình là tên làm việc của bạn — aglover.) Lưu dữ liệu trong memcache Giống như việc lập chỉ mục, việc lưu dữ liệu vào một bộ nhớ đệm cải thiện trải nghiệm của người dùng đầu cuối: nó loại bỏ yêu cầu truyền dữ liệu khứ hồi đến kho dữ liệu và quay về, do đó giúp cho việc đọc dữ liệu nhanh hơn. Google App Engine sử dụng bộ nhớ đệm trên web (memcache) để lưu dữ liệu và Objectify sử dụng chú thích @Cached để cắm vào nó. Chỉ cần thêm @Cached vào các đối tượng miền của bạn và —hô biến!— dữ liệu (không phải là đối tượng Java™ tương ứng) được lưu trữ trong memcache và có thể được lấy ra khỏi bộ nhớ khi ứng dụng đọc. Tôi đã thêm chú giải @Cached cho cả hai đối tượng miền của tôi —User và Retweet. Liệt kê 2 cho thấy đối tượng User đã được cập nhật và thêm vào vài thuôc tính @Unindexed: Liệt kê 2. Lưu dữ liệu vào một bộ nhớ đệm thật là đơn giản! @Cached public class User { @Id private String name; @Unindexed private String token; @Unindexed private String tokenSecret; //... } Lưu ý rằng các lời gọi query của Objectify vẫn truy cập vào kho dữ liệu; tất cả các cuộc gọi tương tác kho dữ liệu khác, như get, đều sử dụng memcache. Ví dụ, trong đối tượng User trong Liệt kê 2, phương thức findByName sử dụng lời gọi get của Objectify để tải đối tượng miền domain tương ứng. (Xin nhắc lại rằng, name chính là khóa). Nếu đối tượng User đã được tạo ra rồi thì dữ liệu của nó sẽ phải được lưu vào một bộ nhớ đệm, với các lời gọi tiếp theo tới findByName dữ liệu của đối tượng đó được lấy ra từ bộ nhớ đệm chứ không phải từ kho dữ liệu. Hạn ngạch của GAE về các lời gọi memcache cao hơn so với các lời gọi vào datastore (kho lưu trữ), do đó, nó giúp sử dụng memcache hợp lý bất cứ lúc nào. Triển khai vào GAE Tôi đã cập nhật xong các đối tượng miền domain của mình, ít nhất là những gì tôi có thể làm với Objectify. Bước tiếp theo là triển khai các ứng dụng vào GAE. Như tôi đã giải thích ở bài trước, ý định của tôi là xây dựng một ứng dụng web để cho phép những người dùng khai phá các retweet (N.D.: việc chuyển tiếp các mẩu tin nhắn nhận được tới những người khác - sau đây sẽ gọi tắt là chuyển tiếp tin nhắn) của họ, để có thể xem những người nào được chuyển tiếp tin nhắn bởi những người theo dõi (followers) có ảnh hưởng nhất của họ. Ở một mức cao, ứng dụng web, gồm đối tượng User và Retweet, sẽ làm một số việc: Trước tiên, người dùng phải xác thực mình với Twitter thông qua OAuth. Tiếp theo, ứng dụ ...

Tài liệu được xem nhiều:

Gợi ý tài liệu liên quan: