多个Asp.Net项目之间的共享代码

时间:2009-07-20 01:52:42

标签: asp.net-mvc multiple-projects

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

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

目前我不知道如何告诉Asp.net网站从其他位置使用bin文件夹。

如果它有任何区别,那么这些是ASP.NET MVC应用程序。

谢谢你的帮助。

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

最佳做法是建议你不要。

每个应用程序都不同,请将它们视为不同。通过共享资源,您可以在项目之间创建隐式依赖关系 - 如果您更改共享资源,则需要更改它 - 无论是否有意。

如果你真的必须共享资源,那么在源代码控制或构建级别上执行它 - 在这个级别上破坏依赖性要比在生产服务器上部署它之后破坏依赖性要容易得多。 / p>


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


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

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

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

答案 2 :(得分:0)

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