Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/88.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# - Fatal编程技术网

C# 不同地区的网站

C# 不同地区的网站,c#,C#,我接到一个客户的要求。他们需要为三个不同的地区提供三个博客web应用程序。每个应用程序都有自己的数据和帖子。他们可能希望在这些应用程序之间共享用户信息。这些应用程序的用户界面将是相同的,除了css级别的更改(颜色、字体和样式)和每个博客主页中的少量布局更改。这让我想到了很多问题 三个独立的现场方法 1.为每个地区开发三个不同的网站,并将其部署在三个子域中,这样好吗? 2.我要为每个地区使用相同的数据库还是单独的数据库? 3.如果有三个网站,我将如何克服缓存、会话共享和用户登录(单点登录)、多重部

我接到一个客户的要求。他们需要为三个不同的地区提供三个博客web应用程序。每个应用程序都有自己的数据和帖子。他们可能希望在这些应用程序之间共享用户信息。这些应用程序的用户界面将是相同的,除了css级别的更改(颜色、字体和样式)和每个博客主页中的少量布局更改。这让我想到了很多问题

三个独立的现场方法 1.为每个地区开发三个不同的网站,并将其部署在三个子域中,这样好吗? 2.我要为每个地区使用相同的数据库还是单独的数据库? 3.如果有三个网站,我将如何克服缓存、会话共享和用户登录(单点登录)、多重部署和代码重复问题

单站点方法 1.创建单个站点,将区域分开,如sitename/regionname? 2.如果是单站点,性能和可扩展性将如何? 3.只需使用singe数据库,这将在三个区域之间共享。这是个好办法吗

可能还有更多的可能性。现在我需要你们的指导,告诉我还有哪些未知的问题会发生,我将如何一个接一个地解决这个问题,并得出哪个是最好的结论

我们可以在C#中实现此解决方案


编辑:网站将使用英语

开发3个不同的网站是不好的。维护将很快成为一场噩梦,代码将非常繁琐

将其分解为面向服务(SOA)的体系结构。这是语言不可知论。因此,如果您使用C#、PHP、Java或Python,总体思路是相同的

1.)创建用户服务以验证用户

2.)创建博客服务以处理存储、检索和编辑博客

3.)创建一个单独的站点与服务进行沟通,并使用本地化

使用服务还可以改变数据库设计、DBMS等。。。无需更改核心应用程序

在User Service store中存储某种本地标识符,以便单个站点可以根据本地化规则进行更改。所有主要语言都有本地化设置,可以为您完成大部分工作,如日期格式、货币等

注意:最好在用户注册期间获取区域名称,而不是登录


与3个单独的站点相比,上面描述的设计使代码更易于维护。

它应该是一个站点,并且应该是一个数据库。可伸缩性是它自己的另一个问题。你期待什么样的交通

无论如何,看看nvidia.com,这个网站是为世界各地的不同地区设置的。在大多数情况下,它仍然是同一个网站。某些部件可能位于不同的国家/地区,但它们可能连接到同一个数据库或一组同步数据库

另一个最重要的问题是,你是否希望所有的网站都完全相同,只是语言不同?如果是这样,这将只是简单的文本替换,或者您的数据库将被设置为您的应用程序可以轻松地从不同语言切换出内容


你的项目在计划阶段肯定需要很多时间。你需要确保你确切地知道你的客户需要什么,因为这往往与他们想要的不同。为您的客户规划一些选项,并介绍这些选项的优缺点。然后让他们决定。

我最近遇到了类似的设计问题,所以让我与您分享我的方法(无论您认为它是错还是对的!)。我使用了一个站点、一个数据库和主机头

我做的第一件事是创建一个域表。看起来是这样的:

_domains:

    _id INT IDENTITY NOT NULL
    _domain_name NVARCHAR(255) NOT NULL
    _id_category_root INT NOT NULL  (foreign key to _categories::_id)
这允许我为内容类别指定顶级域。内容类别属于这些域

_categories:

    _id INT IDENTITY NOT NULL
    _category_name NVARCHAR(64) NOT NULL
    _id_parent INT NULL (foreign key to _categories::_id)
    _theme_root NVARCHAR(64) NOT NULL
\u theme\u root
字段指定了根目录中的默认主题文件夹。这允许每个类别(可选)具有不同的css,如果需要,还可以具有不同的母版页。这允许内容类别看起来完全不同(CSS、图像和布局),甚至只是使用默认母版页的CSS

因此,内容属于一个类别:

    _id INT IDENTITY NOT NULL
    _id_category INT NOT NULL (foreign key to _categories::_id)
    _content_title
    -- other fields
我是这样抽象的,因为您可以在同一类别级别上拥有多个域:

    enGB.mysite.com  -> category 1
    www.enGB.mysite.com -> category 1
    frFR.mysite.com  -> category 2

在我的代码中,我查看主机标题并适当地选择类别,为内容和其他表提供服务,这些表是该类别表的分支。如果主机标题不匹配,我将使用默认名称(英文站点)


编辑:添加主题注释。

您在这里有很多选择,因此您需要从客户那里获得一些好的信息

您提到站点之间会有布局更改。这里的这一部分说,您最好使用三个不同的站点作为用户界面。这可能是一个很好的假设,即他们希望在个性化的基础上更改每个站点的UI。将所有这些整合到一个引擎中是困难的

这三个都可以共享一个数据库,您只需确保每个帖子、配置文件等都有一个与之关联的SiteId。此外,您还需要确保您编写的每个查询都使用该SiteId值。这种情况称为多租户体系结构

缓存的处理方式与单个站点的缓存相同


在写了所有这些之后,我突然想到,如果你只需要使用现有的产品,如WordPress或类似产品,并为其创建模板,就可以更好地为你服务。

可能只有一个网站。。。有了这个网站,你也可以使用不同的url。。。 我的意思是说网站是一个单一的和单一的