从零开始用C#做产品:私人日记(16)内容管理设计(从零开始用成语怎么说)

通过前面的教程中,我们基本实现了分类管理功能。分类的目的是为了能将内容归类,接下来我们开始本项目的重点:内容管理的设计。

首先我要声明一下,我做这款私人日记的软件产品第一主要目的是为了做自媒体教学而设定的项目,并非是一个真正的产品立项,至于以后能不能成为一个真正的软件产品我现在也说不好,基本功能完成之后再看它后续的扩展吧。之所以选择这个方向,就因为它是一个比较大众化的需求,没有专业门槛,大家比较容易理解和接受。

当然我做事情从来都不会只考虑一点,这个项目也并非绝对没有它的市场。

我之所以选它的有三个主要原因:

一是安全性的考虑。我自己的一些信息,比如工作上的想法和计划、要做的项目和任务、一些常用但又很难记忆的各种代码、每个月的收支流水、各种账号密码,或者是一些仅仅写给自己看的话,我现在很多都是以文件方式保存在硬盘的。这些敏感的内容我不大放心使用第三方开发的软件,个人或不出名的小公司肯定信不过,他们想要获取你的数据太容易了;大点公司的产品如OneNote、网易云笔记等,他们的可信度还是比较高的,但他们用的都是公有云,不管他们的安全性如何高,理论上都是存在泄露的可能性的,程序员、数据库管理员想偷偷弄点数据太容易了,万一像酒店数据那样被泄露,后果不敢想象。所以仅就这一个安全性,就足以让我不大敢用这些软件,我相信很多人会有跟我一样的感受。说到这里,有人会说,那按你的逻辑,你开发的这个软件也就只有你自己敢用了,别人也同样不敢用你的软件。是的,所以,这个项目我选择了开源,源码是公开的,如果信不过,完全可以把代码复制下来自己编译。所以在单机私人日记这个软件产品上,就天生有了它的优势。

当然权限上是安全了,但硬件上却不安全了,单机软件最怕的就是哪天硬盘突然挂了。其实也有很多解决方案:

  • 自动备份到其他网络存储设备;
  • 自建svn服务器,安装客户端进行同步;
  • 程序中提供插件,支持oss、git、云盘等接口;

二是便利性的考虑。基于第一点安全性的考虑,这里貌似就只能跟Windows资源管理器的功能相比了,其他软件功能再多我也信不过。首先Windows资源管理器完全依赖其他的应用,比如我只想写点文字和配图,但我貌似必须得额外装个软件,Word或WPS;我可能有几十个私人的文档,为了防止他人复制查阅,我每个文档都要额外加密;随着其他软件的安装,附加了很多其他的功能,比如在一个文件上鼠标右键弹出框的长度就一屏从上到下了。其他还有很多,就不一一列举了。

三是扩展性的考虑。比如我现在写教程是类似这样:

从零开始用C#做产品:私人日记(16)内容管理设计(从零开始用成语怎么说)

按章节建好目录,然后每个目录中再创建一个doc文档和若干gif图,再把图粘到文档中,等要发布头条了,先打开wps中复制文字,然后再一张张的粘贴图片,整个过程也挺繁琐的。如果某天我的自媒体做成了,这种工作变成了我的日常,那完全可以把这个功能做到我这个软件中,直接就在软件中创建目录,跟写书一样,写好之后有个按钮,同步到头条,甚至是其他创作平台。

总之一句话,有现实需求,且现有产品存在不足,那就自行研发,想喜欢只要用c#,还有什么是做不到的呢?

以上,就是目前阶段我对此项目的认识。另外,再看下同类软件的最大不足,结合自身产品的定位,对完善自身产品也是相对有好处的。

比如微软OneNote的在应用商店的评价,我觉得就相当具有参考意义。如下两图:

从零开始用C#做产品:私人日记(16)内容管理设计(从零开始用成语怎么说)

此图充分说明了OneNote的立意是网络存储,因为只有这样才符合软件开发商的利益,不用云就做不到控制用户。而我们这个项目定位就是单机软件本地存储。最多的认同人数也重复说明了有广泛的需求。

