Please add support for System.ServiceModel.Syndication #76

Open
RehanSaeed opened this Issue Jun 9, 2015 · 22 comments

Projects

None yet
@RehanSaeed

Please create a NuGet package for System.ServiceModel.Syndication. A lot of ASP.NET MVC users use SyndicationFeed to create Atom/RSS feeds.

I myself want to use it in ASP.NET MVC Boilerplate.

Thank You!

@arc95
arc95 commented Jun 9, 2015

I've experienced this issue and had to find other ways to parse the Atom/Rss feed, as detailed in this StackOverflow post: http://stackoverflow.com/questions/30262874/install-asp-net-5-0-version-of-system-servicemodel-syndication

Even following the instructions provided by some helpful people there, I ran into additional obstacles and decided to abandon the effort. Please bring the System.ServiceModel.Syndication back in ASP.NET MVC. Thanks.

@iamjasonp
Member

Thanks, @RehanSaeed, @arc95!

Seems like a discussion is needed on how this library is used out in the wild, whether or not this is the correct place for System.ServiceModel.Syndication, and how to prioritize such work.

Example: we took out all the DataContractSerializers from the WCF main project as it was used by far more than just WCF - it currently lives in the dotnet/corefx repo.

You've both mentioned that you want to use this in ASP.NET MVC. Is this a widespread use case?

@RehanSaeed

I believe it would make more sense to put this under System.Web.Syndication as this code is generally used to parse or generate Atom or RSS feeds. I personally don't know any other use cases.

If you search for SyndicationFeed on StackOverflow, you will find a lot of people using it in their MVC or Web Forms projects, specifically to parse or generate Atom or RSS feeds.

@mconnew
Member
mconnew commented Jun 11, 2015

@RehanSaeed, the question of what namespace for the functionality to live under will affect how the library is pulled into your code when referenced against various versions of .Net. It will be easiest to explain by example. If you create a portable library and want to use HttpClient, you add a reference to your project for System.Net.Http. If your portable library is being used in a universal windows application, your reference to System.Net.Http will cause an implementation of HttpClient from .Net native to be used which builds on top of the Win RT HttpClient. If your portable library is used in a asp.net v5 (using core clr) website, it will pull in a core clr implementation which builds on top of the win32 WinHTTP api. If your portable library is used in a desktop application, then the version of System.Net.Http that ships with the desktop version of .Net which uses HttpWebRequest will be used. This can be done because the same namespace and class types are used on all these platforms.
If the syndication code is moved to System.Web.Syndication, on platforms which already have the implementation already available such as mono, Silverlight or the desktop clr, the existing implementation can't be used and new code will need to be distributed with the app. This increases memory usage in some use cases.

@mconnew
Member
mconnew commented Jun 11, 2015

@RehanSaeed , @arc95, the first step is to clearly scope your requirements. Can you please let us know the api's you need. This would include which classes you use, which properties and methods you need, and which constructor overloads you use.

@RehanSaeed

I have created a full list of types and members I use below for the ASP.NET MVC Boilerplate project. You can see the usages of the code on GitHub here and here.

I realize the concern about extra memory used if it was split into a separate assembly. However, it's rightful place is as a web component. All new web components seem to be placed under System.Net, so perhaps that's where it should go. It really has very little to do with WCF.

SyndicationFeed

  • Id
  • Title
  • Items
  • Description
  • LastUpdatedTime
  • ImageUrl
  • Copyright
  • Language
  • Generator
  • Links
  • Authors
  • Categories
  • Contributors
  • Please add an Icon property as per the Atom 1.0 spec
  • AttributeExtensions

SyndicationContent

  • SyndicationContent.CreatePlaintextContent(string content)

TextSyndicationContent

  • TextSyndicationContent(string text) constructor

SyndicationItem

  • Id
  • Title
  • Summary
  • LastUpdatedTime
  • PublishDate
  • Copyright
  • Links
  • Authors
  • Contributors
  • Categories

SyndicationElementExtension

  • GetObject()
  • SyndicationElementExtension(string outerName, string outerNamespace, object dataContractExtension)
  • SyndicationElementExtension(object dataContractExtension)

SyndicationLink

  • SyndicationLink.CreateSelfLink(Uri uri, string mediaType)
  • SyndicationLink.CreateAlternateLink(Uri uri, string mediaType)
  • SyndicationLink(Uri uri, string relationshipType, string title, string mediaTypem long length)

