1

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

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

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

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

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

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

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

任何反馈都将受到欢迎。

谢谢

4

3 回答 3

2

考虑到这些是多家公司,我建议研究多租户设计。我知道它看起来更复杂,但它可以帮助您随着您的成长而干净地成长应用程序。这是另一个关于ASP.NET MVC非常有趣的博客条目。这是MSDN中另一个有趣的内容。

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

高温高压

于 2011-01-26T02:25:39.390 回答
1

我从数据库的角度来看,你有这些选项。再说一次,我在实现过程中从未编写过多租户应用程序和 gremlins 表面。

1. 为所有租户拥有一个数据库(集群)。

建立一个单一的数据库,将来有主/副本集群。所有租户共享站点,数据的分离在于数据本身。

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

  • 简化编码。

  • 阻碍可扩展性。

  • 妨碍性能(轻微)。

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

每个租户都有一个数据库,可能在不同的数据库服务器上。

  • 推出新网站更加痛苦。

  • 由于数据将自然分区,因此更易于扩展。租户 A 通常不需要访问租户 B 的数据。除非您尝试编写某种聚合报告,在这种情况下,您将编写丑陋的分片代码。

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

至于 Web 服务器,我会考虑使用带有 memcached 或类似功能的自定义 SessionProvider,并将服务器本身单独用作不保持任何状态的处理器。

于 2011-01-26T03:48:37.763 回答
1

关于数据库,您是否考虑过使用 NoSql 数据库?

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

以下是一些选项:

  • MongoDb - 非常易于设置和使用。超级容易扩展,可以做一些非常高级的查询。具有包括 .Net 在内的多种语言的驱动程序。
  • Cassandra - 由 facebook 使用。可以无限扩展。不像 Mongo 那样丰富的查询集,我听说设置起来更难,但没有经验。
  • HBase - 建立在 Hadoop 之上。由 Yahoo 使用,通过 Apache 开源。稍微复杂一点

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

于 2011-01-26T04:12:57.273 回答