Tôi có ứng dụng Silverlight Windows Phone 7 để lấy dữ liệu từ API công khai. Tôi thấy mình làm nhiều điều tương tự hơn và hơn nữa:Thiết kế kiến trúc cho ứng dụng WP7 theo hướng dữ liệu
- Trong giao diện người dùng, thiết lập một thanh thông báo tải hoặc tiến bộ nạp ở vị trí của nơi mà nội dung là
- Lấy nội dung, có thể đã trong bộ nhớ, được lưu trong bộ nhớ tệp bị cô lập hoặc yêu cầu yêu cầu HTTP
- Nếu không thể có được nội dung (không có kết nối mạng, v.v.), hiển thị thông báo lỗi
- Nếu nội dung được mua, hiển thị nội dung trong giao diện người dùng
- Giữ nội dung trong bộ nhớ chính cho các truy vấn tiếp theo
Nội dung được hiển thị cho người dùng có thể được lấy trực tiếp từ nguồn dữ liệu, chẳng hạn như ObservableCollection
hoặc có thể là truy vấn trên nguồn dữ liệu.
Tôi muốn yếu tố ra quá trình lặp đi lặp lại điều này vào một khuôn khổ nơi lý tưởng chỉ có nhu cầu sau được xác định:
- Nơi để hiển thị nội dung trong UI
- Các yếu tố giao diện người dùng để hiển thị trong khi tải , trên thất bại, và sự thành công
- URI của yêu cầu HTTP
- Làm thế nào để phân tích phản ứng HTTP vào cấu trúc dữ liệu mà sẽ giữ trong bộ nhớ
- vị trí của thứ e tập tin trong lưu trữ bị cô lập, nếu nó tồn tại
- Làm thế nào để phân tích các nội dung tập tin vào cấu trúc dữ liệu đó sẽ được lưu giữ trong bộ nhớ
Nghe có vẻ như rất nhiều, nhưng hai dây, ba FrameworkElement
s, và hai phương pháp nhỏ hơn chi phí mà tôi hiện có.
Ngoài ra, điều này cần phải làm việc cho tuy nhiên dữ liệu được duy trì trong bộ nhớ và cần phải làm việc cho bộ sưu tập trực tiếp và truy vấn trên các bộ sưu tập đó.
Câu hỏi của tôi là:
có cái gì như thế này đã được thực hiện?
Tôi có nghĩ về chủ đề ở trên về cơ bản là sai theo một cách nào đó không?
Dưới đây là một thiết kế Tôi đang nghĩ đến việc:
Có hai thành phần, một Xem và một mô hình.
Chế độ xem được cung cấp FrameworkElement
giây để tải, lỗi và thành công. Nó cũng được đưa ra một tham chiếu đến Mô hình tương ứng. Chế độ xem là một UserControl
được đặt ở đâu đó trong giao diện người dùng.
Mô hình hóa một lớp được cung cấp URI cho dữ liệu, phương pháp phân tích dữ liệu và tùy chọn tên tệp cũng như cách phân tích cú pháp tệp.Nó có trách nhiệm truy xuất dữ liệu và thông báo cho Chế độ xem bất cứ khi nào thay đổi trạng thái hiện tại (tải/lỗi/thành công). Nếu dữ liệu được tải xuống từ mạng khác với bộ nhớ cache, dữ liệu mạng sẽ được ưu tiên. Khi ứng dụng đóng hoặc được sử dụng, mô hình ghi dữ liệu vào bộ nhớ cache.
Âm thanh đó như thế nào?
Cảm ơn nhận xét sâu sắc. Bạn đề cập đến bộ nhớ đệm được tích hợp sẵn của nền tảng. Đây chính xác là gì? –
Bài đăng này cung cấp cho một ý tưởng tốt những gì mọi người đang đối phó với có http://forums.silverlight.net/forums/p/115871/262895.aspx –