Behrouz_Rad
سه شنبه 27 فروردین 1387, 15:05 عصر
BehooRssGenerator کتابخانه ای هست که برای تولید RSS برای سایت هایی که نیاز به RSS دارند نوشتم و تصمیم گرفتم اون رو به صورت عمومی منتشر کنم.
ابزارها و کتابخانه های مختلفی برای تولید RSS وجود دارند. از جمله فضای نام جدید Syndication که در دات نت NET 3.5. وجود داره و امکان ایجاد RSS و Atom رو با استفاده از WCF یا به شکل مستقل ارائه می کنه.
BehooRssGenerator با #C و کاملا شی گرا نوشته شده، سرعت زیادی در تولید RSS داره، از زبان پارسی پشتیبانی و همچنین دو سطح فشرده سازی "متوسط" و "زیاد" رو عرضه می کنه و کار با اون بسیار راحت هست.
هر سوال یا مشکلی که در رابطه با این کتابخانه دارید در همین تاپیک مطرح بفرمایید.
فایل ضمیمه شامل کتابخانه و نمونه کدی جهت استفاده است.
برای تولید RSS با این کتابخانه، یک صفحه مثلا با نام rss.aspx ایجاد کنید و تمامی محتویات فایل aspx رو به جز دایرکتیو Page که در بالای صفحه وجود داره حذف کنید و سپس کدهای مورد نیاز رو در روال Page_Load بنویسید.
سه نکته:
1) اگر اخبار شما پارسی است، خاصیت Language کلاس RssChannel رو بر روی Persian قرار بدید تا RssReader ها بتونن به صورت راست چین خبرها رو نمایش بدن.
2) حالت فشره سازی رو همیشه بر روی High قرار بدید مگر اینکه تفاوت کمی بین حالت های Medium و High وجود داشته باشه. (این تفاوت رو در Firefox می تونید با راست کلیک بر روی صفحه و انتخاب گزینه ی Page Info و مشاهده ی قسمت Size در سربرگ General مشاهده کنید) در این حالت گزینه ی Medium رو انتخاب کنید.
3) برای یادگیری فرمت فایل های RSS و آشنایی با المنت های این استاندارد مرجع ذیل رو مطالعه بفرمایید:
http://www.rssboard.org/rss-specification
مثالی در رابطه با استفاده از این کتابخانه با #C
using BehooRssGenerator.RssElements;
----------------------------------------------
protected void Page_Load(object sender, EventArgs e)
{
RssChannel OBJ_CHANNEL = new RssChannel("Behrouz News Headlines!", new Uri("http://www.site.com/"), "ASP.NET - Daily News");
OBJ_CHANNEL.Categories.Add(new RssCategory("Programming"));
OBJ_CHANNEL.Categories.Add(new RssCategory("Updates", "http://www.site.com/updates"));
OBJ_CHANNEL.CompressionMode = RssChannel.CompressType.High;
OBJ_CHANNEL.Copyright = "(c) 2008, Behrouz News Agency.";
OBJ_CHANNEL.Language = RssLanguages.Persian;
OBJ_CHANNEL.LastBuildDate = DateTime.Now;
OBJ_CHANNEL.ManagingEditor = new System.Net.Mail.MailAddress("my1@domain.com", "Ali Ahmadi");
OBJ_CHANNEL.WebMaster = new System.Net.Mail.MailAddress("my2@domain.com", "Behrouz Rad");
OBJ_CHANNEL.Items.Add(new RssItem("اولین خبر", new Uri("http://www.site.com/news.aspx?id=1"), "متن خلاصه اولین خبر"));
RssItem OBJ_ITEM = null;
OBJ_ITEM = new RssItem("دومین خبر", new Uri("http://www.site.com/news.aspx?id=2"), "متن خلاصه دومین خبر");
OBJ_ITEM.Author = new System.Net.Mail.MailAddress("my2@domain.com", "Behrouz Rad");
OBJ_ITEM.Categories.Add(new RssCategory("Programming"));
OBJ_ITEM.Comments = new Uri("http://www.site.com/news.aspx?id=2/comments");
OBJ_ITEM.Guid = new RssGuid(Guid.NewGuid().ToString());
OBJ_ITEM.PubDate = DateTime.Now.AddHours(-3);
OBJ_CHANNEL.Items.Add(OBJ_ITEM);
OBJ_CHANNEL.GenerateRss(this.Context);
}
مثالی در رابطه با استفاده از این کتابخانه با VB.NET
Imports BehooRssGenerator.RssElements
----------------------------------------------
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim OBJ_CHANNEL As New RssChannel("Behrouz News Headlines!", New Uri("http://www.site.com/"), "ASP.NET - Daily News")
OBJ_CHANNEL.Categories.Add(New RssCategory("Programming"))
OBJ_CHANNEL.Categories.Add(New RssCategory("Updates", "http://www.site.com/updates"))
OBJ_CHANNEL.CompressionMode = RssChannel.CompressType.High
OBJ_CHANNEL.Copyright = "(c) 2008, Behrouz News Agency."
OBJ_CHANNEL.Language = RssLanguages.Persian
OBJ_CHANNEL.LastBuildDate = DateTime.Now
OBJ_CHANNEL.ManagingEditor = New Net.Mail.MailAddress("my1@domain.com", "Ali Ahmadi")
OBJ_CHANNEL.WebMaster = New Net.Mail.MailAddress("my2@domain.com", "Behrouz Rad")
OBJ_CHANNEL.Items.Add(New RssItem("اولین خبر", New Uri("http://www.site.com/news.aspx?id=1"), "متن خلاصه اولین خبر"))
Dim OBJ_ITEM As RssItem = Nothing
OBJ_ITEM = New RssItem("دومین خبر", New Uri("http://www.site.com/news.aspx?id=2"), "متن خلاصه دومین خبر")
OBJ_ITEM.Author = New Net.Mail.MailAddress("my2@domain.com", "Behrouz Rad")
OBJ_ITEM.Categories.Add(New RssCategory("Programming"))
OBJ_ITEM.Comments = New Uri("http://www.site.com/news.aspx?id=2/comments")
OBJ_ITEM.Guid = New RssGuid(Guid.NewGuid().ToString())
OBJ_ITEM.PubDate = DateTime.Now.AddHours(-3)
OBJ_CHANNEL.Items.Add(OBJ_ITEM)
OBJ_CHANNEL.GenerateRss(Me.Context)
End Sub
پیاده سازی کتابخانه در MVC و Web Forms متفاوت است. بنابراین برای استفاده در ASP.NET MVC از کتابخانه ای که در فایل ضمیمه ی مرتبط وجود دارد استفاده بفرمایید. برای MVC یک ActionResult سفارشی با نام RssResult وجود دارد که Channel را به عنوان ورودی می گیرد:
return new RssResult(rssChannel);
آپدیت در 18/1/1389: اضافه شدن نسخه ی ASP.NET MVC
موفق باشید.
ابزارها و کتابخانه های مختلفی برای تولید RSS وجود دارند. از جمله فضای نام جدید Syndication که در دات نت NET 3.5. وجود داره و امکان ایجاد RSS و Atom رو با استفاده از WCF یا به شکل مستقل ارائه می کنه.
BehooRssGenerator با #C و کاملا شی گرا نوشته شده، سرعت زیادی در تولید RSS داره، از زبان پارسی پشتیبانی و همچنین دو سطح فشرده سازی "متوسط" و "زیاد" رو عرضه می کنه و کار با اون بسیار راحت هست.
هر سوال یا مشکلی که در رابطه با این کتابخانه دارید در همین تاپیک مطرح بفرمایید.
فایل ضمیمه شامل کتابخانه و نمونه کدی جهت استفاده است.
برای تولید RSS با این کتابخانه، یک صفحه مثلا با نام rss.aspx ایجاد کنید و تمامی محتویات فایل aspx رو به جز دایرکتیو Page که در بالای صفحه وجود داره حذف کنید و سپس کدهای مورد نیاز رو در روال Page_Load بنویسید.
سه نکته:
1) اگر اخبار شما پارسی است، خاصیت Language کلاس RssChannel رو بر روی Persian قرار بدید تا RssReader ها بتونن به صورت راست چین خبرها رو نمایش بدن.
2) حالت فشره سازی رو همیشه بر روی High قرار بدید مگر اینکه تفاوت کمی بین حالت های Medium و High وجود داشته باشه. (این تفاوت رو در Firefox می تونید با راست کلیک بر روی صفحه و انتخاب گزینه ی Page Info و مشاهده ی قسمت Size در سربرگ General مشاهده کنید) در این حالت گزینه ی Medium رو انتخاب کنید.
3) برای یادگیری فرمت فایل های RSS و آشنایی با المنت های این استاندارد مرجع ذیل رو مطالعه بفرمایید:
http://www.rssboard.org/rss-specification
مثالی در رابطه با استفاده از این کتابخانه با #C
using BehooRssGenerator.RssElements;
----------------------------------------------
protected void Page_Load(object sender, EventArgs e)
{
RssChannel OBJ_CHANNEL = new RssChannel("Behrouz News Headlines!", new Uri("http://www.site.com/"), "ASP.NET - Daily News");
OBJ_CHANNEL.Categories.Add(new RssCategory("Programming"));
OBJ_CHANNEL.Categories.Add(new RssCategory("Updates", "http://www.site.com/updates"));
OBJ_CHANNEL.CompressionMode = RssChannel.CompressType.High;
OBJ_CHANNEL.Copyright = "(c) 2008, Behrouz News Agency.";
OBJ_CHANNEL.Language = RssLanguages.Persian;
OBJ_CHANNEL.LastBuildDate = DateTime.Now;
OBJ_CHANNEL.ManagingEditor = new System.Net.Mail.MailAddress("my1@domain.com", "Ali Ahmadi");
OBJ_CHANNEL.WebMaster = new System.Net.Mail.MailAddress("my2@domain.com", "Behrouz Rad");
OBJ_CHANNEL.Items.Add(new RssItem("اولین خبر", new Uri("http://www.site.com/news.aspx?id=1"), "متن خلاصه اولین خبر"));
RssItem OBJ_ITEM = null;
OBJ_ITEM = new RssItem("دومین خبر", new Uri("http://www.site.com/news.aspx?id=2"), "متن خلاصه دومین خبر");
OBJ_ITEM.Author = new System.Net.Mail.MailAddress("my2@domain.com", "Behrouz Rad");
OBJ_ITEM.Categories.Add(new RssCategory("Programming"));
OBJ_ITEM.Comments = new Uri("http://www.site.com/news.aspx?id=2/comments");
OBJ_ITEM.Guid = new RssGuid(Guid.NewGuid().ToString());
OBJ_ITEM.PubDate = DateTime.Now.AddHours(-3);
OBJ_CHANNEL.Items.Add(OBJ_ITEM);
OBJ_CHANNEL.GenerateRss(this.Context);
}
مثالی در رابطه با استفاده از این کتابخانه با VB.NET
Imports BehooRssGenerator.RssElements
----------------------------------------------
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim OBJ_CHANNEL As New RssChannel("Behrouz News Headlines!", New Uri("http://www.site.com/"), "ASP.NET - Daily News")
OBJ_CHANNEL.Categories.Add(New RssCategory("Programming"))
OBJ_CHANNEL.Categories.Add(New RssCategory("Updates", "http://www.site.com/updates"))
OBJ_CHANNEL.CompressionMode = RssChannel.CompressType.High
OBJ_CHANNEL.Copyright = "(c) 2008, Behrouz News Agency."
OBJ_CHANNEL.Language = RssLanguages.Persian
OBJ_CHANNEL.LastBuildDate = DateTime.Now
OBJ_CHANNEL.ManagingEditor = New Net.Mail.MailAddress("my1@domain.com", "Ali Ahmadi")
OBJ_CHANNEL.WebMaster = New Net.Mail.MailAddress("my2@domain.com", "Behrouz Rad")
OBJ_CHANNEL.Items.Add(New RssItem("اولین خبر", New Uri("http://www.site.com/news.aspx?id=1"), "متن خلاصه اولین خبر"))
Dim OBJ_ITEM As RssItem = Nothing
OBJ_ITEM = New RssItem("دومین خبر", New Uri("http://www.site.com/news.aspx?id=2"), "متن خلاصه دومین خبر")
OBJ_ITEM.Author = New Net.Mail.MailAddress("my2@domain.com", "Behrouz Rad")
OBJ_ITEM.Categories.Add(New RssCategory("Programming"))
OBJ_ITEM.Comments = New Uri("http://www.site.com/news.aspx?id=2/comments")
OBJ_ITEM.Guid = New RssGuid(Guid.NewGuid().ToString())
OBJ_ITEM.PubDate = DateTime.Now.AddHours(-3)
OBJ_CHANNEL.Items.Add(OBJ_ITEM)
OBJ_CHANNEL.GenerateRss(Me.Context)
End Sub
پیاده سازی کتابخانه در MVC و Web Forms متفاوت است. بنابراین برای استفاده در ASP.NET MVC از کتابخانه ای که در فایل ضمیمه ی مرتبط وجود دارد استفاده بفرمایید. برای MVC یک ActionResult سفارشی با نام RssResult وجود دارد که Channel را به عنوان ورودی می گیرد:
return new RssResult(rssChannel);
آپدیت در 18/1/1389: اضافه شدن نسخه ی ASP.NET MVC
موفق باشید.