在mvc站点之间共享代码的GAC替代方案

本文关键字:GAC 方案 代码 mvc 站点 之间 共享 | 更新日期: 2023-09-27 18:04:38

目前,我们在gac中注册了c#对象,我们使用它来输出html/字符串,作为我们web应用程序的公共菜单。

gac注册对象的好处是我们可以更新gac对象,并且所有引用它的应用程序都可以非常有效地获得更新。html菜单在一个公共位置引用一些js和css资源。

c#对象执行一些基于服务器/环境等的逻辑。

是否存在除GAC对象之外的其他选项来执行类似的功能。

我考虑过从另一个项目/控制器引用mvc视图,但存在延迟问题(即菜单在页面的其余部分之后呈现)。我觉得当它作为页面的一部分呈现时效果最好。

其他思想/想法/选项?

在mvc站点之间共享代码的GAC替代方案

我相信你可以使用web。配置以手动指示每个站点在公共位置查找特定的程序集:

http://msdn.microsoft.com/en-us/library/4191fzwb (v =应用程序). 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>

十年来我从未使用过GAC,尽管我通过TeamCity设置了一个内部NuGet服务器,并让CI在我的共享库更新时进行所有重建,但我不会在这里使用它,我不认为。

我的直觉是为这种东西建立一个小的web服务,并让其他服务器以可扩展的形式(JSON/XML)发送他们的数据/状态,即基于服务器/环境的逻辑所需的数据,并让web服务执行逻辑并发送回模型中的数据以转换为HTML,或HTML本身。

添加一些缓存控制头,然后当我想改变行为时,我将更新web服务逻辑。

编辑

我刚想起Martin Fowler在博客中提到过这种方法。

http://martinfowler.com/articles/microservices.html

这就是我几年来的工作方式。当然,我们在dll中有编程逻辑,但对于业务逻辑,我们不是把它放在库中,而是放在许多小的web api中,然后它也对其他语言和混搭,PowerShell等开放。

我想我说的是一种不同的架构方法可能会有所帮助。

顺便说一下,我第一次听说这个是在2008年,当时我读到亚马逊的主页收集了100个小型网络服务的数据。