New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Please add support for System.ServiceModel.Syndication #76

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

Comments

Projects
None yet
@RehanSaeed

RehanSaeed commented Jun 9, 2015

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

This comment has been minimized.

Show comment
Hide comment
@arc95

arc95 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.

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

This comment has been minimized.

Show comment
Hide comment
@iamjasonp

iamjasonp Jun 11, 2015

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?

Member

iamjasonp commented Jun 11, 2015

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

This comment has been minimized.

Show comment
Hide comment
@RehanSaeed

RehanSaeed Jun 11, 2015

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.

RehanSaeed commented Jun 11, 2015

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

This comment has been minimized.

Show comment
Hide comment
@mconnew

mconnew Jun 11, 2015

Member

@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.

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

This comment has been minimized.

Show comment
Hide comment
@mconnew

mconnew Jun 11, 2015

Member

@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.

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

This comment has been minimized.

Show comment
Hide comment
@RehanSaeed

RehanSaeed Jun 12, 2015

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

RehanSaeed commented Jun 12, 2015

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

This comment has been minimized.

Show comment
Hide comment
@kobynet

kobynet commented Jul 2, 2015

+1

@horsdal

This comment has been minimized.

Show comment
Hide comment
@horsdal

horsdal 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.

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

This comment has been minimized.

Show comment
Hide comment
@roncain

roncain Aug 3, 2015

Contributor

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.

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

This comment has been minimized.

Show comment
Hide comment
@leus

leus Aug 21, 2015

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

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

This comment has been minimized.

Show comment
Hide comment
@dansiegel

dansiegel Aug 27, 2015

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.

dansiegel commented Aug 27, 2015

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

This comment has been minimized.

Show comment
Hide comment
@lviana1

lviana1 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?

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

This comment has been minimized.

Show comment
Hide comment
@TerribleDev

TerribleDev Oct 17, 2015

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

TerribleDev commented Oct 17, 2015

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

@lviana1

This comment has been minimized.

Show comment
Hide comment
@lviana1

lviana1 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.

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

This comment has been minimized.

Show comment
Hide comment
@TerribleDev

TerribleDev Oct 27, 2015

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.

TerribleDev commented Oct 27, 2015

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

This comment has been minimized.

Show comment
Hide comment
@daveaglick

daveaglick Dec 30, 2015

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 commented Dec 30, 2015

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.

@RehanSaeed

This comment has been minimized.

Show comment
Hide comment
@RehanSaeed

RehanSaeed May 22, 2016

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.

RehanSaeed commented May 22, 2016

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

This comment has been minimized.

Show comment
Hide comment
@roncain

roncain May 23, 2016

Contributor

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.

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

This comment has been minimized.

Show comment
Hide comment
@RehanSaeed

RehanSaeed May 23, 2016

@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.

RehanSaeed commented May 23, 2016

@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.

@natelaff

This comment has been minimized.

Show comment
Hide comment
@natelaff

natelaff Jun 11, 2016

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.

natelaff commented Jun 11, 2016

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.

@bradyep

This comment has been minimized.

Show comment
Hide comment
@bradyep

bradyep Jun 27, 2016

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.

bradyep commented Jun 27, 2016

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

This comment has been minimized.

Show comment
Hide comment
@zrhyvr

zrhyvr 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.

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.

@MissyMelissa

This comment has been minimized.

Show comment
Hide comment
@MissyMelissa

MissyMelissa Jan 27, 2017

Any updates?

MissyMelissa commented Jan 27, 2017

Any updates?

@zhenlan

This comment has been minimized.

Show comment
Hide comment
@zhenlan

zhenlan Feb 3, 2017

Member

@MissyMelissa thanks for querying. This is still in our backlog.

Member

zhenlan commented Feb 3, 2017

@MissyMelissa thanks for querying. This is still in our backlog.

@RehanSaeed

This comment has been minimized.

Show comment
Hide comment
@RehanSaeed

RehanSaeed May 11, 2017

Still not available in .NET Core 2.0 Preview 1 which probably means 2.0 RTM will not have it either, am I right?

RehanSaeed commented May 11, 2017

