目前,我们在gac中注册了c#对象,我们用它来输出html / string作为我们Web应用程序的常用菜单。
gac注册对象的好处是我们可以更新gac对象,并且引用它的所有应用程序都可以非常有效地获得更新。 html菜单在公共位置引用了一些js和css资源。
c#对象确实根据服务器/环境等执行某些逻辑。
除了GAC对象之外是否还有其他替代方法可以执行类似的功能。
我曾考虑过从另一个项目/控制器引用mvc视图,但是存在延迟问题(即菜单是在页面的其余部分之后呈现的)。我觉得它在页面的一部分呈现时效果最好。
其他想法/想法/选项?
答案 0 :(得分:2)
我相信您可以使用web.config手动指示每个站点在公共位置查找特定程序集:
http://msdn.microsoft.com/en-us/library/4191fzwb(v=vs.90).aspx
来自文章:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="myAssembly"
publicKeyToken="32ab4ba45e0a69a1"
culture="en-us" />
<codeBase version="2.0.0.0"
href="http://www.litwareinc.com/myAssembly.dll"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
或者,您可以设置“探测”来搜索整个目录中的公共库(也可以从文章中):
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin;bin2\subbin;bin3"/>
</assemblyBinding>
</runtime>
</configuration>
答案 1 :(得分:1)
十年来我从未使用过GAC,虽然我通过TeamCity设置了一个内部NuGet服务器,并且当我的共享库更新时让CI完成所有重建,我不会在这里使用它,我不会这样做。我想。
我的直觉是为这种东西构建一个小的Web服务,让其他服务器以可扩展的形式(JSON / XML)发送他们的数据/状态,即基于服务器/环境的逻辑所需的数据,并让Web服务执行逻辑并发送回模型中的数据以转换为HTML或HTML本身。
添加一些缓存控制标头,然后在我想要更改行为时更新Web服务逻辑。
修改强>
我记得Martin Fowler在博客中谈到了这种方法。
http://martinfowler.com/articles/microservices.html
所以这就是我几年来的工作方式。当然我们在DLL中有编程逻辑,但对于业务逻辑而言,不是将它放在库中,我们将它放在许多小的Web API中,然后它也可以打开其他语言和mash-up,PowerShell等。
我想我所说的是一种不同的架构方法可以提供帮助。
顺便说一句,我在2008年读到的时候,我第一次听到这个消息,亚马逊的主页收集了来自&gt; 100个小型网络服务的数据。