Siteleri takip ederken artık tek tek gezmek yerine rss gibi yenilikler kullanmaya başladık. Eh, hazırladığımız sitelere bunları eklemenin asp.net 3.5 ile çok kolay bir yolu var, Wcf Syndication Service Library! Wcf hakkında neredeyse hiçbir şey bilmenize gerek yok, hatta hiç yok. Zaten Visual Studio size gerekli bütün kodu veriyor, tek yapılması gereken listeye maddeleri eklemek.
Bir örnek vereyim.
1. Visual Studio 2008'de yeni bir proje yaratmak için açılan pencereden WCF - Syndication Service Library'yi seçin, projenize istediğiniz ismi verin ve projenizi yaratın.
2. Aşağıdaki kodu elde etmiş olacaksınız
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Syndication;
using System.ServiceModel.Web;
using System.Text;
namespace SyndicationServiceLibrary1
{
// NOTE: If you change the class name "Feed1" here, you must also update the reference to "Feed1" in App.config.
public class Feed1 : IFeed1
{
public SyndicationFeedFormatter CreateFeed()
{
// Create a new Syndication Feed.
SyndicationFeed feed = new SyndicationFeed("Feed Title", "A WCF Syndication Feed", null);
List<SyndicationItem> items = new List<SyndicationItem>();
// Create a new Syndication Item.
SyndicationItem item = new SyndicationItem("An item", "Item content", null);
items.Add(item);
feed.Items = items;
// Return ATOM or RSS based on query string
// rss -> http://localhost:8731/Design_Time_Addresses/SyndicationServiceLibrary1/Feed1/
// atom -> http://localhost:8731/Design_Time_Addresses/SyndicationServiceLibrary1/Feed1/?format=atom
string query = WebOperationContext.Current.IncomingRequest.UriTemplateMatch.QueryParameters["format"];
SyndicationFeedFormatter formatter = null;
if (query == "atom")
{
formatter = new Atom10FeedFormatter(feed);
}
else
{
formatter = new Rss20FeedFormatter(feed);
}
return formatter;
}
}
}
3. Yukarıdaki kodun bir kısmını aşağıda tekrar veriyorum, tek yapılması gereken onu değiştirmek.
// Create a new Syndication Item.
SyndicationItem item = new SyndicationItem("An item", "Item content", null);
items.Add(item);
Burada misal veritabanından gerekli verileri çekip istediğiniz gibi item(lar) yaratın. null değeri gördüğünüz alana eğer bir link yazarsanız, rss'i takip edenlerin konuyla alakalı içeriğinize ulaşabilmeleri için bir link de yaratılıyor.
Eğer resim eklemek ya da satır atlamak istiyorsanız; "Item Content" kısmına, istediğiniz şeylerle alakalı html kodu yazabilirsiniz. Bu sayede daha iyi bir görüntüde elde edersiniz.
Misal vereyim:
SyndicationItem item = new SyndicationItem("Başlık 1!", "<font face=\"Arial\" Size=\"2\">Deneme<br/><a href="www.tamiyi.com>www.tamiyi.com</a><br/><img src=\"www.site.com/resim.gif\"/> ", "http://www.tamiyi.com");
Bu kadar basit!
Bunu publish ettiğinizde gayet hızlı ve başarılı bir çözüm elde etmiş olursunuz. Artık tek yapmanız gereken link vermek istediğiniz yerlere link vermek.
Bunu da:
Rss için: http://.../SyndicationServiceLibrary1/Feed1/
Atom için: http://.../SyndicationServiceLibrary1/Feed1/?format=atom
Adresleri ile yapabilirsiniz.
Eğer tarayıcıların (browser) sitenizde rss ya da atom gibi bir syndication özelliği olduğunu anlamasını istiyorsanız Hazırlanan rss feed'i tarayıcının otomatik olarak bulması nasıl sağlanır? başlıklı yazımı okumanızı tavsiye ederim.