【问题标题】:What is the best way to store files in a (asp.net + wcf) web application在(asp.net + wcf)Web 应用程序中存储文件的最佳方式是什么
【发布时间】:2010-07-29 09:12:40
【问题描述】:

我正在创建一个使用 asp.net 和 WCF 作为 3 层架构的 Web 应用程序,它主要看起来像一个社交网站。用户可以在系统上注册,他们可以上传他们的个人资料图片、文档、视频剪辑等。那么,我想知道存储这些文件的最佳方式是什么?在 wcf 端还是 web 应用端?

我还想知道,如果我选择 Web 应用程序端将这些文件存储为一组文件夹,它如何使这些文件夹共享并允许访问另一个不同的项目(例如桌面客户端需要将文件上传到共享文件夹)?

提前谢谢大家。

【问题讨论】:

    标签: asp.net wcf file-upload


    【解决方案1】:

    我觉得这个问题最好这样问:

    • 保存在 Web 应用程序的文件夹中或附近,并将元数据存储在数据库中
    • 通过 WCF 从数据库中获取保存的图像

    第二种方法可能会相当慢。通过服务获取信息,对其进行转换,使用具有正确 mime 类型的 httphandler 将二进制流输出到浏览器...

    大多数架构在中间进行了缩减:将图像保存在 UI 层附近或在 UI 层中,并将有关它们的元数据存储在数据库中。检索这些信息主要是一堆很容易检索的字符串。

    更新新问题:

    由于 winforms 应用程序/其他项目不在您最初的问题中,这偏离了一些新的东西。在这种情况下,您会遇到以下一些情况:

    • 使用 WCF 层作为公共基础,并将图像存储在该服务后面。正如我所说,将字节数组拉过来将是额外的。
    • 将图像存储在 Web UI 层并使用服务(asmx 或 WCF 之一)将图像公开给您的 winforms 客户端。
    • 在运行 web ui 和图像所在的服务器上为 winforms 客户端创建一个共享。当然,请务必尊重安全性和可能的​​黑客攻击。

    这取决于最常用的场景。我的假设是 web ui 层将主要用于图像处理,而 winform 将用于图像处理?如果是这样,还有 ASP.NET 第三方控件可用于此类操作,因此对 winforms 客户端的需求将会减少。

    【讨论】:

    • ok thx。我也认为第一种方法最适合我的应用程序。正如我在第二个问题中提到的,假设有一个桌面客户端将文件上传到该 Web 应用程序?我如何访问那些靠近 UI 层(Web 应用程序)的文件夹?
    • 如果你有一个新问题,我建议你开始一个新线程。小问题更有可能得到体面的答案。
    • 好的,我会去找新的线程。请查看stackoverflow.com/questions/3362341/…
    【解决方案2】:

    这取决于你期望这东西有多大。

    如果这是为了更广泛的互联网,并且您希望它变得更大,那么将它放在网络服务器上将很难通过向您的网络农场添加新的网络服务器来扩展您的应用程序。

    一种方法是将物理文件上传到网络服务器,以便用户快速上传,然后有一个由上传触发的协调器后台服务,可能使用 FileWatcher。该服务会将文件传播到网络场中的所有节点,以便后续对其他节点的请求会找到该文件。

    如果是只供公司内部使用的小型应用程序,在网络服务器上是可以的,条件如下:

    • 您可以完全控制托管服务器,以便设置适当的文件夹权限。
    • 您编写文件保存和检索代码的方式是可以将其移至较低层而不会带来太多痛苦。通过接口完成并注入实现

    【讨论】:

    • 好的,谢谢。这个应用程序将托管在网络服务器中,任何用户都可以通过互联网访问它。问题是,如果我将它保存在 WCF 层(业务层)上,那么我必须一直调用 WCF 服务来检索文件。我认为这将是一项痛苦的任务。如果我可以像 XIII 所说的那样使用 WCF 服务将文件保存在 UI 层中并在数据层中保存文件 url,那就更好了。
    • 是的,出于性能原因,这是一种很好的方法,但是您需要考虑是否拥有超过 1 个 Web 服务器。您将需要某种方式在多个网络服务器之间共享文件。这就是为什么我建议与负责协调这些文件的单独服务组合。
    • 是的,如果我有多个 Web 服务器,这很有用。但我认为没有机会在不止一台服务器上托管这个应用程序。所以,我认为 XIII 解决方案适合我。
    猜你喜欢
    • 2018-11-29
    • 1970-01-01
    • 2023-03-12
    • 2013-05-29
    • 2012-07-26
    • 2016-09-29
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    相关资源
    最近更新 更多