Asp.net mvc 基于ASP.NETMVC、WebAPI的多租户软件设计

Asp.net mvc 基于ASP.NETMVC、WebAPI的多租户软件设计,asp.net-mvc,asp.net-mvc-4,design-patterns,architecture,asp.net-web-api,Asp.net Mvc,Asp.net Mvc 4,Design Patterns,Architecture,Asp.net Web Api,我正在启动我的初创公司,我需要做出关键的架构选择。 我将为我的客户提供一个SAAS web应用程序,他们有不同的特定需求,但该程序的主要目的是相同的,自动生成文档和pdf 技术上我首先选择ASP.NETMVC、WebAPI、EF代码。现在我只有一个项目(1个db、1个asp.net mvc客户端、1个asp.net webapi、1个服务层+1个存储库)的概念验证 我将为每个客户提供一个数据库(更易于维护、扩展…) 每个客户端都有一个WebFront,带有个性化的html/css模板,当然还有特

我正在启动我的初创公司,我需要做出关键的架构选择。 我将为我的客户提供一个SAAS web应用程序,他们有不同的特定需求,但该程序的主要目的是相同的,自动生成文档和pdf

技术上我首先选择ASP.NETMVC、WebAPI、EF代码。现在我只有一个项目(1个db、1个asp.net mvc客户端、1个asp.net webapi、1个服务层+1个存储库)的概念验证

我将为每个客户提供一个数据库(更易于维护、扩展…)

每个客户端都有一个WebFront,带有个性化的html/css模板,当然还有特定的数据/菜单

只有一个WebApi服务公开每个客户端的所有服务, 例如/api/client1/,/api/client2/,具有几乎相同的api调用,但返回的数据不同

对于每个客户机,都有一个存储业务逻辑、数据访问、POCO/DTO的服务层(类库dll)

每个Webfront共享对特定服务DTO/POCO的引用

我当然需要我的解决方案水平缩放,而不是垂直缩放

那么这是一个好的选择吗?
你有什么建议/更好的解决方案吗? 我可以将所有这些放在同一个可视化项目中吗?
我真的希望服务层(业务)只存在于一个项目中,通过良好的面向对象方法,我可以为我的所有客户提供服务,在所有客户之间共享公共需求,在派生对象中共享特定需求


感谢您的帮助

当您说:“每个客户一个数据库”和“每个客户一个网络前台”。。。你的意思是说你将拥有和客户一样多的网站和数据库吗?还是为所有客户端提供一个数据库/webfront?我的意思是为每个客户端提供一个数据库,但我还没有决定是否所有客户端都共享相同的模式。每个客户端也有一个前端,因为每个前端都有特定的数据/菜单要显示,不同的授权/认证,当然还有一个品牌的html css模板。对于数据部分,有一篇很好的msdn文章:(以前也有一份Microsoft白皮书,但我现在似乎找不到)查看MVC视图解析部分