WCF 4 (Windows Communication Foundation) for Beginner – part 10

31 בינואר 2011

תגיות: ,
אין תגובות


ללמוד WCF 4 פרק 10 – יצירת RSS Feed בעזרת WCF

 

 

נושאים בפרק 10:


מה זה RSS Feed ומה זה ATOM.

הכרת המחלקות הרלוונטיות.

יצירת RSS Feed לדוגמא.

בפרק הבא.

 

 


מה זה RSS Feed ומה זה ATOM.


RSS ו – ATOM קיימים כבר הרבה שנים ותפקידם לאפשר האזנה ועדכון אוטמטי למידע מתחדש, למשל אפשר להגדיר קבלת מייל אוטומטי בכל פעם שאני מפרסם פוסט חדש, כל מה שצריך לעשות זה להעתיק את כתובת ה – RSS של הבלוג http://blogs.microsoft.co.il/blogs/shlomo/rss.aspx ל – RSS Reader שלכם (שזה יכול להיות outlook או כל תוכנה אחרת).

 

חשוב לזכור שגם RSS וגם ATOM הם בסופו של דבר XML בפורמט מסויים.

 

יש כל מיני עטיפות ב – net שעוזרות לייצר RSS או ATOM בצורה קלה וכמו כן יש גם מחלקות שעוזרות לקרוא את התוכן (במידה ואתם כותבים Reader בעצמכם), אבל מעולם לא היה פשוט וקל לייצר תוכן בפורמט RSS כמו ב – WCF, הקלות והפשטות שניתן לעשות זאת ב – WCF הם פשוט מדהימים, בדוגמא הנוכחית אני אדגים כיצד לייצר תוכן בפורמט RSS, כמובן שאפשר גם לייצר תוכן בפורמט ATOM ובנוסף ניתן גם לקרוא את התוכן מקוד את שני הנושאים האלו אני לא אדגים, למידע נוסף ומפורט ב – MSDN.

 

 


הכרת המחלקות הרלוונטיות.


לפני שנראה דוגמא ספציפית נכיר כמה מן המחלקות שאנחנו צריכים כדי לייצר תוכן RSS בסיסי.

 

Rss20FeedFormatter – תפקידו לקבל את האובייקטים שיצרנו בקוד ולהעביר אותם סרליזציה לפורמט RSS 2.0.

 

SyndicationFeed – האובייקט הראשי שמכיל את כל המידע שנרצה לשפוך.

 

SyndicationItem – אובייקט המכיל את המידע (feed מכיל מספר items).

 

SyndicationPerson – אובייקט המכיל מידע אודות מפרסם ה – fees או ה – item.

 

SyndicationLink – אובייקט העוטף url.

 

TextSyndicationContent – אובייקט המכיל תוכן, יכול להיות text, html, xml.

 

 


יצירת RSS Feed לדוגמא.:

 


בערוץ שידורי סלע רצינו לחשוף RSS, כתבתי אותו ב – WCF, והנה הוא לפניכם (עם קצת שינויים)

 

 

 



[ServiceContract]


public interface ISCCSyndication


{


    [OperationContract]


    [WebGet]


    Rss20FeedFormatter GetSCCSyndication();


}


 


 



[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]


public class SCCSyndication : ISCCSyndication


{


    public Rss20FeedFormatter GetSCCSyndication()


    {


        SyndicationFeed feed = GetFeed();


        var items = GetItems();


        feed.Items = items;


 


        return new Rss20FeedFormatter(feed);


    }


 


    private List<SyndicationItem> GetItems()


    {


        var itemList = new List<SyndicationItem>();


        var list = Get10ItemsFromDB();


 


        foreach (var item in list)


        {


            SyndicationItem sItem = new SyndicationItem();


            SyndicationPerson person = GetPerson(item);


            sItem.Authors.Add(person);


            sItem.Links.Add(SyndicationLink.CreateAlternateLink(new Uri("url to lecture")));


            sItem.Content = new TextSyndicationContent(item.Description + "<br/><img src='link to image'/>", TextSyndicationContentKind.Html);


            sItem.Title = new TextSyndicationContent(item.Title);


            sItem.LastUpdatedTime = item.Created;


            itemList.Add(sItem);


        }


 


        return itemList;


    }


 


    private static SyndicationPerson GetPerson(Custom item)


    {


        SyndicationPerson person = new SyndicationPerson();


        person.Email = item.Email;


        person.Name = item.Name;


        person.Uri = item.Url;


 


        return person;


    }


 


    private static SyndicationFeed GetFeed()


    {


        SyndicationFeed feed = new SyndicationFeed();


 


        feed.Authors.Add(new SyndicationPerson("scc@sela.co.il", "Shlomo Goldberg", "http://blogs.microsoft.co.il/blogs/shlomo/"));


        feed.Links.Add(SyndicationLink.CreateAlternateLink(new Uri("http://scc.sela.co.il/scc")));


        feed.Title = new TextSyndicationContent("Sela College Channel Lectures");


        feed.Copyright = new TextSyndicationContent("Copyright Sela.co.il. All rights reserved.");


        feed.Description = new TextSyndicationContent("The latest news over the Sela College Channel.");


        feed.ImageUrl = new Uri("link to scc image");


 


        return feed;


    }


}


 

 


ובקונפיג:

 

 



<system.serviceModel>


  <behaviors>


    <endpointBehaviors>


      <behavior name="web">


        <webHttp />


      </behavior>


    </endpointBehaviors>


  </behaviors>


  <services>


    <service name="SCCSyndication">


      <endpoint binding="webHttpBinding" contract="ISCCSyndication" behaviorConfiguration="web"></endpoint>


    </service>


  </services>


  <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />


</system.serviceModel>


 

 

 


כעת כל אחד יכול להרשם ל – RSS בכתובת http://scc.sela.co.il/scc/Clasess/WCFService/Syndication/SCCSyndication.svc/GetSCCSyndication

 

 

 

בפרק הבא.


בפרק הבא נדבר על Messaging Pattern וכיצד זה משפיע על צורת הכתיבה שלנו.

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *