Rss ve Atom syndication için asp.net 3.5 ile çok kolay bir çözüm var

February 20, 2009 at 6:45 PMoozturk

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.

Posted in: ASP.NET | Web Service | Rss | WCF

Tags: , , ,

Müthiş bir imleme sitesi: tamiyi.com!

February 3, 2009 at 2:16 PMoozturk

Merhabalar,

Normalde internette aradığım şeyleri arama motorlarından ararım, bazen de bazı konularda siteleri güncel olarak takip etmek isterim. Bunun için RSS ve Atom gibi imlemelere sahip sitelerin bu özelliklerini kullanırım. Ancak şöyle güzel bir site olsa da bütün bu siteleri bana diğer alternatif sitelerle beraber aynı sayfada sunsa, bütün yenilikleri aynı anda görebilsem dediğim oluyor her zaman. İşte bu fikir Stella D'oriente tarafından www.tamiyi.com adresinde hayata geçirildi bile! Üstelik kendim de site ekleyebiliyorum (elbette ki eklenen içerikler ekip tarafından kontrol ediliyor).

Kendilerini kutluyorum ve bu müthiş fikri hayata geçirdikleri için de kendilerine teşekkür ediyorum.

Posted in: Genel | Rss

Tags: , , , , , , ,

Hazırlanan rss feed'i tarayıcının otomatik olarak bulması nasıl sağlanır?

December 25, 2008 at 1:43 PMoozturk

Bir rss feed hazırladınız ve bunu internet explorer, firefox gibi tarayıcıların otomatik bulmasını istiyorsunuz. Öyleyse yazının devamını okumanızı tavsiye ederim.

1. Öncelikle hazırladığınız rss'i response olarak veriyorsanız mutlaka content type belirtmelisiniz. Eğer rss versiyonu olarak 2.0 ya da üstünü kullanıyorsanız application/rss+xml vermelisiniz. Ancak rss 1.0 gibi eski sürüm kullanıyorsanız, yalnızca application/xml verseniz de olur.

    Response.ContentType = "application/rss+xml";

2. Rss feed'in otomatik bulunmasını istediğiniz sayfaların head kısmına aşağıdaki gibi bir satır eklemelisiniz.

    <link rel="alternate" type="application/rss+xml" title="Giybunu.com - Yeni gelen urunler" href="http://www.gıybunu.com/Rss.aspx?NewArrivals" />

3. Birden fazla feed'iniz varsa bunları da aynı ikinci adımdaki gibi ekleyebilirsiniz.

Title belirtirken; dikkat çekici, iyi düzenlenmiş olmasına dikkat etmeli ve eğer birden fazla feed varsa, en çok dikkat çekeceğini düşündüğünüzü en üstte vermelisiniz. Bu sayede takip eden sayısını arttırabilirsiniz.

Posted in: ASP.NET | Rss

Tags: , , , , , , ,