2009-07-20 38 views
4

什么是共享同一服务器上的多个Web应用程序之间的bin文件夹和dll和其他资源文件(如CSS)的最佳实践?共享代码的多个Asp.Net在工程中

我已经将通用代码分离到了它们自己的程序集中,但我想知道部署等。我基本上想要将所有常见文件都放在Web服务器上的一个位置,然后让每个Web应用程序引用该常见位置。

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

如果这有什么差别,这些都是ASP.NET MVC应用程序。

感谢您的帮助。

+0

请不要再问同样的问题,因为你没有得到你想要的答案:http://stackoverflow.com/questions/1155655/asp-net-deployment-how-to-share-bin-跨多的web应用项目。 – 2009-07-20 21:16:41

回答

1

最佳做法建议您不要。

每个应用程序是不同的,这样对待他们。通过共享资源,您可以在项目之间创建隐式依赖关系 - 如果您更改共享资源,则您将全部更改它 - 无论是否有意。

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


Xanadont,共享公共图书馆等是罚款(实际上,这就是开源项目如NHibernate的做),但在分格共享文件夹在生产服务器上水平做这个创造更多的问题比它解决。通过在源代码控制内创建独立项目的共享库,并在某处维护二进制版本,可以最好地处理您正在讨论的重用类型。项目希望使用共享库,然后通过复制二进制到解决方案的源代码树的lib文件夹,且引用该二进制采取对共享库二进制依赖。这样就可以维护和更新共享库,而不会由于直接依赖它们而导致副作用,并且使用这些库的解决方案可以评估修订/更新以确定它们将如何影响依赖于它们的代码,以及升级是值得的。


斯科特,你指的是1应用与视图层(模板)的变化,不是50应用与在业务逻辑变化。这种应用程序的最佳方法是多租户(因为我假设每个城市也有一个数据库),并使用url定义一个上下文,从中可以访问数据库并解析视图路径(很难描述没有更好地理解你的应用程序体系结构的更好方法)根据网址

更改视图可以通过实施情境感知视图引擎来完成(见http://www.coderjournal.com/2009/05/creating-your-first-mvc-viewengine/对于如何做到这一点的例子。

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

+3

我不同意。共享通用功能和资源是代码库背后的全部理念。这就是为什么你有.Net平台的原因 - 很多常用功能都很好地捆绑在框架中。为什么不把这个想法扩展到你的组织的通用功能?考虑插入安全漏洞的情况 - 在“共享资源”环境中执行此操作,并在一个位置处理所有事情。否则,您可能会意外地忘记了您的某个网站的更新,现在您遇到了问题。在最坏的情况下,这可能是非常危险的。 – xanadont 2009-07-20 04:56:47

0

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