从零开始用C#做产品:私人日记(16)内容管理设计(从零开始用成语怎么说)

这个是说字体的,这对我们的这个项目来说是很容易解决的。这就是大公司产品的弊端,做决策不是一个人说的算的。

以上,仅仅是介绍一个方法给大家,相比你的竞争对手,你的软件产品的核心功能有哪些优势,这个你自己要非常清楚。所以,大家在做软件产品选型的时候要多动脑思考,并不是一类软件产品已经有人做了你就没机会了,只要其他产品某个方面有缺陷,而你的产品恰好可以弥补,那你的产品就会有市场。另外,很多软件市场容量太小,大公司是不愿涉足的,假设一个小众软件,市场容量一年只有100万,别说大公司,就是几个人的小公司或许都没兴趣,但对个人开发者来说,已经足够了养活一家人了。

以上都是方向性的考虑,经过上述的分析,我觉得这个项目还是能看到一点前景的,即便是没做成,至少也可以给我自己以后的工作提升效率。既然方向再次明确,就继续动手。

具体到编码,这次就不考虑演示效果了。按正常的套路来,先做Model数据抽象,如下代码:

Model.Content类

namespace Diary.Model{public class Content{public int Id { get; set; }/// <summary>/// 标题/// </summary>public string Title { get; set; }/// <summary>/// 副标题/// </summary>public string SubTitle;/// <summary>/// 内容类型:不同类型可以有不同的表现形式甚至编辑器,比如代码、任务列表等/// </summary>public string Type;/// <summary>/// 摘要/// </summary>public string Summary;/// <summary>/// 内容/// </summary>public string MainBody;/// <summary>/// 所属分类/// </summary>public int CategoryId;/// <summary>/// 创建时间/// </summary>public DateTime CreateTime;/// <summary>/// 真实时间(指示内容对应的真实时间,比如日记内容是9.14,首次提交时间是9.15,最后修改时间是9.20)/// </summary>public DateTime RealTime;/// <summary>/// 最后修改时间/// </summary>public DateTime ModifyTime;/// <summary>/// 描述/// </summary>public string Description;/// <summary>/// 备注/// </summary>public string Remark;/// <summary>/// Tags:与Tag表多对多的关系,基于ContentTagMap表进行映射/// </summary>public List<Model.Tag> Tags;}}

Model.Tag类

namespace Diary.Model{/// <summary>/// 内容标签类/// </summary>public class Tag{public int Id { get; set; } /// <summary>/// 名称/// </summary>public string Name { get; set; }}}

需要特别说明的是Model.Content类中的CategoryId和Tags:

CategoryId是文章的所属类别,从文章管理上看Content和Category是一对多的关系,每篇文章只能用一个分类,每个分类下可以有多篇文章,所以我们需要在Category类中添加一个CategoryId的变量用来定义这种关系,数据库的字段设计也跟类是相同的。

Tags是文章标签,同样的一篇文章可以展现出不同的内容属性,比如本节教程就可以有:教程、c#编程、自媒体、技术文章等等很多不同的内容属性,我们把这个称为标签。反过来,通过每个标签也可以查阅到很多相关的文章。这种不同于CategoryId,这种是多对多的关系,数据库的字段设计跟类就不大一样了。数据库需要用3个表才能准确表达出这种关系:

  • Content用来存储文章内容;
  • Tag用来存储Tag内容;
  • ContentTagMap用来存储Content与Tag之间的关系。

以下为这3个表的数据库结构图:

从零开始用C#做产品:私人日记(16)内容管理设计(从零开始用成语怎么说)

Content表

从零开始用C#做产品:私人日记(16)内容管理设计(从零开始用成语怎么说)

Tag表

从零开始用C#做产品:私人日记(16)内容管理设计(从零开始用成语怎么说)

ContentTag映射表

鉴于之前的教程都有描述,操作步骤就直接跳过了:)同学们可以自行尝试,有不清楚的可以翻看之前的教程。

—————————————————-

本教程尽量保证2天一更,项目源码已作为开源项目加入到Gitee,代码内容会随教程实时更新,大家有兴趣的话可以关注我,以获得最及时的更新。私信:

私人日记 可以获取Gitee的链接;

sqlitestudio 可以获取sqlitestudio的链接;

菜鸟 可以获取菜鸟教程链接;

大家阅读过程中有哪些看不懂或未尽兴的地方,可以在评论区留言,我会先记下来在后续的教程中找机会再说。

教程有帮助的话请大家帮忙关注、转发、扩散,能不能开专栏还需要你们的支持!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022年6月3日 上午10:40
下一篇 2022年6月3日 上午10:42

相关推荐

