Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 每个城市具有子域的站点架构_C#_.net_Sql Server_Asp.net Mvc - Fatal编程技术网

C# 每个城市具有子域的站点架构

C# 每个城市具有子域的站点架构,c#,.net,sql-server,asp.net-mvc,C#,.net,Sql Server,Asp.net Mvc,我正在开发一个应用程序,它有许多不同城市的子域。为了简单起见,你可以把它想象成craigslist。还需要注意的是,还有一个admin.mysite.com,它需要使用所有其他站点的数据生成报告 我在决定如何安排事情的最佳实践时遇到了一些困难 以下是我正在考虑的一些事情: 我应该如何布置数据库?我倾向于为每个站点创建一个数据库,然后创建一个管理数据库,其中包含从其他数据库提取的报表视图 我应该如何跟踪用户所在的城市/子域?现在,我正在使用一个动作过滤器为城市设置一个会话变量,我不喜欢这个。我想也

我正在开发一个应用程序,它有许多不同城市的子域。为了简单起见,你可以把它想象成craigslist。还需要注意的是,还有一个
admin.mysite.com
,它需要使用所有其他站点的数据生成报告

我在决定如何安排事情的最佳实践时遇到了一些困难

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

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

  • 我应该如何跟踪用户所在的城市/子域?现在,我正在使用一个动作过滤器为城市设置一个会话变量,我不喜欢这个。我想也许可以创建一个基本控制器,它有一个类似于
    currentCity
    的变量,我可以通过过滤器而不是会话状态来设置它


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


    至于你的第二个问题,你必须确定一个用户id是否可以在多个城市使用,你的答案将来自于此。如果您是通过子域来驱动这个过程,那么我看不出是否需要一个会话变量来复制主机头中的内容(请求[“服务器名称])

    您实际上是在自己描述它

    我将使用以下域模型:

    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
    }