Sử dụng OData từ Windows Phone 7

Những trải nghiệm ban đầu của tôi với sự phát triển của Windows Phone 7 là một túi hỗn hợp. Một trong những điều mà tôi thấy là một sự thất vọng lớn là những hạn chế đối với các API và thư viện có sẵn cho nhà phát triển. Điều đó nói rằng, tôi thích phát triển Windows Phone 7 vì nó cho phép tôi sử dụng các kỹ năng .NET và C # hiện có của mình và giữ tôi trong môi trường Visual Studio 2010 rất thoải mái với tôi trong nhiều năm qua. Vì vậy, mặc dù ban đầu tôi có kinh nghiệm kém khi bắt đầu với Windows Phone 7, tôi sẵn sàng chịu thêm một vài cú đâm vào nó.

Một trong những ứng dụng tôi muốn làm là một ứng dụng đơn giản để hiển thị tỷ lệ tội phạm địa phương. Chính phủ có dữ liệu này trên Data.gov, nhưng nó chỉ có sẵn dưới dạng trích xuất dữ liệu và tôi thực sự không cảm thấy muốn xây dựng một dịch vụ Web xung quanh một tập dữ liệu, vì vậy tôi đã từ bỏ ý tưởng này. Nhưng sau đó tôi phát hiện ra rằng dự án "Dallas" cuối cùng đã được kết thúc và Azure Marketplace DataMarket đã hoạt động. Thật không may, hiện tại chỉ có một số lượng nhỏ các bộ dữ liệu có sẵn trên đó, nhưng một trong số chúng chỉ là bộ dữ liệu tôi muốn và nó có sẵn miễn phí. Nói về may mắn! Tôi đã nhanh chóng tạo một ứng dụng Windows Phone 7 mới và cố gắng thêm tham chiếu, chỉ bị dừng trong các bản nhạc của tôi với lỗi này: "Dịch vụ này không thể được sử dụng bởi dự án hiện tại. Vui lòng kiểm tra xem khung mục tiêu dự án có hỗ trợ loại dịch vụ này không . "

Hóa ra, Windows Phone 7 đã ra mắt mà không có khả năng truy cập Dịch vụ dữ liệu WCF. Tôi không chắc ai đã đưa ra quyết định này, vì Windows Phone 7 rất phù hợp với Azure Marketplace DataMarket, nó phụ thuộc khá nhiều vào các dịch vụ Web để làm bất cứ điều gì hữu ích và Microsoft đang cố gắng đẩy mạnh Dịch vụ dữ liệu WCF. Nghiên cứu ban đầu của tôi chỉ tìm thấy một CTP từ tháng 3 năm 2010 để cung cấp thông tin này. Tôi đã hỏi xung quanh và phát hiện ra rằng mã để làm điều này đã được công bố tại PDC gần đây và có sẵn miễn phí trên CodePlex.

Một điều cần lưu ý là các ứng dụng Windows Phone 7 phải phản hồi nhanh khi thực hiện xử lý và phải hỗ trợ hủy các quá trình "chạy dài". Theo kinh nghiệm của tôi với quy trình chứng nhận ứng dụng, tôi đã từ chối một ứng dụng vì không hỗ trợ hủy mặc dù sẽ mất tối đa ba giây để xử lý. Vì vậy, bây giờ tôi rất thận trọng về việc đảm bảo rằng các ứng dụng của tôi hỗ trợ hủy bỏ.

