4

在同一台服务器上的多个 Web 应用程序之间共享 bin 文件夹和 dll 以及其他资源文件(如 css)的最佳做法是什么?

我已经将公共代码分离到他们自己的程序集中,但我想知道部署等。我基本上希望所有公共文件都位于网络服务器上的一个位置,然后让每个网络应用程序引用该公共文件地点。

目前我不确定如何告诉 Asp.net 网站使用来自不同位置的 bin 文件夹。

如果有什么不同的话,这些都是 ASP.NET MVC 应用程序。

谢谢你的帮助。

4

3 回答 3

0

mklink - http://technet.microsoft.com/en-us/library/cc753194%28WS.10%29.aspx

另外,请在 ServerFault 上查看此问题 - https://serverfault.com/questions/7109/how-do-i-create-a-symbolic-link-in-windows

于 2009-07-20T01:55:07.787 回答
0

最佳实践建议您不要这样做。

每个应用程序都是不同的,请这样对待它们。通过共享资源,您可以在项目之间创建隐含的依赖关系——如果您更改共享资源,您正在为所有人更改它——无论它是否有意。

如果您确实必须共享资源,请在源代码控制或构建级别进行 - 在该级别打破依赖关系比在生产服务器上部署依赖关系后打破依赖关系容易得多。


Xanadont,共享公共库等很好(这基本上是像 nHibernate 这样的开源项目所做的),但是在生产服务器上的 bin 共享文件夹级别这样做会产生比它解决的问题更多的问题。您正在谈论的那种重用最好通过创建共享库来实现,这些共享库是源代码控制中的独立项目,并在某处维护二进制版本。希望使用共享库的项目然后采用二进制依赖项通过将二进制文件复制到解决方案源树的 lib 文件夹并引用该二进制文件,在共享库上。这允许维护和更新共享库而不会由于直接依赖于它们而导致副作用,并且使用这些库的解决方案可以评估修复/更新以确定它们将如何影响依赖它们的代码以及是否升级是值得的。


Scott,您指的是1 个在视图层(模板)中具有变化的应用程序,而不是 50 个在业务逻辑中具有变化的应用程序。这种应用程序的最佳方法是多租户(因为我假设每个城市也有 1 个数据库)并使用 url 定义一个上下文,您可以从中访问您的数据库并解析您的视图路径(难以描述更好的方法,而无需更好地了解您的应用程序架构)。

可以通过实现上下文感知视图引擎来更改基于 url 的视图(有关如何执行此操作的示例,请参见http://www.coderjournal.com/2009/05/creating-your-first-mvc-viewengine/ .

使用这种方法,您只需要使用修复程序更新一个位置,但您只需添加一组新模板和(取决于您如何设置路由)即可轻松地为另一个城市创建一个新“站点” ) 将新域指向您的站点。如果您有一组默认模板,如果自定义不存在,您的视图引擎甚至可以回退到这些模板,因此允许您通过将新域指向您的应用程序来设置新站点。

于 2009-07-20T03:59:48.487 回答
0

我使用以下技术:我有多个带有 ascx 控件、资源等的 ASP.net 应用程序项目......我已经实现了虚拟路径提供程序来解析这些应用程序之间的虚拟路径。它工作得很好。我还实现了特殊的 http 处理程序以使文件可下载。如果您需要示例,请查看liveui源代码。

于 2009-08-22T17:00:26.517 回答