软件即服务的最佳应用程序设计

时间:2011-01-26 02:16:05

标签: c# database-design asp.net-mvc-3 application-design saas

使用ASP.NET MVC3 C#和MS SQL 2008

我正在开发一个Software As Service网站。这是汽车经销商的汽车库存应用程序。我对网站的架构有一些想法,但想要第二个意见。

每个经销商将仅限于布局,但可以上传徽标并选择一些颜色主题。

起初我想为每个经销商创建单独的网站,但升级将是一场噩梦。

所以我的想法是,一个主要站点根据主机名动态更改。 即。因此,如果输入miamicars.carinventory.com,他们会看到他们的配色方案和徽标。

我会为用户和公司设置设置一个主数据库,但每个站点都有一个单独的数据库,其中包含大量数据(汽车库存等)。这样我就可以单独备份和处理每个站点的数据,但是应用程序的主要代码可以放在一个地方。

此外,每家公司都有一个目录来存储他们各自的图像。

欢迎任何反馈。

由于

3 个答案:

答案 0 :(得分:2)

考虑到这些是多家公司,我建议您查看multi-tenant designs。我知道它看起来更复杂但它可以帮助您随着成长而干净地增长应用程序。这是另一篇关于ASP.NET MVC非常有趣的博客文章。这是MSDN中另一个有趣的内容。

总而言之,如果您考虑从多租户开始并在此基础上发展它,那就更好了。特别是如果你要使用Azure,它可能是使其可扩展的唯一方法。

HTH

答案 1 :(得分:1)

从数据库的角度来看,我有这些选择。然后,我再也没有在实现过程中编写多租户应用程序和gremlins表面。

1.为所有租户提供单个数据库(群集)。

设置单个数据库,将来使用主/副本群集。所有租户共享网站,数据分离在数据本身。

  • 简化应用程序物理方面的管理。

  • 简化编码。

  • Hamper可扩展性。

  • 妨碍表现(略)。

2.每个租户都有一个数据库。

每个租户都可以在不同的数据库服务器上获取数据库。

  • 推出新网站更加痛苦。

  • 比较简单,因为数据会自然分区。租户A通常不需要访问租户B的数据。除非您尝试编写某种聚合报告,否则您将编写难看的分片代码。

  • 良好的可扩展性。如果租户可以消耗足够的资源,您可以为他们提供相当高端的专用硬件。

就Web服务器而言,我会考虑使用带有memcached或类似功能的自定义SessionProvider,并将服务器本身仅用作不保持状态的处理器。

答案 2 :(得分:1)

关于数据库你有没有想过使用NoSql数据库?

我目前正在撰写一个非常庞大的网络应用程序,其中包含大量数据(TB数据)并使用MongoDb。

以下是一些选项:

  • MongoDb - 非常容易设置 并使用。超级容易扩展,可以 做一些非常高级的查询。具有 驱动程序的大量语言 包括.Net。
  • Cassandra - 由facebook使用。 可以无限扩展。不那么富有 一个查询设置为Mongo和我 听说难以设置但没有 体验它。
  • HBase - 建立在...之上 Hadoop的。由雅虎使用,打开 通过Apache来源。再多一点 复杂

关于其他东西ASP.NET MVC是我使用的。非常容易部署,并且可以快速编写代码。