Tytuł postu po angielsku - pod taką nazwą łatwiej znaleźć dodatkowe materiały w sieci, a tłumaczenie jej na polski nie przysłużyłoby mi czytelników :)
O co więc chodzi? Syndication programming model to nic innego jak udostępnianie danych w niezależnym formacie. Model ten jest wykorzystywany szczególnie w przypadku blogów. Na pewno każdy spotkał się z terminem kanału RSS. Udostępnienie kanału RSS w przypadku .NET jest niezwykle proste. Framework oferuje dwie gotowe klasy
Atom10FeedFormatter oraz
Rss20FeedFormatter.
Implementację rozpoczynamy od dodania dwóch atrybutów na interfejs serwisu:
Code:
[ServiceKnownType(typeof(Atom10FeedFormatter))]
[ServiceKnownType(typeof(Rss20FeedFormatter))]
[ServiceContract]
public interface IService1
Do interfejsu dodajemy metodę odpowiedzialną za generowanie zawartości kanału:
Code:
[WebGet(UriTemplate = "personsFeed")]
SyndicationFeedFormatter GetPersonFeed();
Ostatni etap to implementacja metody:
Code:
public SyndicationFeedFormatter GetPersonFeed()
{
var persons = new List<Person>
{
new Person {Id = 1, Name = "Patryk"},
new Person {Id = 2, Name = "Marek"},
new Person {Id = 3, Name = "Sebastian"},
new Person {Id = 4, Name = "Ania"}
};
var feed = new SyndicationFeed(persons.Select(x => new SyndicationItem(x.Id.ToString(), x.Name, null)));
string format = WebOperationContext.Current.IncomingRequest.UriTemplateMatch.QueryParameters["format"];
if (!string.IsNullOrWhiteSpace(format) && format.Equals("atom"))
{
return new Atom10FeedFormatter(feed);
}
return new Rss20FeedFormatter(feed);
}
Serwis możemy podglądnąć w przeglądarce:
Przykładowy wynik jest bardzo prostym zastosowaniem kanału RSS. Więcej o możliwościach i architekturze RSS można poczytać na stronach
msdn.
Brak komentarzy:
Prześlij komentarz