在数字化转型的浪潮中,企业面临着如何高效管理内容的挑战。自行构建云存储系统虽然可行,但往往复杂、昂贵且难以实施。现代的解决方案倾向于采用云服务,而电子文件系统的下一步发展则是能够与任何系统无缝集成的平台。这些平台不仅具备强大的企业级内容管理功能,而且注重最终用户的使用简便性。它们不仅对企业有用,还可以作为现代消费者移动和Web应用程序的组件。它们拥有强大的功能,无需编写,而且足够灵活,可以通过API与任何应用程序集成。
Bitcasa正是提供这样一个API的公司。
Bitcasa做了一件非常独特的事情:他们将一个面向消费者的产品转变为企业平台。他们将自己对内容存储的深刻理解转化为任何人都可以使用的API,并推出了一个可以集成到任何应用程序中的文件系统平台——无论是面向消费者还是企业用户。
内容存储不仅仅是将文件序列化到驱动器。它还涉及到在文件存储之上创建适当的版本控制、管理、元数据和处置功能。这些都是可以自己编写的,但如果这样做,将是在浪费时间,而且这肯定不像想象的那么容易。
最近有机会花时间研究Bitcasa CloudFS API,但在分享更多关于经验之前,想先告诉一些关于背景。
是一名转行为企业流程自动化专家的程序员。在企业信息管理方面有深厚的背景,这很重要,因为企业重点,以及了解文件存储影响的下游流程,影响了对Bitcasa API功能的立场。
用来测试API的应用程序是一个小型的内容聚合Web应用程序。目标是创建一个易于使用的发布应用程序,使能够将单个文档发布给现场工作人员和外部承包商团队。这是在行业中多次面临的现实生活场景。
除了基本的发布功能外,应用程序还需要能够管理和撤回内容。知道发布了哪个版本非常重要。流程很简单:上传、发布和跟踪。
最初,希望应用程序是一个.NET应用程序,但只有一个.NET SDK,它使用的是API的旧版本。没有时间自己创建,而且也相当习惯于使用PHP开发,所以决定使用更全面的Bitcasa SDK for PHP来编写应用程序。
开始时有点困难,原因有两个。
PHP SDK有一个bug。找到它花了一些时间,但当找到时,Bitcasa团队在两天内就修复了它,这非常令人印象深刻。
必须克服的另一个小问题是认证模型。这方面的文档是具体的,但它并没有完全解释原因。终于把所有的东西拼凑在一起,现在它更有意义了,但为了节省时间,当自己尝试时,这里有两件事可能不会预料到:
第一件事是只能通过API访问单个用户的内容。假设这是为了保护用户内容——即使是来自供应商(许多组织对云提供商的常见问题/疑问)。
第二件事是用户设置的方式。有一个主账户登录,用于跟踪API、存储和带宽。它还为代码提供了端点,但不提供应用程序用户。可以创建测试用户,但对于一个完整的应用程序,被期望承担用户管理的责任,并通过OAuth对他们进行认证。如果考虑一下,这是有意义的。如果正在构建一个应用程序,已经有用户了,出于安全考虑,希望认证的就是这些用户。
一旦理解了这些要点并开始行动,其他一切都非常快。
应用程序基本上由一个上传表单组成,然后是上传完成后的“发送到位置”。一旦上传,文件就被发送到登录用户的存储位置。创建了一个共享,得到了一个用于发布给外部用户的缩短URL。该应用程序还跟踪版本更新,并始终为用户提供最新版本。它还有撤回版本的功能。
// 示例代码
// 假设有一个简单的上传和共享功能
function uploadFile($file) {
// 这里将文件上传到Bitcasa
}
function shareFile($fileId) {
// 创建共享并返回缩短的URL
}
在与Bitcasa CloudFS API合作时,发现了一些关键点。
一旦理解了一切,代码就相当直接了,尽管有一些Bitcasa特有的术语需要学习。例如,“端点”并不是预期的那样。
共享是一个非常重要且不错的功能,绝对不想自己编写。由于链接和共享/文件位置很快就会随着文档集的增加而失控,创建共享、删除共享以及拥有直接URL的能力是很好的。
版本控制是极好的。版本控制是组织不总是认真对待的事情。但在像这样的发布场景中,发布错误的版本是一种法律风险。也喜欢API处理版本冲突的方式。然而,版本控制有几种可以改进的方式(在下面概述)。
Bitcasa提供了一个垃圾箱,这非常好。对来说,垃圾箱不仅仅是一个存放东西以避免“哎呀”时刻的容器。它是一个保留工具。例如,在应用程序中,撤回功能实际上将该版本的文档放入了垃圾箱,这有助于避免在文档被撤回后产生重复。然后可以丢弃版本,并有30、60或90天的保留期。
PHP SDK仍然需要一些工作。一些函数的实现,如版本控制,并不完全符合预期。
以下是希望在未来版本中看到的内容:
自定义元数据值。API具有元数据功能,但想进一步扩展,添加诸如条款、功能等。按照今天的方式,如果要在应用程序中使用它,将不得不在其他地方存储。
至少在早期,希望高级账户能够创建测试用户,并能够轻松导航并查看测试用户账户的文件系统。对来说,这比假设代码中有一个bug或检查存储使用情况并做数学运算更快。
能够锁定文档将是非常有用的,这样就不会添加新版本。即使是对于拥有文档的单个用户,如果他们不想意外地用未经批准的版本替换已批准的版本,也是如此。
有一个全局清除版本历史的方式将很好。有一个功能可以限制版本深度。它需要更多的代码,不喜欢限制版本。但这仍然是清除的一个很好的替代方案。
分析。很想看看谁访问了文件以及在哪里等。这似乎与当前API的信息架构不太吻合,但肯定会很好。这将有所帮助的一个用例是,当可能想要阻止某些地区的共享访问等。
当然可以进一步开发这个应用程序。如果消费端是一个移动应用程序而不是Web应用程序,它将更加强大。用例可能是现场指南或合作伙伴的价格表。
应用程序非常专注于业务,但不需要太多想象力就可以想象出消费者生产力应用程序,如家庭食谱应用程序、家庭关键文件应用程序,或者基本上任何需要存储文档并与家庭成员共享的用例。
虽然开始时花了一段时间,但与创建自己的云文件系统所需的时间相比,这些努力根本不值一提。创建像共享和版本控制这样的功能,同时维护和创建后端以确保它是可扩展的、稳定的和安全的,将需要巨大的努力。