C# 如何制作一个消耗大约500个RSS的web服务并将新项目保存在数据库中?

C# 如何制作一个消耗大约500个RSS的web服务并将新项目保存在数据库中?,c#,asp.net,rss,C#,Asp.net,Rss,我有一个项目,我需要做一个服务,我们将添加到它约500个不同的网站RSS,我们希望这个服务收集新的RSS源从这些来源,并保存在我的SQL Server数据库标题和URL 如何确定最佳的架构设计,以及哪些代码在这方面对我有帮助?这些指示并不特定于您的堆栈(c,asp.net),但我绝对不建议您在web应用程序的请求-响应周期中执行任何操作。它必须以异步方式完成,但结果可以从使用提要条目填充的数据库中获得 你很可能不得不这样做 构建一个您可以 每X分钟轮询一次提要。无论是使用cron作业,还是 一个

我有一个项目,我需要做一个服务,我们将添加到它约500个不同的网站RSS,我们希望这个服务收集新的RSS源从这些来源,并保存在我的SQL Server数据库标题和URL


如何确定最佳的架构设计,以及哪些代码在这方面对我有帮助?

这些指示并不特定于您的堆栈(
c
asp.net
),但我绝对不建议您在web应用程序的请求-响应周期中执行任何操作。它必须以异步方式完成,但结果可以从使用提要条目填充的数据库中获得

  • 你很可能不得不这样做 构建一个您可以 每X分钟轮询一次提要。无论是使用
    cron
    作业,还是 一个持续运行的守护进程, 你必须对每个提要进行投票 在其他之后(或以某种方式) 是并发的,但设计是 相同)。请使用 HTTP头喜欢和 如果修改以避免轮询数据 这还没有更新

  • 然后,您将需要解析 养活自己。很有可能 你必须支持的 RSS和Atom的不同风格,但大多数解析器实际上支持 两者都有

  • 最后,您必须存储 参赛作品,更重要的是之前 插入它们,确保 还没有添加它们。你 应使用
    id
    guid
    对于条目,但很可能 你必须用你自己的 系统太多(链接、散列…),因为 许多提要没有这些

  • 如果您想减少必须进行的轮询量,同时仍然保持及时的结果,那么您必须为支持它的提要实现


    如果您不想处理之前暴露的众多问题中的任何一个(及时轮询、解析内容、区分以保持条目的唯一性…),我建议使用,因为它可以处理所有的痛点

    我不打算在这里详细介绍实现或详细的体系结构(主要是因为在这个特殊时刻没有时间),但我要说:

    • 不是web服务应该使用RSS提要,它应该只负责生成异步工作
    • 出于两个原因,您不应该使用
      线程池中的线程来执行此操作。一种是,可以假定该工作或多或少地耗费时间(
      ThreadPool
      主要用于短期运行的任务),并且可能更重要的是,
      ThreadPool
      线程用于服务传入的web请求;我不想和它竞争