[英]Web Service Architecture - multi tenancy design pattern (maybe)
我有一个轻微的设计问题:我必须创建一个Web服务(asmx或wcf),该服务从多个数据库服务器检索客户数据,每个服务器都完全相同,除了它们将包含不同状态的数据(每个状态1个DB服务器,大)状态可以有多个等)。
这将由呼叫中心使用,例如,有人呼叫呼叫中心并说,我可以指示我的订单何时交付,我的订单编号是“ aa_etc”,并且该服务应在所有服务器上运行查询并返回该订单的所有订单详细信息。
这很简单,除了要查询多个服务器。我的想法是让中央sqlite db具有当前在线服务器的所有连接字符串,然后依次查询每个
public class OnlineServer
{
public string Name {get;set;}
public string ConnectionString {get;set;}
}
...
public class Order
{
public List OrderDetail getDetails(string orderno,string connstring)
{
//Code to get all orders from database using specified connstring
}
....
}
....
List servers = getOnlineServers();
foreach(OnlineServer in servers)
{
OrderDetails d = Order.getDetails("aa_etc",OnlineServer.ConnectionString);
}
仅仅写下这个想法是完全错误的。
如果有人能帮助我朝正确的方向前进,我将非常感激,这是一个非常大的项目,而开始犯错将在后来流下眼泪。
谢谢
如果您无法通过某种方式将数据合并到单个DB中。 您可能可以使用nHibernate。 它可以查询多个数据库,请参见http://mikehadlow.blogspot.com/2008/10/mapping-entities-to-multiple-databases.html
您将必须为每个服务器设置不同的实体。 通过这种方式,它将可以处理所有数据库连接,池,会话等。
我想进一步考虑这个问题,但是我有一个可能很感兴趣的现成想法,因此我将继续解决它。
我的想法是让中央sqlite db具有当前在线服务器的所有连接字符串,然后依次查询每个
这给了我一个主意:为什么不异步地向每个系统启动搜索查询? 我在这里想使用AJAX(但是您可以使用iFrame)...
我假设数据将通过UI可视化“拉在一起”-通过直接布局或通过巧妙的客户端代码-这将为您提供定制UI的更多选择,但以更复杂的客户端为代价代码库。
您还会有其他选择,例如允许用户根据需要缩小数据源搜索范围。
同样,添加/删除数据源也很简单。
这是我需要直接解决您实际问题的地方。 在我看来,您绝对希望每个数据库都提供单独的服务-但是您可以灵活地做到这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.