Windows RSS Platform Facts


Last updated August 16, 2007

The Relevance of the Windows RSS Platform

The Microsoft Windows RSS Platform is included in:

  • Internet Explorer 7.0 for Windows XP SP2
  • Windows Server 2003 SP1
  • Windows XP 64-bit
  • all versions of Vista

That's all great, but why is it relevant to .NET developers working with RSS and ATOM feeds? Simply put, it means that in the near future most Windows end-users will have the Windows RSS Platform installed on their computers.

This is relevant because the Windows RSS Platform is then available to any application. An application can utilize the Windows RSS Platform to become 'RSS enabled' without requiring the application developer to re-code basic RSS building blocks. All of the underground RSS plumbing will be integrated as just another Windows system API.

Why Use Third-Party Libraries When Windows RSS Platform is Free?

1. The Windows RSS platform has limited functionality.

The Windows RSS platform is only appropriate for applications that are consuming feeds. If your application does anything more than read feeds, the Windows RSS Platform is of limited use. Most all the properties in the objects exposed by Windows RSS Platform are read-only.

With the RSS Library for .NET or ATOM Library for .NET, you can create, parse and write a feed as easily as reading a feed. It is easy to combine and/or filter feeds together and republish or insert ads or non-RSS meta tags.

2. The Windows RSS Platform does not provide source code.

Both the RSS Library for .NET and ATOM Library for .NET are available for purchase with source code. This allows full, stable control over the direction and utilization of RSS and ATOM within your websites and applications.

3. No DOM-like object model.

With the Windows RSS Platform there is no complete object model because some elements are not exposed as an object. For example, the Author construct is not exposed an object and the API of Windows RSS Platform exposes this as a string only. See here. In the RSS Library for .NET or ATOM Library for .NET, there is a traversable, DOM-like object model to access all elements and attributes allowing programmatic access to anything.

4. The Common Feed List of the Windows RSS Platform is globally accessible by all users and applications where any feed URL can be added without constraint.

The implications could produce spam-like results. For example, to create a new entry in the Common Feed List and (unknowing to the user) subscribe a user to that feed:

[C#]
1 String feedUrl = "http://test.Web20Tools.net/samples/rss/rss20.xml"; 2 FeedsManager fm = new FeedsManagerClass(); 3 IFeedFolder rootFolder = (IFeedFolder)fm.RootFolder; 4 IFeed feed = (IFeed)rootFolder.CreateFeed("RSS Sample", feedUrl);
[Visual Basic]
1 Dim feedUrl As String = "http://test.Web20Tools.net/samples/rss/rss20.xml" 2 Dim fm As FeedsManager = New FeedsManagerClass() 3 Dim rootFolder As IFeedFolder = CType(fm.RootFolder, IFeedFolder) 4 Dim feed As IFeed = CType(rootFolder.CreateFeed("RSS Sample", feedUrl), IFeed)

5. Ease of Use.

The RSS Library for .NET and ATOM Library for .NET Library both provide a very user friendly and easy-to-use interface to the developer. For example, reading a feed with the RSS Library for .NET Library is one line of code:

[C#]
1 RssFeed feed = RssFeed.Load("http://test.Web20Tools.net/samples/rss/rss20.xml");
[Visual Basic]
1 Dim feed As RssFeed = RssFeed.Load("http://test.Web20Tools.net/samples/rss/rss20.xml")

The Windows RSS Platform is more complicated to use and much less intuitive. Reading a feed with the Windows RSS Platform API requires much more code.

[C#]
1 IFeedsManager fm = new FeedsManagerClass(); 2 IFeedFolder rootFolder = (IFeedFolder)fm.RootFolder; 3 IFeed feed = null; 4 String url = "http://test.Web20Tools.net/samples/rss/rss20.xml"; 5 if (fm.IsSubscribed(url)) 6 { 7 feed = (IFeed)fm.GetFeedByUrl(url); 8 feed.Download(); 9 }
[Visual Basic]
1 Dim fm As IFeedsManager = New FeedsManagerClass() 2 Dim rootFolder As IFeedFolder = CType(fm.RootFolder, IFeedFolder) 3 Dim feed As IFeed 4 Dim url As String = "http://test.Web20Tools.net/samples/rss/rss20.xml" 5 If fm.IsSubscribed(url) Then 6 feed = CType(fm.GetFeedByUrl(url), IFeed) 7 feed.Download() 8 End If

6. The Windows RSS Platform relies on a 'feed superset' to read feeds

The API reads a feed (be it RSS 0.91, 1.0, 1.1, 2.0, Atom 0.3 or 1.0) and transforms all formats to a single object IFeed which is based on RSS 2.0. This makes it nearly impossible to work within the aspects of a specific feed protocol.

For example, FeedItem.Author is mandatory in ATOM 1.0, but the API states it is optional and does not set a default value. The property value is null if not specified in the source.

The RSS Library for .NET and ATOM Library for .NET read feeds based on the complete published protocol, providing full control of the feed to the programmer. More importantly, this leaves the option of transforming a feed to any other feed protocol to the discretion of the programmer.

7. The Windows RSS platform is not extensible.

Extensions add and extend RSS capabilities. The Windows RSS Platform only supports the Microsoft Simple List Extension, while the RSS Library for .NET and ATOM Library for .NET support a wide range of extensions and provides programmers with the ability to easily add support for any extension.

For a list of RSS Extensions, visit RSS-Extensions.org

8. The Windows RSS Platform has no support for password protected sites.

It is not possible to add a query string to a feed URL in order to authenticate a user. This severly limits the ability of Windows RSS Platform to work within website security measures and provide access to private, password protected feeds.

9. The Windows RSS Platform supports only "http:" and "https:" protocols.

In other words, it is not possible to view a local or network feed file with the Windows RSS Platform. This precludes its use as a general purpose feed parser.

10. The Feed Synchronization Engine works only within the Internet Zone.

As described in Internet Explorer, by default the engine will not allow downloading files with any of 70 different extensions - including exe and com. Read the full Microsoft article for more details.

11. The Windows RSS Platform is not managed code.

Not sure what that means? Read the Wikipedia entry on Managed Code but basically it means the Windows RSS Platform is not compliant with Microsoft's own .NET Framework Common Language Runtime (CLR) however, the RSS Library for .NET and the ATOM Library for .NET are.

11. The Windows RSS Platform does not support feeds with DTDs.

A Document Type Definition (DTD) is a description that sets out what names are to be used for the different types of elements, where they may occur, and how they all fit together. DTDs are not required for determining basic "well-formedness" in feeds, but they are needed if you want to take advantage of any special attribute types, or use the default attribute values or you want to check the feed validity. For example, to incorporate any iTunes tags into your RSS 2.0 feeds, you must designate a link to the Document Type Definition (DTD) for the iTunes namespace changes.

[RSS 2.0]
1 <rss version="2.0" xmlns:blogChannel="http://backend.userland.com/blogChannelModule" 2 xmlns:itunes="http://www.itunes.com/DTDs/Podcast-1.0.dtd">

 


FeatureWeb20ToolsWindows RSS Platform
Support for ATOM .3, 1.0YesPartial
Read ATOM feedsYesYes
Read ATOM 1.0 and 0.3 feeds alikeYes 
Create ATOM feedsYes 
Convert from ATOM 1.0 to .3 and vice versaYes 
Write ATOM feed fileYes 
Set the default ATOM feed versionYes 
Support for RSS 1.0 (RDF), 9.1, 9.2 and 2.0YesPartial
Read RSS feedsYesYes
Read all versions of RSS feeds alikeYes 
Create RSS feedsYesYes
Convert from one version of RSS to anotherYes 
Write RSS feed fileYes
Refresh a feed and reload the info from the serverYes 
Document Object ModelYes 
PingBack SupportYes 
TrackBack SupportYes 
Support for Advanced Date/Time FormatYes 
Exception Handling and Logging FrameworkYes 
Incremental LoadingYes 
Conditionally filter ItemsYes
CommonFeedList Yes
Auto Discovery of feedsYes 
FeedSynchronization Engine* Yes
Handle Password Protected FeedsYes 
API support for obtaining any XML elementYes 
Add application specific meta-dataYes 
Feed Store Yes
EnclosuresYesYes
Support for downloading enclosures in the background Yes
Support for .Net applicationsYesYes
Support for COM Yes
Serialize feed objects to XMLYesYes
OLE legacy support Yes
Support for ExtensionsYesPartial
RFC 3339 Date complianceYes 
Support for DTDsYes