  • 青岛市北区即墨路街道:“党建引领、三网聚力”,搭建“纳米网格”提升党员常态化管理水平

    人民网-山东频道 人民网青岛4月20日电 为全面推进党建引领基层治理和发展工作,夯实网格“前沿阵地”,青岛市北区即墨路街道精耕“网格化管理”,进一步提升党组织凝聚力和党员常态化管理…

    科研百科 2024年7月5日
    84
  • 生产计划进度软件

    生产计划进度软件 生产计划进度软件是一种用于帮助管理人员跟踪和管理生产过程的软件。它可以帮助公司或工厂制定生产计划,并跟踪生产进度,确保生产计划能够按时完成。 生产计划进度软件通常…

    科研百科 2024年8月15日
    45
  • 常见的项目需求管理问题(必看的解决方案)(项目管理需求常见的方法)

    几乎所有项目都在一定程度上存在需求挑战,但有些项目比其他项目更严峻。如果您的项目需要满足不同的用户组,并且项目需求对您来说不是很清楚,那么您最好将其视为基于需求的项目来管理。 如果…

    2022年5月29日
    373
  • 成本管理的主要内容包括有哪些?(成本管理具体包括哪些内容)

    成本管理的内容包括哪些? 成本管理的内容主要包括成本预测、成本决策、成本计划、成本控制、成本核算、成本分析和成本考核等。成本预测是根据有关的成本资料及其他资料,通过一定的程序、方法…

    科研百科 2022年7月24日
    322
  • 工程视野下的脑计划及其伦理问题思考

    摘 要: 首先从工程哲学角度,剖析了作为一项生物医药工程的脑计划的特点,即科学性、系统性和多方合作,进而比较了神经科学技术和脑计划的区别与联系。其次,在国家层面比较了各国脑计划的目…

    科研百科 2022年7月11日
    532
  • 专家评审会流程及内容

    专家评审会流程及注意事项 专家评审会是一种常见的评审方式,用于对项目或产品进行质量评估。在专家评审会中,专家通过提出问题、提供建议和评估结果,来评估项目或产品的质量。以下是专家评审…

    科研百科 2024年10月4日
    85
  • java做管理系统项目

    Java作为一种流行的编程语言,已经成为了许多企业和个人管理系统项目的首选语言。本文将介绍如何使用Java开发一个基本的管理系统项目。 一、项目概述 管理系统项目是一种用于创建和管…

    科研百科 2024年12月25日
    0
  • 美容院软件管理系统哪家好?(美容院门店管理软件)

    美容院门店管理软件 随着现代美容行业的快速发展,传统的手工操作已经无法满足客户的需求。因此,一款功能强大的美容院门店管理软件变得非常重要。它不仅可以帮助门店管理人员更好地管理门店运…

    科研百科 2024年6月8日
    103
  • 项目进度控制软件

    项目进度控制软件 随着项目数量的不断增加,如何有效地管理项目进度成为了一个新的挑战。传统的手动进度跟踪方法已经无法满足现代项目的需求,因此项目进度控制软件已经成为了一种必要的工具。…

    科研百科 2024年9月4日
    34
  • 福建科研项目咨询

    福建科研项目咨询 随着科技的不断发展,福建科研项目咨询越来越受到人们的关注。作为一家专业的科技咨询公司,我们致力于为客户提供最优质的科研项目咨询服务。 我们拥有丰富的咨询经验和专业…

    科研百科 2025年2月2日
    0