我正在开发一个应用程序,它有许多不同城市的子域名。为简单起见,您可以将其视为craigslist。同样重要的是要注意,admin.mysite.com
需要使用来自所有其他网站的数据生成报告。
我在决定如何解决问题的最佳实践方面遇到了一些麻烦。
以下是我正在考虑的一些事情:
我应该如何布置数据库?我倾向于为每个站点创建一个数据库,然后是一个管理数据库,其中包含从其他数据库中获取报告的视图。
我应该如何跟踪用户所在的城市/子域?截至目前,我正在使用动作过滤器为城市设置Session变量,我不喜欢。我想也许创建一个基本控制器,它有一个currentCity
变量,我通过过滤器而不是会话状态设置。
答案 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
}