C# RSS客户端的设计注意事项

C# RSS客户端的设计注意事项,c#,rss,rss-reader,websub,C#,Rss,Rss Reader,Websub,我需要使用c开发一个RSS客户端,我想知道任何RSS客户端如何存储用户阅读的内容。 简单的答案是存储每个url的所有提要,并标记用户是否阅读它。 因此,我需要知道其他RSS客户端如何管理提要状态,以避免用户读取提要或不读取提要。他们是否存储来自所有URL的所有提要 另外,我需要知道是否有任何使用pubsubhubbub协议的客户端.net库 比如说, 如果我订阅CNN提要,应用程序将加载当前的CNN提要,然后我将其读取。之后,我打开客户端,我会发现我读的所有提要都标记为已读 这意味着,客户端将存

我需要使用c开发一个RSS客户端,我想知道任何RSS客户端如何存储用户阅读的内容。 简单的答案是存储每个url的所有提要,并标记用户是否阅读它。 因此,我需要知道其他RSS客户端如何管理提要状态,以避免用户读取提要或不读取提要。他们是否存储来自所有URL的所有提要

另外,我需要知道是否有任何使用pubsubhubbub协议的客户端.net库

比如说,

如果我订阅CNN提要,应用程序将加载当前的CNN提要,然后我将其读取。之后,我打开客户端,我会发现我读的所有提要都标记为已读

这意味着,客户端将存储(例如在其数据库中)CNN提要的所有链接,并为每个链接保存其状态,无论其是否已读


我的问题是,有没有其他方法来跟踪订阅源是否已读取,而不是将所有站点的所有订阅源保存在数据库中,这将导致巨大的数据库欢迎使用StackOverflow:D

表示RSS源 您可以使用以下类型来表示提要和文章:

using System;
using System.Collections.Generic;
using System.Linq;

public abstract class RssItem
{
    public virtual bool IsRead { get; set; }

    public string Name { get; set; }

    public string Url { get; set; }
}

public class RssFeed : RssItem
{
    public List<RssFeedArticle> Articles { get; set; }

    public override bool IsRead
    {
        get { return Articles.All(s => s.IsRead); }
        set { Articles.ForEach(s => s.IsRead = true); }
    }
}

public class RssFeedArticle : RssItem
{
    public string Content { get; set; }
}
存储数据 常用的方法是将应用程序数据存储在ApplicationData文件夹或“我的文档”中

使用“我的文档”的好处是,用户通常会备份此文件夹,而不一定是ApplicationData,因为新手用户可能甚至不知道它的存在

检索应用程序文件夹的示例:

using System.IO;

private void Test()
{
    string applicationFolder = GetApplicationFolder();
}

private static string GetApplicationFolder()
{
    var applicationName = "MyCoolRssReader";
    string folderPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);

    string applicationFolder = Path.Combine(folderPath, applicationName);
    bool exists = Directory.Exists(applicationFolder);
    if (!exists)
    {
        Directory.CreateDirectory(applicationFolder);
    }

    return applicationFolder;
}
如果您更喜欢我的文档:

string folderPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
以下是Microsoft开发人员的一些解释/建议:

pubsubhubbub 有一个C语言库:


如果你对我的回答感到满意,那么别忘了接受它;如果您仍有疑问,请更新您的问题,我将尝试回答。

我说的是RSS web客户端,而不是windows。因此,我无法使用“我的文档”文件夹。我需要知道如何在任何RSS提要中跟踪读取的URL,对于Google链接,它仍在进行中,没有发布您的问题以及所有相关细节。
string folderPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);