首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将GAC用于提供相同内容的多个网站-好/坏/不好?

将GAC用于提供相同内容的多个网站-好/坏/不好?
EN

Stack Overflow用户
提问于 2017-11-24 23:54:05
回答 2查看 43关注 0票数 0

我们为多个客户开发了一个网站门户,门户之间的差异非常小。2-3张图片和网站上的可用内容

如果我们将其与汽车经销门户进行比较,一个客户将展示丰田汽车,另一个客户将展示福特和沃尔沃,另一个客户将展示丰田和日产,多个网站将展示客户选择的汽车。

目前,该系统是代码的复制/粘贴版本,并根据需要对代码库进行更改。经销商品牌的图像,联系信息,以及其他小选项。

这些网站的核心功能完全相同,按品牌展示汽车,并显示新车型和二手车型。

我们正在计划重写系统,领导者希望在DLL中放置数据库调用和页面显示代码,并将其注册到GAC。

我试着说服他放弃这个计划,但他的意见被我说服了。我需要一些实质性的文档,说明为什么进行数据库调用并将代码放在注册到GAC的DLLS中不是最佳实践,或者不是最佳实践。

我创建了两个网站,使用相同的代码库,使用HostHeaders调用带有中间件的数据库,根据主机头搜索返回的数据集显示所需的数据。这种方法更容易被接受吗?

有没有人尝试过GAC的这种使用?如果是这样,您在应用程序的维护周期的后期遇到了什么问题?使用GAC的make Database调用有什么安全问题吗?

EN

回答 2

Stack Overflow用户

发布于 2017-11-25 00:25:54

解释你的情况(my )

听起来你遇到的情况是ECM (企业内容管理)。在这样的场景中,您实际上需要一个提供页面、文档、资源等服务的核心产品,并使用系统中内置的核心身份验证模型。

这样的系统将是一个单一的应用程序,支持像主题和定制这样的场景(想想wordpress,但更多的是“企业级”)。

虽然有定制,但实际上它最终是一个核心平台,所以GAC不会给你带来好处……

When should I deploy my assemblies into the GAC?

..。GAC迎合了这样一种场景:您拥有一个"Windows平台应用程序套件“,所有这些应用程序套件都共享一些不会有太大变化的通用”可靠“组件。

关于您的环境管理状况的

在你的情况下,业务会经常变化,核心内容的“版本”也会经常变化,最终的结果是你的团队必须管理GAC的高开销,随着时间的推移,随着你的扩展和配置文件地狱的到来,会有大量的GAC。

扮演魔鬼倡导者(假设我错了)

更进一步,为了完整起见,让我们假设我错了,然后你有一种情况,你正在计划的业务模型涉及每个新客户端每次都有一个“你的产品的新版本”,所以假设10年后,你有1000个客户端,这现在需要至少10台服务器,所有这些服务器都在运行这种GAC管理,并且每台服务器都托管本质上是“某些核心功能上的配置”的子集。

您的构建和部署过程使用powershell编写了大量脚本,以便在大型服务器群中替换这些基于GAC的核心组件,这需要一些人几周的工作才能开始运行,这会导致大规模中断。

当你想要“迁移到云”时,常规的"web部署“类型的场景将不会对你起作用,也不会产生更多令人头疼的问题。

通过,我确实做了一两个假设

我假设这个产品至少是基于web的,但归根结底是基于云的,管理云实例的最佳方式是将应用程序部署到容器中,而不是部署到服务器中(理想模型)。

现在你有了一个阻止你遵循理想模型的系统,你必须“解除”你对GAC的依赖,但GAC对我来说就像是.Net提供的一个遗留功能,以服务于未来的软件建模,而不是彻底改变软件建模,如今.Net核心的“常见”方法是将.Net本身的块与应用程序一起部署到任何平台上,其中许多平台可能不理解GAC的概念。

我的建议

我认为这里真正发生的是你的技术领导关心服务器上的代码复制(或程序集复制),并正在寻找一种方法,去一个地方管理给定程序集的1个副本,他们认为这是“完成工作的最简单方法”。这里的现实情况是,除非你确定这是真正需要的,否则你基本上只是增加了开发过程和任何部署的开销,每次你改变一个基于GAC的程序集,你都必须对整个机器进行回归测试,以防GAC的改变影响了一些意想不到的东西(无论你是否对每个应用程序使用该版本的程序集)。

你最终会得到大量的配置文件,这些文件指定程序集绑定重定向到你关心的所有地方的版本,而实际上更好的方法是部署一个“构建”,完成它的所有依赖项的当前构建版本,这是避免Java人员所知的"dll地狱“(从未拥有完整依赖项网络的正确版本)的一个很棒的方法。

简而言之:只需构建/购买ECM并提供一个“可插拔”模型,该模型允许您尽可能地满足您的客户需求,而无需进行任何形式的部署。

在我的例子中,我构建了一个系统,它允许通过工具或配置进行一定数量的代码生成,这些代码生成会导致已知函数树下的不同行为。

票数 2
EN

Stack Overflow用户

发布于 2017-11-25 09:05:42

固执己见:

我来自一个(“企业”)软件包的“用户”(也就是“客户端”),在过去的生活中“强迫”安装了GAC,我像瘟疫一样远离它。

  • 强迫我自己或devops管理来自微软以外的其他方的程序集...系统范围...为了那个单一的application
  • "dll地狱“所以你想要使用最新的更新GAC中的某些东西依赖于旧版本的X。
    • 反之亦然:微软更新了Y...but GACed程序集依赖于Y.

的特定版本。

  • 开发人员与IT/运营人员之间的战争随之而来的是

Hth

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47476605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档