ამჟამად განხილვის თემად მსურს წარმოვადგინო Web 2.0 - ის ერთ ერთი განუყრელი კომპონენტი RSS.
როგორ გავაკეთოთ ისე, რომ ჩვენს ვებ გვერდს ჰქონდეს RSS - ის მხარდაჭერა. ანუ როგორ გავხდეთ RSS პროვაიდერები. პირველ რიგში უნდა გქვონდეს საამისო კონტენტი, რაზეც ნამდვილად ღირს Subscribe - ი შემდეგ კი Rss Reader - ს უნდა მივაწოდოთ სწორი xml. რა არის საჭირო?

მაშ ასე, დავიწყეთ. პირველ რიგში ვქმნით ე.წ. WebHandler ფაილს რომელსაც არ მოჰყვება ზედმეტი HTML და პირდაპირ მიიღებს იმ სახეს რასაც მივუთითებთ ContentType - ში.





შეიქმნა კლასი რომელიც ირთავს IHttpHandler ინტერფეისს 1 მეთოდითა და თვისებით.

public void ProcessRequest (HttpContext context)

public bool IsReusable
{
  get {return false;}
}

RSS პროვაიდერ xml - ის ფორმირება უნდა მოხდეს ProcessRequest მეთოდში რისთვისაც გამოიყენება შემდეგი სახის კოდი

public class feed : IHttpHandler {
  
  public void ProcessRequest (HttpContext context)
  {
    
    string Root = "http://" + context.Request.Url.Host + context.Request.ApplicationPath + "/";

    XNamespace ns = "http://www.w3.org/2005/Atom";

    XElement el = new XElement("rss", new XAttribute("version", "2.0"),
                     new XElement("channel", new XAttribute("title", "Mike Rss"),
                            new XElement("title", "Mike Rss"),
                            new XElement("link", Root + "feed.ashx"),
                            new XElement("description", "That's how am I trying RSS to work"),
                            new XElement("ttl", "10"),
                            new XElement("item", new XElement("title", "feed1"),
                                      new XElement("description", "feed1 Description"),
                                      new XElement("guid", Root + "?g=" + Guid.NewGuid().ToString())),
                            new XElement("item", new XElement("title", "feed2"),
                                      new XElement("description", "feed2 Description"),
                                      new XElement("guid", Root + "?g=" + Guid.NewGuid().ToString())),
                            new XElement("item", new XElement("title", "feed3"),
                                      new XElement("description", "feed3 Description"),
                                      new XElement("guid", Root + "?g=" + Guid.NewGuid().ToString())),
                            new XElement(ns + "atom",new XAttribute("href",Root+"feed.ashx"),
                                    new XAttribute("rel","self"),
                                    new XAttribute("type","application/rss+xml"))
                            ));
                                    


    XDocument doc = new XDocument(el);
    context.Response.ContentType = "text/xml";
    context.Response.ContentEncoding = System.Text.Encoding.UTF8;
    context.Response.Write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + doc.ToString());

    
  }


რომლის პასუხი xml - ში იქნება შემდეგი.

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel title="Mike Rss">
    <title>Mike Rss</title>
    <link>http://dev.63bits.com/feed.ashx</link>
    <description>That's how am I trying RSS to work</description>
    <ttl>10</ttl>
    <item>
      <title>feed1</title>
      <description>feed1 Description</description>
      <guid>http://dev.63bits.com/?g=f50fdd85-a3eb-4edb-be78-ba9454cb5f59</guid>
    </item>
    <item>
      <title>feed2</title>
      <description>feed2 Description</description>
      <guid>http://dev.63bits.com/?g=2c0dce68-09bb-4951-8770-8342b814d7a7</guid>
    </item>
    <item>
      <title>feed3</title>
      <description>feed3 Description</description>
      <guid>http://dev.63bits.com/?g=e7d5349e-cbb2-4c7a-83d5-e96a72fe4e18</guid>
    </item>
    <atom href="http://dev.63bits.com//feed.ashx" rel="self" type="application/rss+xml" xmlns="http://www.w3.org/2005/Atom" />
  </channel>
</rss>

რა ძირითად ატრიბუტებს შეიცავს ეს xml და რისთვის გამოიყენება ისინი:
<channel> ტეგის title ატრიბუტი და შვილობილი ტოტი განსაზღვრავს თქვენი Feed ის დასახელებას, <link> არის ბმული წყაროზე საიდანაც მოდის xml - ი, <description> მცირე კომენტარი, <ttl> ან Time To Live განსაზღვრავს რამდენი წუთი განმავლობაში შეინახოს Reader - მა RSS ქეშში.
<item> ტეგებში, როგორც თავად ხედავთ, გაცილებით მარტივად არის საქმე, დასახელება, მოკლე აღწერა და უნიკალური URL რაზეც უნდა გაილინკოს Feed - ი.
<channel> ტეგის ბოლო ტოტი <atom> განსაზღვრავს atom - ის მხრადაჭერასაც.

ბოლო ეტაპი რაც დარჩა გასაკეთებელი ეს არის Feed - ზე გალინკვა. რაც შეგვიძლია 2 გზით გავაკეთოთ
  1. გამოვაჩინოთ RSS - ის მხარდაჭერა ბროუზერში

    ამისათვის იმ გვერდის, სადაც გვინდა რომ გამოჩნდეს RSS - ის ნიშანი, head - ში ჩავამატოთ შემდეგი სკრიპტი:

    <link rel="alternate" type="application/rss+xml" title="Rss" href="~/feed.ashx" />
    სადაც href - ის მნიშვნელობა არის თქვენი ashx - ფაილის მისამართი.

  2. ჩვეულებრივი ლინკი

    <a href="feed.aspx"> [Content] </a>
სულ ესაა. მიაჭირეთ თქვენს RSS ლინკს და გადამისამართდით Google Reader - ში ან სხვა ნებისმიერ RSS მკითხავში.



P.S. RSS xml - ის შედგენისას თქვენ ძალიან დაგეხმარებათ Feed Validator - ი .