跨多个网站共享用户控件

3
我目前正在开发一个涉及三个不同网站的项目,这些网站有很多共同的功能。目前,这些共同的功能都放在一个充满用户控件的不同网站中。
问题是如何在多个网站之间共享用户控件。在SO和其他网站上搜索后,唯一的解决方案似乎是使用虚拟目录。虽然这是可行的解决方案(我们目前正在使用),但它似乎不是一个“干净”的解决方案。
有哪些关于在不同站点之间共享公共功能(包括GUI / HTML)的“最佳实践”?
例如,是否可以创建一个单独的Web应用程序项目,并将子目录(每个子目录都有自己的web.config)部署到不同的生产环境中?
3个回答

3
我已经处理这个问题有一段时间了,使用了虚拟目录和“用户控件库”两种方法,但发现它们都存在缺陷。我很惊讶微软还没有解决这个问题,将用户控件编译成可像服务器控件一样使用。
无论如何...
大多数人在尝试使用用户控件库时都希望有两个便利:
  1. 易于开发。如果我们更改了一个用户控件,我们希望只需要在一个地方进行更改。我们希望能够在正在工作的网站中编辑和调试,而不必管理多个ascx文件的副本。
  2. 易于部署。我们希望能够轻松获取和发布多个网站中的ascx文件,而不需要太多麻烦。
很遗憾,虚拟目录方法只解决了#2问题,“用户控件库”解决了#2问题和部分#1问题。使用“用户控件库”,您可以针对用户控件库源代码进行调试,但是如果在工作网站中编辑ascx,则下次构建“用户控件库”时更改将被覆盖。这类似于服务器控件的操作方式:必须在其他地方进行编辑并编译以进行更新。例外情况是必须复制“用户控件库”,而不仅仅是更新.dll引用。

解决方案?

我用来解决#1问题的方法是symlinks。在您的存储库中创建一个公共控件文件夹,并将该文件夹链接到所需的每个Web中。您对符号链接文件夹所做的任何更改都会应用于源公共控件文件夹。

为了解决#2问题,我只需将完整的网站部署并将控件复制到其适当的位置即可。您也可以轻松使用虚拟目录,而不在每个网站中推出符号链接文件夹。我倾向于避免使用虚拟目录来托管源中常见的用户控件以避免性能问题(大量的Web,大量的流量)。

希望这可以帮助您!


1

有一种solution可以通过构建由ScottGu描述的用户控件库来共享用户控件。在我看来,这个解决方案也不是很干净,因为你必须复制预编译文件才能使这个解决方案工作。

我决定使用单独的类库中的自定义Web控件来共享常见的UI功能。但也许Scott的解决方案适合你。


类库似乎是最明显的非猥琐方式来实现它。 - Darren

0

在我看來,即使它不是很干净的解決方案,使用虛擬目錄解決方案更好。這將解決許多頭痛的問題,因為您可以在不需要在每個網站部署額外文件的情況下,將其用於多個網站,如果需要更改,只需在一個位置進行即可。

希望對您有所幫助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接