提供本地(Intranet)托管的MVC ASP.NET网站的策略

时间:2012-07-21 19:40:48

标签: asp.net asp.net-mvc asp.net-mvc-3 deployment

平台:ASP.NET 4.5,MVC 4,C#

我目前正在设计一个可在公共领域使用的网站。但是,我的目标市场中有一个有意义的百分比会让一些信息放在公共网站上会感到不舒服,即使它是https等。

我希望能够做的是允许企业用户使用我的网站,一种方法是允许他们在他们的内部网上托管我的网站。当然,通常的缺点是他们没有像公众那样快速更新他们的网站,而且在支持方面我也很头疼。

我的问题是

  1. 有哪些策略可以让“公司友好”的部署轻松无忧?

  2. 我是否有办法让网站只公开内部网中的数据库公开(无法看到......但是我不是技术知道所有人)

  3. 如果我别无选择,只能在本地托管 - 那么最好的方法是将开发/支持管理费用保持在最低限度?

  4. 我希望mods不会锁定它。我要求针对一个非常现实的问题采取具体的方法和技术方法。

    谢谢,

3 个答案:

答案 0 :(得分:1)

对于#1,这个问题有很多方面。一些可能有助于您思考的想法:

  1. 部署您的应用:在应用程序版本之间轻松部署和升级。尝试将其作为单个操作发生,而不是手动手动升级不同的部件。正如Darin Dimitrov所提到的,你可以研究一下像Web部署包这样的技术,特别是Visual Studio 2012将增加数据库发布(在VS2010中,数据库是非增量的,所以没有真正的“更新”故事)。保持部署成本,以便他们能够更频繁地升级(不是产品的成本,而是为了保持系统更新和运行而获得报酬的开销)。
  2. 考虑在Internet和Intranet上运行之间的差异:例如,Internet上的身份验证通常使用基于表单的身份验证来完成。在Intranet上,您可能需要考虑支持Windows身份验证,以便为企业用户提供无缝登录体验。这应该会影响您的设计,以允许在部署之间进行模块化验证。
  3. 新技术的企业采用可能比您想要的慢:您使用的是最新的和最好的(ASP.NET 4.5 / MVC4)。有些公司可能不准备现在部署这个,或者几年。考虑一下你是否可以使用较旧的,已建立的技术,例如.NET 4--已经存在了几年,它已经有所证明并且已经被采用。
  4. 对于您的第二个问题,它归结为他们的IT愿意容纳的内容。许多公司站点在安全的LAN中具有数据库,但是可以从公共Internet访问Web服务器。这当然是一个众所周知的网络设计,但根据您的应用程序涉及的资产,您的客户可能会也可能不会同意它。这是一个商业决定。

    对于#3,答案对于任何长期软件项目都是通用的。如果你想减少麻烦,它必须是高质量和可维护的。

    • 如果你只支持最后的N个版本,那就明白了。避免支持您过去已经修复过的代码。考虑提供额外的支持或经济实惠的升级,以使您的客户保持更新(并希望更好)的版本。
    • 请记住版本之间需要升级的组件。您的Web应用程序(显然),还有您的数据库架构以及您正在使用的任何依赖项或库。这与#1大致相同。确保您有一个很好的升级计划回滚。
    • 最重要的是,测试,测试,测试。进行功能回归测试和安装/升级测试,并尝试尽可能多的可能性。

答案 1 :(得分:0)

仅回答上述1)。 我会推荐一个持续集成工具。我们使用TeamCity并通过单击按钮将mvc3和mvc4应用程序部署到我们的公共站点和私有托管站点。以前,我们使用巡航控制,但现在我们对TeamCity更满意。阅读它们。可能会引导你朝着正确的方向前进。

答案 2 :(得分:0)

您可以查看Visual Studio的Web Deployment Packages。它们允许您准备可直接安装在客户端Web服务器上的软件包。