Sử dụng thư viện Giao thức dữ liệu mở (OData) rất nhanh chóng. Đây là những gì tôi đã làm để có thể sử dụng dịch vụ OData từ ứng dụng Windows Phone 7 của mình:

  1. Tải xuống tệp ODataClient_BinariesAndCodeGenToolForWinPhone.zip.
  2. Giải nén nó.
  3. Trong Windows Explorer, đi đến trang Thuộc tính cho từng DLL và nhấp vào nút Bỏ chặn.
  4. Trong ứng dụng Windows Phone 7 của tôi trong Visual Studio 2010, hãy thêm một tham chiếu đến tệp System.Data.Service.Client.dll mà tôi đã giải nén.
  5. Mở một dấu nhắc lệnh và điều hướng đến thư mục của các tệp được giải nén.
  6. Chạy lệnh: DavaSvcUtil.exe / uri: UrlToService / out: PathToCSharpFile (trong trường hợp của tôi, tôi đã sử dụng https://api.datamarket.azure.com/Data.ashx/data.gov/Crimes cho URL và . \ DataGovCrime .cs cho tập tin đầu ra của tôi). Điều này tạo ra một lớp proxy được gõ mạnh vào dịch vụ dữ liệu.
  7. Tôi đã sao chép tệp này vào thư mục của giải pháp Visual Studio và sau đó thêm nó vào giải pháp.
  8. Tôi đã tạo mã của mình xung quanh việc hủy bỏ và thực thi. Bởi vì tôi không làm bất cứ điều gì phức tạp khủng khiếp và vì thành phần OData đã hỗ trợ xử lý không đồng bộ, tôi đã thực hiện một cách tiếp cận hack backlink để đơn giản. Tôi chỉ có booleans chỉ trạng thái "Đang chạy" và "Đã hủy". Nếu xử lý sự kiện để hoàn thành yêu cầu dịch vụ thấy rằng yêu cầu bị hủy, thì nó không làm gì cả.

Có một vấn đề lớn: Thư viện khách OData không hỗ trợ xác thực, ít nhất là không ở mức dễ truy cập. May mắn thay, có một số cách giải quyết.

  • Tùy chọn đầu tiên là những gì được khuyến nghị tại PDC: xây dựng URL để truy vấn dữ liệu theo cách thủ công và sử dụng đối tượng WebClient để tải xuống dữ liệu XML và sau đó phân tích cú pháp bằng tay (ví dụ sử dụng LINQ sang XML). Điều này mang lại cho bạn quyền kiểm soát cuối cùng và cho phép bạn thực hiện bất kỳ loại xác thực nào bạn muốn. Tuy nhiên, mặc dù, bạn đang từ bỏ những thứ như các lớp proxy được gõ mạnh, trừ khi bạn cảm thấy muốn tự viết mã cho điều đó (vui chơi).
  • Cách thay thế thứ hai, được đề xuất bởi người dùng sumantbhardvaj trong cuộc thảo luận cho Thư viện khách OData, là nối vào sự kiện SendingRequest và thêm xác thực. Bạn có thể tìm thấy mã mẫu của anh ấy trên trang CodePlex. Cá nhân tôi đã không thử điều này, vì vậy tôi không thể xác nhận kết quả, nhưng có vẻ như đó là một cách tiếp cận rất hợp lý với tôi.
  • Một cách khác đã được đề xuất với tôi là sử dụng thư viện Võng thay thế.

Đối với các bộ dữ liệu đơn giản, phương pháp WebClient có lẽ là cách dễ nhất để hoàn thành nhanh chóng và không phải học bất cứ điều gì mới.

Mặc dù thật không may là trải nghiệm vượt trội khi làm việc với OData không phải là điều nên làm, nhưng có đủ các tùy chọn ngoài kia mà bạn không cần phải bị lạnh.

Tìm hiểu thêm về Windows Phone 7 trên TechRepublic

  • Dự án phát triển ứng dụng Windows Phone 7 đầu tiên của tôi
  • Trải nghiệm Windows Phone 7 App Hub
  • Tối ưu hóa truy cập dữ liệu cho các ứng dụng điện thoại di động
  • Windows Phone 7 qua mắt nhà phát triển
  • Samsung Focus, một cỗ máy Windows Phone 7
  • Trang tập trung Windows Phone 7 của TechRepublic

J.Ja

Tiết lộ về các chi nhánh trong ngành của Justin: Justin James có hợp đồng với Spiceworks để viết hướng dẫn mua sản phẩm; ông có hợp đồng với OpenAmplify, thuộc sở hữu của Hapax, để viết một loạt blog, hướng dẫn và bài viết; và anh ta có hợp đồng với OutSystems để viết bài, mã mẫu, v.v.

© Copyright 2020 | mobilegn.com