设计一个存储和处理文件的应用程序

1 投票
3 回答
749 浏览
提问于 2025-04-16 00:04

我现在的任务是写一个应用程序,作为文件的中央存储点(通常是文档格式),这些文件是由其他应用程序提供的。这个应用还需要接收一些指令,比如“文件395需要一个X格式的副本”,然后会把一些工作交给第三方应用去处理。现在我在想这个怎么设计比较好。

我希望设计尽量简单,所以想尽量避免使用大型的框架或者像线程这样的复杂技术,直到真的有必要的时候。

这个应用的客户端预计会是网页应用(比如,有一个是django应用,它会接收客户上传的文件;其他的还没实现)。这个应用可能会在Linux上用Python运行,除非我有很强的理由去用其他的语言。

一开始我想把我需要传达的信息放在文件名里,让我的应用通过解析文件名来判断需要做什么,但现在发现这样做太不灵活了,因为我需要提供的信息量比我想象的要多。

另一个想法是把FTP和数据库结合起来,作为一种沟通方式(客户端上传文件,然后在数据库中以表格的形式更新一个命令),但我不太喜欢这个主意,因为添加命令(这是一个已知的变化)看起来需要同时添加代码和修改数据库结构。这也会让我的客户端使用的界面变得复杂。

我还考虑过使用Pyro,让应用之间可以更直接地沟通,但我不喜欢为了这个目的再运行一个额外的名称服务器。而且我也没看到在这个框架下怎么进行文件传输。

我现在想要的是一些适合我问题的技术和/或方法。最简单的需求就是能够接受文件和与之相关的信息。

3 个回答

0

你的问题看起来很适合用一个RESTful的网页应用来解决。至于哪个框架最适合你实现这个,很多人喜欢用Django,甚至可以配合django-rest-interface来使用。还有一些人则更喜欢用轻量级的框架,关于这个你可以看看这个SO问题的讨论。另外,还有一个可能的框架没有提到,就是RIP,不过可惜的是它现在似乎没有在维护(实际上,它的SVN仓库链接也失效了),但你可以考虑从pypi下载一下源代码,看看能不能改造一下。

3

你需要了解的是一个叫做 BPEL 的东西,还有 规则引擎。这里有一份用Java写的 开源规则引擎 的列表。其他编程语言也有类似的选择,甚至还有 Python 的版本。你绝对不想自己去重新发明这个轮子。这个领域的问题会变得非常复杂,任何看似“简单”的解决方案在扩展性和性能上都会显得很幼稚,最终很快就会被淘汰。

0

你可以用比较标准的方式来实现这个功能,主要通过HTTP的PUT和GET操作。这种做法有几个好处:

  • 可以直接从内部网站链接到存储的文件
  • 测试起来很简单
  • 有很多现成的库可以帮助你实现这个功能
  • 不需要担心客户端应用程序使用什么平台

我建议你实现一个功能,让获取特定格式的文件变得很简单,比如直接访问:

http://www.myserver.com/filestore/documents/docname&format=xxx

在服务器内部,我会使用一个数据库来存储文档、文件格式和已经转换过的文件的缓存版本。当有请求需要特定格式的文档,而这个文档又不在缓存中时,我会按需调用第三方的翻译工具。

撰写回答