Wish: Subscription Abstraction Layer
RSS.NET and Atom.NET[1] are great, but they sure could use an abstraction layer. I'll bet the same conditional logic has been written hundreds of times, but I haven't found anywhere that it's been abstracted out as a standalone library. Think ADO.NET - it's a general data access framework that allows any data provider (SQL Server, Oracle, DB2, Text, write your own) to be accessed as generic interfaces (IDataReader, etc.).
A Subscription Abstraction Layer (SAL) would simplify a few things:
- Generic access to subscription providers
- Simplified extensibility for new or changed subscription formats
- Offer a Persistance layer which would store data to any provider for which a provider had been written. Of course, everyone's datastore would be diferent so the providers would mostly serve as samples, but I'd just need to fill in my stored procedure names or SQL commands. This could potentially use the Enterprise Library, or could just implement the informal DAAB 1.0 DataHelper interface.
I'm hoping someone has already written this and I've just Googled poorly. I'm guessing there are parts of this in many weblog systems and aggregators, but I'd really prefer a distinct library. If it's not out there, I'll probably write it - does this look like an okay design?
| ||||||||||||
Subscription Abstraction Layer (SAL) | Persistance Provider Interface |
| ||||||||||
RSS.NET
| Atom.NET
| Additional Subscription Providers (Atom 1.0, RDF, NNTP, etc.) |
A really lame cheat would be to just XSLT RSS to Atom or Atom to RSS and treat them all as one specific feed type, but I don't think I can bring myself to do that.
[1] Anyone know if / when Atom.NET will support Atom 1.0?