2

我正在使用 MVC4 在 .NET 中创建业务应用程序。该应用程序将被多个企业客户使用,每个客户都拥有自己的品牌元素(包括样式表和徽标图像)。UI 为后端平台调用 Web 服务,以填充应用程序的各个区域;调用这些 Web 服务时必须提供客户特定的参数。

我的目标是部署应用程序的单个实例,同时使应用程序根据 URL 本身的一部分动态加载适当的品牌方案和 Web 服务参数。该应用程序将是一个面向公众的消费者应用程序(由我的组织代表公司客户托管),因此 URL 必须易于记忆(因此不依赖查询字符串参数进行访问),例如https://mysite .com/公司名

目的是为产品提供单一的代码库和功能集(使产品比为每个企业客户进行多个不同的部署更容易支持),同时支持有限程度的品牌。我可以进行少量手动操作设置(例如为每个客户创建一个新的 app.config、web.config 或虚拟目录)。

任何人都可以推荐实施此类应用程序的建议方法或最佳实践吗?请注意,如果必须解析 URL 结构,我需要确保可以在开发、QA 和暂存环境中正确复制该结构。

我当前的方法需要将应用程序不同地部署到不同的客户特定环境,自定义品牌和 Web 服务参数在 web.config 文件中被称为“appsettings”键,每个客户都不同。这对于少量部署来说是可以的,但随着功能升级/错误修复推送对于数十或数百个客户站点变得必要,这将变得笨拙。谢谢!

4

2 回答 2

1

最简单的解决方案是对大部分内容使用动态样式表。这里有一个很好的例子Dynamic CSS for ASP.NET MVC? 和一个完整的源代码示例http://www.codeproject.com/Articles/171695/Dynamic-CSS-using-Razor-Engine

剩下的就是细节。您需要从 url(或 cookie - 用于在 dev/qa 中测试它)中解析公司标识符。您需要从存储、数据库或配置文件中提取适合您的客户特定值。一件不相关的事情要考虑。https://mysite.com/companyname。如果公司改名怎么办?您可能想要一个用户友好但隐秘的技术网址,例如https://mysite.com/companyname/590。您可以显示用户友好名称,但在您的代码中忽略它,只使用公司 ID。然后,如果公司更改名称,没什么大不了的 - https://mysite.com/somethingElse/590

于 2012-07-16T13:56:08.217 回答
0

实现此目的的一种方法是创建一个目录结构,其中每个客户都有一个文件夹。然后在每个文件夹中都有自己的客户特定文件,例如 css、模板、品牌等。您还可以有一个在应用程序开始时应用的共享/公共文件夹,该文件夹在所有客户之间共享。

然后,您需要从 URL 中提取的唯一内容是客户端的名称(如果可能的话)。这将决定加载和应用哪个文件夹及其内容。

于 2012-07-16T14:44:21.590 回答