应用程序中的复杂文件系统





5.00/5 (2投票s)
Bitcasa 拥有强大的企业级内容功能,可用于商业用途,功能强大,并且足够灵活,可以通过 API 与任何应用程序集成。
内容存储似乎是一件非常简单的事情。
不幸的是,这种假设已经导致许多个人和公司走上了内容利用不足的危险道路。当需要使内容灵活并与其他应用程序集成时,构建自己的云存储的复杂性可能会令人望而生畏。有一些内容管理解决方案旨在帮助组织解决此问题,但它们通常笨重、昂贵、难以实施且很少被采用。
现代方法是采用云解决方案,而电子文件系统的下一次演进是功能强大到可以与任何东西集成的平台。
这些解决方案拥有强大的企业级内容功能,但却认真考虑了最终用户对简化的需求。这些解决方案不仅对企业有用,而且也是现代消费者移动和 Web 应用程序的组成部分。这些解决方案拥有您无需编写的强大功能,并且足够灵活,可以通过 API 与任何应用程序集成。
Bitcasa 提供了一个这样的 API。
我使用 Bitcasa CloudFS API 的经历
Bitcasa 做了一些非常独特的事情:他们将一个面向消费者的产品变成了一个企业平台。他们将他们最擅长的内容存储变成了一个任何人都可以使用的 API,并推出了一个可以集成到任何应用程序中的文件系统平台——无论是面向消费者还是企业使用。
内容存储不仅仅是将文件序列化到驱动器。它是在文件存储之上创建适当的版本控制、管理、元数据和处置功能。这些都是您可以自己编写的东西,但如果您这样做,那将是浪费时间,而且肯定不像您想象的那么容易。
我最近有机会花时间研究了 Bitcasa CloudFS API,但在分享更多我的经验之前,我想先谈谈我的背景。
我是一名从程序员转型为企业流程自动化专家的专业人士。我在企业信息管理方面拥有深厚的背景,这很重要,因为我的企业重点以及对文件存储影响的下游流程的了解,影响了我对 Bitcasa API 功能的看法。
我用来测试 API 的应用程序是一个小型内容分发 Web 应用程序。我的目标是创建一个易于使用的发布应用程序,使您能够将单个文档发布给团队的现场工作人员和外部承包商。这是我在我的行业中曾多次面临的真实场景。
除了基本发布外,该应用程序还需要能够管理和撤回内容。了解哪个版本在野外非常重要。流程很简单:上传、发布和跟踪。
我最初希望该应用程序是 .NET 的,但只有一个 .NET SDK,它使用的是旧版本的 API。我没有时间自己创建一个,而且我也很擅长使用 PHP 进行开发,所以我决定使用更全面的 Bitcasa for PHP SDK 来编写我的应用程序。
入门有点困难,有两个原因。
- PHP SDK 有一个 bug。花了些时间才找到它,但当我们找到它时,Bitcasa 团队在两天内就修复了它,这非常令人印象深刻。
- 我需要克服的另一个小障碍是身份验证模型。文档对此非常详尽,但并未完全解释原因。我终于把所有东西都拼凑起来了,而且也更明白了,但为了节省您自己尝试时的时间,这里有两件您可能不会预料到的事情:
- 第一件事是,您只能通过 API 访问单个用户的内容。我猜这是为了保护用户内容——甚至免受供应商的影响(许多组织对云提供商都有的常见问题/疑问)。
- 第二件是如何设置用户。您有一个主账户登录,可以跟踪您的 API、存储和带宽。它还为您提供代码的端点,但不会为您提供应用程序用户。您可以创建测试用户,但对于一个功能齐全的应用程序,您需要自行负责用户管理并通过 OAuth 进行身份验证。如果您仔细想想,这是有道理的。如果您正在构建一个应用程序,您已经有了用户,出于安全原因,您希望对这些用户进行身份验证。
一旦我理解了这些要点并开始着手,其他一切都进行得相当快。
我的应用程序基本上由一个上传表单和一个上传完成后“发送到位置”组成。上传后,文件会发送到登录用户的存储位置。会创建一个共享,我将获得一个缩短的 URL,用于发布给外部用户。该应用程序还会跟踪版本更新,并始终向用户提供最新版本。它还可以撤回版本。
观察和建议
以下是我在使用 Bitcasa CloudFS API 时发现的一些关键点。
- 一旦我理解了所有内容,代码就相当直观了,尽管有些术语是 Bitcasa 特有的,我不得不学习。例如,“端点”并不是我所期望的那样。
- 共享是一项非常重要且很棒的功能,我肯定不想自己编写。由于对于大量文档,链接和共享/文件位置可能会迅速失控,因此创建共享、删除共享以及拥有直接 URL 的能力非常棒。
- 版本控制非常棒。版本控制是组织并不总是认真对待的事情。但在这种发布场景中,发布错误版本会带来法律风险。我也喜欢 API 处理版本冲突。但是,版本控制有几种可以改进的方式(我将在下面概述)。
- Bitcasa 提供回收站是一个很大的好处。对我来说,回收站不仅仅是一个可以扔掉东西并避免“哎呀”时刻的容器。它是一个保留工具。例如,在我的应用程序中,撤回功能实际上是将该文档版本放入回收站,这有助于在文档被撤回后避免重复。然后我可以丢弃版本,并保留 30、60 或 90 天的保留期。
- PHP SDK 仍需改进。一些功能的实现,例如版本控制,并不完全符合预期。
以下是我希望在未来版本中看到的一些内容:
- 自定义元数据值。API 具有元数据功能,但我希望进一步扩展它,添加术语、函数等。目前的工作方式是,如果我需要为我的应用程序存储这些信息,我就必须将其存储在单独的地方。
- 至少在早期,我希望高级账户能够创建测试用户,并且能够轻松导航和查看测试用户账户的文件系统。对我来说,这比假设我的代码有 bug 或检查存储使用情况并进行计算更快地进行验证。
- 能够锁定文档将非常棒,这样就无法添加新版本。即使是单个用户拥有文档,并且不希望不小心用未经批准的版本取代已批准的版本。
- 最好有一种方法可以全局清除版本历史记录。有一个功能可以限制版本深度。这需要更多的代码,而且我不喜欢限制版本。但这仍然是比清除更好的替代方案。
- 分析。我很想看看谁访问了文件以及在哪里等。这似乎与 API 当前的信息架构不太契合,但确实会很棒。在这种情况下,这会很有帮助,比如我可能想阻止来自某些地区的共享访问等。
摘要
我当然可以将这个应用程序做得更好。如果消费端是移动应用程序而不是 Web 应用程序,它会更加强大。用例可能是现场指南或合作伙伴的定价表。
我的应用程序高度面向业务,但不需要太多想象力就能想象出面向消费者的生产力应用程序,例如家庭食谱应用程序、家庭关键文件应用程序,或者基本上任何需要存储文档并与家人共享的用例。
虽然我花了一些时间才开始,但付出的努力与我创建自己的云文件系统所需的时间相比微不足道。创建共享和版本控制等功能,同时维护和创建后端以确保其可扩展、稳定和安全,将需要巨大的努力。
Bitcasa 已经以巨大的规模为我完成了所有这些工作,并将其变成了一个功能齐全的企业级平台。我对它将如何为更强大的内容驱动型应用程序打开大门感到非常兴奋。但不要只听我说的;亲自尝试 Bitcasa CloudFS API。