介绍
随着宽带和网络技术的进步,我们正在看到从传统的桌面应用转向基于网络的系统。云是这几天的所有范围。Sage和Quickbooks等会计软件包正在被诸如Kashflow和Wave Apps等在线软件取代。
每个客户并没有创建一个独特的软件实例,而是像Kashflow和Wave Apps一样,将他们的系统开发成多租户应用程序 - 所有用户都使用该软件的一个实例。在每种情况下,它们的数据都是通过系统的体系结构与其他客户的数据分离的。
引用:多租户是指软件架构中的一个原则,其中软件的单个实例在服务器上运行,为多个租户提供服务。租户是一组用户在他们使用的软件上共享相同的观点。 - 维基百科
这可以通过两种方式来实现:
单个数据库 - 创建单个数据库,所有数据都存储在此处。每个记录都分配有一个租户密钥,只有属于该租户的数据才可访问。访问受应用软件的限制。
多个数据库 - 或者,可以使用单独的数据库来存储每个客户数据。然后可以通过使用SQL登录凭据来限制对数据库的访问。
虽然我多次使用单一数据库方法,但在开始最近的一个项目时,很明显多种数据库方法可能更合适。
多数据库方法的优点
多数据库方法的主要优点之一是可以备份和恢复单个用户的数据。使用单一的数据库方法,恢复数据库将消除所有客户的变化,并且在单个客户出错时不可能提供回滚功能。
另外,如果网站变得非常成功,那么多数据库系统就可以非常容易地在各个服务器之间移动数据。
然而在我的情况下,主要的卖点是预期一些客户可能需要定制系统,超出了多租户设计所能达到的水平。通过使用单独的数据库,可以将这些数据库移动到新的服务器上,并在需要时进行完全自定义。虽然这可能会首先打破多租户系统的优势,但它确实提供了单一数据库系统不能提供的灵活性和面向未来的优势。
多数据库系统的体系结构
在多数据库多租户系统中,每个用户数据都存储在自己的数据库中。因此需要单独的数据库来保存登录细节,并提供用户数据存储位置的详细信息。这可能指向同一台服务器上的数据库或远程数据位置。
如何使用MVC创建多数据库系统6
在Visual Studio中,创建一个新的ASP.NET Web应用程序。
选择MVC作为模板类型,在“更改认证”中,确保选择“个人用户帐户”。这个例子我们将使用表单认证。
首先,创建一个名为AccountDAL的文件夹- 我们将使用它来存储访问Account数据存储的所有代码。
创建一个新类,并将其命名为DataContext.cs。添加下面的代码:
public class DataContext : DbContext
{
public DataContext() : base("accountContext")
{
}
public DbSet<Account> Accounts { get; set; }
public DbSet<User> Users { get; set; }
}
我们将首先使用实体框架生成一个