2010-07-29 47 views
3

我创建使用asp.net & WCF为3层架构,其中大部分是看起来像一个社交网站上的Web应用程序文件的最好方法。用户可以注册系统,他们可以上传他们的个人资料图像,文件,视频剪辑等。所以,我想知道什么是存储这些文件的最佳方式?在wcf端还是web应用端?什么是存储在一个(asp.net + WCF)Web应用程序

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

谢谢大家提前。

回答

1

我认为这个问题可以更好地把这样的:

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

第二种方法很可能会相当缓慢。通过服务获取信息,进行转换,使用具有正确MIME类型的httphandler向浏览器吐出二进制流...

大多数体系结构在中间缩减:将图像保存在关闭或中UI层,并将它们的元数据存储在数据库中。检索这些信息大多只是一堆很容易检索的字符串。

更新了新的问题:

由于WinForms的应用程序/其他项目在你原来的问题没有这种偏离到新的东西。在这种情况下,您可以选择以下几种情况:

  • 使用WCF层作为公共场所并将图像存储在该服务后面。正如我所说,这将是一个额外的拉动字节数组。
  • 将图像存储在Web UI层中并使用服务(asmx或WCF之一)将图像展示给winforms客户端。
  • 为运行web ui的服务器上的winforms客户端以及映像所在的位置分享一份。当然,一定要尊重安全和可能的黑客行为。

这取决于最常用的情况是什么。我的假设是,网络用户界面层将主要使用和winforms将用于图像处理?如果是这样的话,还有ASP.NET第三方控件可用于这种操作,所以对winforms客户端的需求会减少。

+0

好的thx.我也认为第一种方法最适合我的应用程序。正如我在第二个问题中提到的那样,我们可以说有一个桌面客户端会将文件上传到该Web应用程序中?我如何访问那些接近UI层(Web应用程序)的文件夹? – 2010-07-29 11:03:59

+0

如果你有一个新的问题,我建议你开始一个新的线程。小到点问题有更多的机会得到体面的答案。 – XIII 2010-07-29 11:33:17

+0

好吧,我会去换新线程。请检查此 http://stackoverflow.com/questions/3362341/how-to-share-a-folder-in-a-asp-net-web-application-with-a-win-form-client – 2010-07-29 12:20:49

1

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

如果这是更广泛的互联网,你希望它变得很大,有它在Web服务器上会使其难以通过添加新的Web服务器到Web场扩展您的应用程序。

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

如果它是一个小的应用程序仅用于公司内部,在Web服务器上是好的,符合下列条件:

  • 你必须在托管服务器的完全控制,这样就可以建立适当的文件夹权限
  • 您可以编写自己的文件保存和检索代码,以便它可以移动到较低层而不会太痛苦。通过一个接口并注入实现
+0

好的谢谢。这个应用程序将成为网络服务器的主机,它可以通过任何用户通过互联网访问。问题是,如果我将它保存在WCF层(业务层)上,那么我一直需要调用WCF服务来检索文件。我认为这将是一个痛苦的任务。如果我可以将文件保存在UI层中并使用WCF服务保存数据层中的文件URL,那么它更好。 – 2010-07-29 11:23:44

+0

是的,出于性能考虑,这是一个好方法,但是您需要考虑是否有多个Web服务器。您将需要某种方式在多个网络服务器之间共享文件。这就是为什么我建议与负责协调这些文件的单独服务的组合。 – 2010-07-29 12:13:28

+0

是的,如果我有多个网络服务器,这很有用。但我认为没有机会在多台服务器上托管此应用程序。所以,我认为XIII解决方案适合我。 – 2010-07-29 12:28:12

相关问题