【问题标题】:What is the best approach to dynamically rebuilding an live (MVC 3) Website动态重建实时(MVC 3)网站的最佳方法是什么
【发布时间】:2012-01-02 16:42:22
【问题描述】:

我认为我的问题与 MVC 3 网站相关并不重要,但我还是提到了它。

好的。我在 * PRODUCTION * 中有一个 subDomain MVC 3 网站,例如。 “dowork.mydomain.com”。

我正在为每个登录的客户动态创建区域。 (没有问题)。

如果客户在他的区域内,例如“dowork.mydomain.com/customer1234/”,并在他的帐户上工作,而新区域正在为加入的新客户添加到应用程序中,例如. dowork.mydomain.com/customer5678”,然后调用 MSBuild.exe 将新区域更新到实时网站,customer1234 在重建期间/之后是否会出现任何错误?

这是可行的方法,还是我最好为每个登录创建一个动态子域 (customer1234.mydomain.com) 以防止在动态创建 customer5678.mydomain.com 时出现任何错误 1234?

【问题讨论】:

  • 您是在用户登录时动态生成代码,还是在新客户注册时编写和部署代码?
  • 这不是注册,这是针对现有客户的,但为每个客户创建的区域是临时和动态的,因此 cust1234 的区域名称会更改(例如 cust1234_May102010 - 类似的东西)。我担心的是,已经在其动态和临时创建区域上的其他客户是否会在“工作/访问数据库”时遇到问题,而当其他现有客户创建了一个动态和临时区域供他们工作时,会重建整个子域。
  • 请澄清您所指的区域是用户可以访问的应用程序资源或 mvc 中的用户配置文件,您可以为用户定义路由,这些路由可以指向 ActionResults 并基于您可以将视图呈现给每个客户的业务逻辑
  • 我创建了一个名为“UpdateEmailAccount.cs”的控制器,它有一个视图和相应命名的视图模型。我将这些预装文件存储在某个地方。当我为 customer1234 创建一个新区域,并将这些罐装文件复制到他的区域,然后重建时,他继续管理他的电子邮件帐户。现在 customer5678 登录,我为他创建了一个区域并将这些罐装文件复制到他的区域,以便他可以管理他的电子邮件帐户。我必须动态重建 5678 的区域才能使用。当我这样做时,如果他在重建发生时正在工作,那么 1234 会产生任何错误吗?
  • John:你是说我应该 86 整个动态区域概念并在同一个控制器中为所有客户添加一个 custId 参数?

标签: asp.net-mvc-3 model-view-controller iis-7.5 asp.net-mvc-routing


【解决方案1】:

我仍然没有完全理解您的要求,但是重建网站会导致应用程序重新启动,这会严重影响可扩展性和性能。

当我这样做时,如果他正在工作,1234 会出现任何错误 重建期间?

1234 不应该产生任何错误,因为他们的请求应该在构建开始之前在现有的 appdomain 上完成运行,但根据文件的大小和依赖关系,您可能需要调整 @ 987654321@ maxWaitChangeNotification 和 waitChangeNotification 设置控制 appdomain 何时重新启动。

您可能需要重新考虑您是如何构建系统的,并转而依赖更灵活和动态的系统,该系统使用 URL 重写或动态路由以及共享数据驱动视图。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-08
    • 2011-02-05
    • 1970-01-01
    • 2022-08-23
    相关资源
    最近更新 更多