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">