2008-11-07 14 views
14

Tôi không quen với WCF, nhưng tôi nghĩ tôi sẽ học trong khi cố gắng tiêu thụ một dịch vụ hiện có.Sử dụng dịch vụ REST từ WCF

Một trong các API REST tôi nghĩ là Twitter API. Tôi nghĩ về việc phát triển một khách hàng WPF sẽ chỉ xuất ra màn hình 5 tweet cuối cùng của một người dùng Twitter nhất định. Tôi đã tự hỏi nếu ai đó có thể vui lòng phác thảo một cách ngắn gọn các bước tôi cần phải thực hiện trong Visual Studio để tiêu thụ các dịch vụ này, bằng cách sử dụng WCF (lớp học, trình thuật sĩ, proxy vv.) Tôi đã biết làm thế nào để chỉ cần gọi cho họ bằng cách sử dụng một trang web yêu cầu và phân tích cú pháp XML trả về - Tôi thực sự muốn xem phần WCF tại nơi làm việc.

Cảm ơn trước để anyoine người giúp đẩy mạnh giáo dục của tôi :)

+0

nếu giáo dục là mục đích, xem xét rằng WCF có thể không khuôn khổ thích hợp nhất để tiêu thụ một REST API. công cụ phù hợp với công việc phù hợp, và bạn có thể đã cầm búa tạ ở đây khi tất cả những gì bạn cần là một tuốc nơ vít ... nếu bạn muốn một gợi ý, hãy đọc câu trả lời của Darrel. –

+1

... và nếu bạn cần thêm ví dụ về cách xác định hợp đồng WCF cho các dịch vụ không phải WCF là một nỗi đau, hãy xem tại đây http://stackoverflow.com/questions/2180676/readasdatacontract-exception-while-reading-namespace/2180811#2180811 –

Trả lời

7

Khám phá Kirk Evans Creating a REST Twitter Client With WCF. Những cải tiến mới nhất cho WCF trong .NET 3.5 SP1 làm cho nhiều giao diện RESTful dễ dàng hơn.

Ngoài ra, hãy xem Twitter WCF 3.5 API Declaration Library từ trang MSDN.

Dưới đây là yet another example - CẢNH BÁO tính đến 2/3/10 liên kết được "borked"

+0

liên kết cuối cùng được borked –

+0

@Steve, chỉ cần chỉnh sửa nó cho tôi lần sau! Đây là một wiki ... – TheSoftwareJedi

+0

tôi không có quyền chỉnh sửa với mức điểm SO hiện tại của mình. –

6

Không có lợi ích cho sử dụng WCF để tiêu thụ một API Http dựa như API Twitter. System.Net.HttpWebRequest là quá đủ. Trong thực tế, tôi nghi ngờ rằng bạn sẽ có một số khó khăn. WCF là dễ dàng hơn nhiều để có được làm việc khi bạn có WCF ở cả hai đầu của dây.

Tuy nhiên, nếu API REST trả về nội dung Atom thì bạn có thể sử dụng lớp System.ServiceModel.Syndication để giúp phân tích phản hồi.

EDIT: Vì tôi đã viết bài đăng này, Microsoft đã phát hành bản xem trước của một thư viện máy khách HTTP mới, thực hiện tốt hơn việc sử dụng các dịch vụ RESTful.
Đây là cách bạn sẽ sử dụng nó để Đăng lên Twitter:

var client = new HttpClient(); 
client.DefaultHeaders.Authorization = Credential.CreateBasic("username","password"); 
var form = new HttpUrlEncodedForm(); 
form.Add("status","Test tweet using Microsoft.Http.HttpClient"); 
var content = HttpContent.Create(form); 
var resp = client.Post("http://www.twitter.com/statuses/update.xml", content); 

Nếu bạn muốn biết thêm chi tiết về thư viện khách hàng này, tôi đang trong quá trình viết một số bài đăng trên blog về nó here.

+3

Và bạn thưa bạn, giành được giải thưởng "sai lầm nhất". Tạo DataContracts để đại diện cho dữ liệu từ xa, và cho phép các serial serial khác nhau xử lý công việc dơ bẩn là một chiến thắng lớn – TheSoftwareJedi

+0

Có các dịch vụ Web với ASMX, WCF, System.ServiceModel.Web và với Nhà máy Phần mềm Dịch vụ Web của P & P và đã dành năm ngoái làm dịch vụ REST, tôi có thể đảm bảo với bạn rằng trải nghiệm của tôi không nhất quán với xác nhận của bạn. –

+1

@ TheSoftwareJedi Tôi thách thức bạn tạo ra một hợp đồng dữ liệu sẽ loại bỏ thành công các phản hồi XML mà bạn nhận được từ API twitter. Nếu bạn đăng giải pháp, tôi sẽ xóa câu trả lời của tôi. –