每个城市的子域名网站的体系结构

时间:2014-01-29 17:18:53

标签: c# .net sql-server asp.net-mvc

我正在开发一个应用程序,它有许多不同城市的子域名。为简单起见,您可以将其视为craigslist。同样重要的是要注意,admin.mysite.com需要使用来自所有其他网站的数据生成报告。

我在决定如何解决问题的最佳实践方面遇到了一些麻烦。

以下是我正在考虑的一些事情:

  1. 我应该如何布置数据库?我倾向于为每个站点创建一个数据库,然后是一个管理数据库,其中包含从其他数据库中获取报告的视图。

  2. 我应该如何跟踪用户所在的城市/子域?截至目前,我正在使用动作过滤器为城市设置Session变量,我不喜欢。我想也许创建一个基本控制器,它有一个currentCity变量,我通过过滤器而不是会话状态设置。

2 个答案:

答案 0 :(得分:1)

如果它真的是一个单一的应用程序,其内容由主机头名称决定,那么制作多个数据库迟早会成为维护的噩梦。单个数据库就可以了。

关于您的第二个问题,您必须确定用户ID是否可以在多个城市中使用,您的答案将来自于此。如果你是通过子域驱动它,那么我看不到需要一个会话变量来复制主机头中的内容(请求[" SERVER_NAME"])

答案 1 :(得分:1)

你实际上是在自己描述它。

我会使用以下域模型:

public class City {
   id,
   name,
   // other info

   Site site;

}

然后你有你的网站模型:

public class Site{
   id,
   // back navigation : City 
   Then site properties.
}

聚苯乙烯。我也会选择一个数据库。

您可以按照以下方式将用户作为城市/网站用户进行管理:

class User{
  // props
  City navigation
  Site navigation
}