SyndicationCategory

  • SyndicationCategory(string name)

SyndicationPerson

  • Name
  • Uri
  • Email
@kobynet
kobynet commented Jul 2, 2015

+1

@horsdal
horsdal commented Aug 1, 2015

👍 from me. I too could use the Syndication types to create feeds in a DNX solution. For my scenario though I do not have MVC, just ASP.NET 5.

@roncain
Contributor
roncain commented Aug 3, 2015

Thanks for the additional feedback @horsdal . We'll factor it into our planning and update this issue when we've got something concrete to say.

@leus
leus commented Aug 21, 2015

Is System.ServiceModel considered here? I need to use SOAP services in an MVC application and it's proving difficult.

@dansiegel

Would have to say that Syndication needs to be baked in for sure. Given that the most common use case for this would be with and ASP.NET 5 project and given the modularized design the best thing would be to set add this as it's own package similar to Identity with it's own middleware.

@lviana1
lviana1 commented Sep 17, 2015

+1 for this. A lot of ASP.NET MVC users use the Syndication classes to consume and create Atom/RSS feeds, so we need this back in ASP.NET v5. Any ideas as to which milestone this is being considered under?

@TerribleDev

👍 creating rss feeds is a key for websites that have any kind of subscriptions

@lviana1
lviana1 commented Oct 26, 2015

What I think needs to happen here is that all the code under the System.ServiceModel.Syndication namespace needs to be moved to .NET Core (dotnet/corefx repo). You mention that something similar was already done with the DataContractSerializers code. The System.ServiceModel.Syndication functionality is used extensively by both, ASP.NET server-side web apps, as well as client-side apps, so I believe a similar move is needed. If this component is moved to .NET core, and a NuGet package is created for it, then cross-platform ASP.NET 5 web apps, as well as client apps, will be able to continue using it.

@TerribleDev

I would like to see this moved into its own nuget package that can target the core runtime. Generating RSS feeds, and reading rss feeds are done in a multitude of applications (web, client, etc), and not being able to use this library is a blocking factor in using the core runtime.

@zhenlan zhenlan added this to the Future milestone Nov 25, 2015
@daveaglick

I agree with @tparnell8, this should not be tied up with a web-specific library. I write a static site generator and so I have a need to create and consume RSS/Atom feeds outside the context of any specific web framework.

@daveaglick daveaglick referenced this issue in Wyamio/Wyam Dec 30, 2015
Merged

New RSS module #174

@RehanSaeed
RehanSaeed commented May 22, 2016 edited

Any updates on this? There seem to be a lot of new System.ServiceModel.* packages now available and announcements for the here but no Syndication package.

UPDATE

I found the announcement here. It's not been added yet.

@roncain
Contributor
roncain commented May 23, 2016

Hi @RehanSaeed -- sorry, but no new announcements on Syndication. We're still working full out to solidify the current feature set and discussing how to handle packages like Syndication. We understand the need and appreciate your detailed list of required API's in the comments above, but we can't yet promise when or how it might be delivered. As we make decisions about it, we'll do what we can to keep this current issue updated. For our future planning, we're ranking requested features by relative importance, and so as always we appreciate knowing how you yourself rank Syndication with respect to other features you need.

@RehanSaeed

@roncain Totally understand and appreciate your efforts.

Right now, SyndicationFeed and SmtpClient is the only thing stopping me from using and recommending .Net Core over the full .Net framework. Based on the GitHub and StackOverflow comments I have seen, there are many others in the same boat. My understanding is that one of the Azure clients (Was it DocumentDB?) is also held up due to this issue.

@madmunsterdaddy

This should really be in its own library anyways and not tied to WCF. As was mentioned earlier, it's such a common requirement and one can assume many ASP.NET MVC users are going to be using this.

@SyntonicStudios

I'm about to port a web application to .net core and it is currently using SyndicationFeed and would greatly appreciate this namespace in .net core. I'd really hate to reinvent the wheel just to do clean RSS parsing - though if anyone has some good ideas to hold me over until this gets ported I'd love to hear them. Thanks.

@zrhyvr
zrhyvr commented Jul 3, 2016

I am also using SyndicationFeed. SyndicationFeed has a unified interface for both Atom and Rss, but sometimes it can be confusing and tricky to use. It is better to create two different types for Atom and Rss.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment