我有一个项目,我需要提供一个服务,我们将为它添加约500个不同网站的RSS,我们希望这项服务从这些来源收集新的RSS源,并在我的SQL Server数据库中保存标题和URL.
如何确定最佳架构设计,以及哪些代码可以帮助我?
这些指示并非特定于您的堆栈(c#
,asp.net
),但我绝对不建议您在Web应用程序的请求 - 响应周期中执行任何操作.它必须以异步方式完成,但可以从使用提要条目填充的数据库中提供结果.
您可能需要构建一个每X分钟轮询一次Feed的架构
.无论是使用cron
作业还是持续运行的守护进程,您都必须一个接一个地轮询每个feed(或者使用某种并发,但设计是相同的).请使用Etags和If-Modified 之类的HTTP标头来避免轮询尚未更新的数据.
然后,您需要自己解析Feed.你很可能必须支持 不同风格的RSS和Atom,但大多数解析器实际上都支持这两种风格.
最后,您必须存储条目,更重要的是,在插入条目之前,请确保您尚未添加它们.您应该使用the id
或guid
for条目,但是您可能也必须使用自己的系统(链接,哈希...),因为许多提要没有这些.
如果您希望减少必须执行的轮询量,同时仍保持及时的结果,则必须为支持它的源实现PubSubHubbub.
如果您不想处理之前暴露的众多问题(及时调查,解析内容,差异以保持条目的唯一性......),我建议使用Superfeedr,因为它处理所有的痛点.