Still not available in .NET Core 2.0 Preview 1 which probably means 2.0 RTM will not have it either, am I right?

@zhenlan

This comment has been minimized.

Show comment
Hide comment
@zhenlan

zhenlan May 12, 2017

Member

Syndication will not be part of .NET Core 2.0. We are in planning phase.

Looks like it's consensus here Syndication should be in its own package. At this point, it probably also makes sense for Syndication to be built on Net Standard (if possible) so it can run on different frameworks. We are also thinking about improvement over the version in full framework, for example, more flexibility of parsing date-time formats. If anyone has any pain points of using the version of Syndication in full framework, we would love to hear and will appreciate your feedback.

Member

zhenlan commented May 12, 2017

Syndication will not be part of .NET Core 2.0. We are in planning phase.

Looks like it's consensus here Syndication should be in its own package. At this point, it probably also makes sense for Syndication to be built on Net Standard (if possible) so it can run on different frameworks. We are also thinking about improvement over the version in full framework, for example, more flexibility of parsing date-time formats. If anyone has any pain points of using the version of Syndication in full framework, we would love to hear and will appreciate your feedback.

@dodyg

This comment has been minimized.

Show comment
Hide comment
@dodyg

dodyg Jun 18, 2017

Another useful thing is to add a way to deal with the feed extensions. RSS/ATOM allows extensions through namespaces and I think there was no easy way to deal with them through SyndicationFeed.

For example:

https://en.wikipedia.org/wiki/Media_RSS

dodyg commented Jun 18, 2017

Another useful thing is to add a way to deal with the feed extensions. RSS/ATOM allows extensions through namespaces and I think there was no easy way to deal with them through SyndicationFeed.

For example:

https://en.wikipedia.org/wiki/Media_RSS

@zhenlan

This comment has been minimized.

Show comment
Hide comment
@zhenlan

zhenlan Jun 19, 2017

Member

@dodyg thanks for the feedback. We will look into this.

cc: @ElJerry

Member

zhenlan commented Jun 19, 2017

@dodyg thanks for the feedback. We will look into this.

cc: @ElJerry

@dodyg

This comment has been minimized.

Show comment
Hide comment
@dodyg

dodyg Jun 20, 2017

We are also thinking about improvement over the version in full framework, for example, more flexibility of parsing date-time formats.

This is a critical feature. The web is full of broken RSS dates.

dodyg commented Jun 20, 2017

We are also thinking about improvement over the version in full framework, for example, more flexibility of parsing date-time formats.

This is a critical feature. The web is full of broken RSS dates.

@zhenlan

This comment has been minimized.

Show comment
Hide comment
@zhenlan

zhenlan Jul 24, 2017

Member

Hi everyone, I just posted our roadmap for SyndicationFeed at #2098. Any feedback is welcome!

Member

zhenlan commented Jul 24, 2017

Hi everyone, I just posted our roadmap for SyndicationFeed at #2098. Any feedback is welcome!

@RehanSaeed RehanSaeed referenced this issue Jul 25, 2017

Closed

Roadmap of SyndicationFeed #2098

4 of 5 tasks complete

@zhenlan zhenlan added SyndicationFeed and removed suggestion labels Aug 14, 2017

@BryanWilhite

This comment has been minimized.

Show comment
Hide comment
@BryanWilhite

BryanWilhite Jan 17, 2018

I extracted a simple, single-concern version of SyndicationFeed directly from System.ServiceModel.Syndication.SyndicationFeed [my source]. Now I would like to add content-negotiation support which means I will need Rss20FeedFormatter and Atom10FeedFormatter, right? Do these formatters not support async correctly? Is that why @zhenlan is blocked from proceeding? @RehanSaeed?

BryanWilhite commented Jan 17, 2018

I extracted a simple, single-concern version of SyndicationFeed directly from System.ServiceModel.Syndication.SyndicationFeed [my source]. Now I would like to add content-negotiation support which means I will need Rss20FeedFormatter and Atom10FeedFormatter, right? Do these formatters not support async correctly? Is that why @zhenlan is blocked from proceeding? @RehanSaeed?

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