有没有人将Spring Integration项目作为嵌入式ESB 的经验?
我在这样的用例中非常有趣:
更新:
除了"从JDBC数据源获取数据"之外,我找到了所有问题的答案.技术上可行吗?
我正在分发一个独立的应用程序.应用程序的每个实例都必须能够发送和接收查询.
要求:
我不想使用RPC,因为它需要运行注册表服务.我认为CORBA和SOAP太过于开销.我有点决定使用自定义协议,但只想知道是否有更好的东西.
谢谢.
在我的SOA架构中,我有几个WCF服务.
我的所有服务都需要访问数据库.
我应该创建一个专门负责所有数据库访问的WCF服务吗?
或者,如果我的每个服务都有自己的数据库访问权限,这样可以吗?
在一个版本中,我只在一个服务中实例化了一个实体层,而所有其他服务都依赖于此服务.
在另一个实体中,实体层在我的每个服务中都是重复的.
第一个版本的主要缺点是引起的耦合.
另一个版本的缺点是层重复,可能是SOA不好的做法?
那么,Stack Overflow的优秀人物是怎么回事?
在一句话中,我最终需要知道的是如何在中间层函数之间共享对象,而不需要应用程序层来传递数据模型对象.
我正在为我正在为之工作的公司在当前环境中构建中间层.目前,我们主要使用.NET进行编程,并围绕所有各种数据库系统(包括Oracle,OpenLDAP,MSSQL等)构建自定义数据模型.
我遇到了一些问题,试图将我们的模型从应用程序层拉出来并将其转移到一系列中间层库中.我遇到的主要问题是应用程序层有挂到一个缓存的对象在整个过程的持续时间,并根据缓存的数据更新的能力,但中间层的操作没有.
我试图保持模型的对象了应用,尽可能的让我们做出改变的基础数据库结构,我们可以编辑和轻松部署中间层和多个应用程序也不会需要重建.我将简要介绍伪代码中的问题,因为这是我们开发人员最了解的:)
main
{
MidTierServices.UpdateCustomerName("testaccount", "John", "Smith");
// since the data takes up to 4 seconds to be replicated from
// write server to read server, the function below is going to
// grab old data that does not contain the first name and last
// name update.... John Smith will be overwritten w/ previous
// data
MidTierServices.UpdateCustomerPassword("testaccount", "jfjfjkeijfej");
}
MidTierServices
{
void UpdateCustomerName(string username, string first, string last)
{
Customer custObj = DataRepository.GetCustomer(username);
/*******************
validation checks and …Run Code Online (Sandbox Code Playgroud) 我们的SOA WCF系统中有一个数据访问服务.此服务负责在"系统范围"数据库表上执行CRUD(创建,更新,删除)操作,并且也是查询数据的来源.想要访问DAS控制下的表的系统中的任何其他服务必须转到DAS来获取或修改它.我们使用Entity Framework并为此DAS构建了我们自己的POCO状态跟踪系统.
我们的数据库中有其他表属于单个服务,只存储数据供自己使用,即在崩溃和恢复或记录业务信息时可以访问的状态信息.我们有一条规则,任何一个表都不能被多个服务访问:因此多个服务所需的数据最终会在DAS中出现.
事实是,我从来没有真正理解为什么数据访问服务是一个好主意,而不是直接访问表.它似乎更慢,我们的DAS不是事务性的,因为它不能发回数据库更新的POCO图(一次只有一个POCOS),我们也有问题,DAS实际上是另一个需要数据的服务的客户端从它...循环依赖.
为什么要打扰DAS?为什么DAS在SOA方面如此重要?我在这里错过了什么?单点控制?
它是一个SOA设计缺陷,并非所有表都是DAS的一部分,而且某些服务有自己的"私有"表吗?
关于这个欢迎的任何讨论.
我是SOA的新手(也是Stack Overflow ...)
我们正在开发的一些服务和Web应用程序必须全部记录审计信息.我们正在考虑为此提供审计服务.是否有任何SOA管理委托人应该让我三思而后行,让其中一个服务调用审计服务来记录信息?换句话说,服务到服务电话?
对于政府合同,我们将建议建立一个交通监控架构.我们将有以下组件:
我刚刚学习SOA是什么.这是面向服务架构SOA的理想候选者吗?我听说过SOA服务应该是无状态的(或者只是RESTful服务吗?)我也听说过将一个服务传递到下一个服务是不明智的,因为它会增加隐藏的复杂性,并且你应该做些什么使这种情况更好("编排"?).上述服务似乎是模块化和可重用的.例如,将有大量的摄像头,各种类型的车辆检测和异常算法,分布式数据库和大量客户端.我需要具备处理事件的能力:例如,如果我可能想要注册服务并在大卡车超过此点时收到通知.
如果这不是SOA理想的实现,那么我应该在哪里寻找.如果这是SOA的理想选择,那么在设计时应该从哪里开始?(而且我基本上是从阅读维基百科的SOA页面开始的.)这里有什么好的案例研究吗?
我对开发DDD应用程序非常有信心,但是一个继续引起我问题的领域是两个应用程序相互集成.我正在努力寻找关于这个主题的任何有用的书籍或资源.像EAI模式这样的书籍深入探讨了消息传递模式和消息构建,但并没有真正解释如何构建利用这些模式的系统.
我搜索过高和低,我很确定没有示例应用程序可以说明如何集成两个系统.我理解异步消息传递的概念,但再次找不到如何应用它的好例子.
SOA上的资源似乎不重复相同的概念,而没有演示如何实现它们,而且往往更关心的是销售我的产品.
以下是我正在努力回答的问题:
每个应用程序是否应该拥有自己的数据副本?例如,组织中的每个应用程序是否都有自己的客户端列表,并在收到消息后更新?
在DDD堆栈中的什么时候传递消息?它们是域事件的结果吗?
我可以组合异步消息传递和WCF,还是我必须选择?我是否将WCF用于发布/订阅的请求/响应和消息传递?
一个DDD应用程序如何使用另一个应用程序的服务?一个DDD应用程序是应该通过其应用程序服务查询另一个系统的数据,还是应该已经拥有自己的数据本地副本,如第1点所述?
显然我不能跨两个系统进行交易.我该如何避免这种情况?
如果我听起来很困惑,那是因为我.我不是在寻找上述问题的答案,只是指出将回答这个和类似问题的资源方向.
在我的ASP.NET MVC项目中,我的操作通常调用Service层来获取数据.我为所有模特使用了相同的十几个POCO.我还计划在控制台应用程序中使用服务层,并可能在某些时候公开web api.
为了使我的数据库操作更有效,我的服务层只保护模型中与特定方法相关的属性(此时这些属性主要由我的控制器操作的需要驱动).
例如,我可能有一个Order属性类Id, Name, Description, Amount, Items.对于给定的服务呼叫,我可能只需要填充Id, Name, Items.该服务的消费者不一定知道该服务Amount仅为0,因为它没有填充该属性.
类似地,消费者不会知道是否Items是空的b/c实际上没有任何项目,或者这种特定的服务方法是否只是不填充该属性.
而对于第三个例子,假设我的一个观点显示了一个ItemCount.我不想完全填充我的Items收藏品,我只需要在我的"模型"上添加一个额外的属性.我不想将此属性添加到我的POCO中,其他服务方法将使用该属性,因为它不会在其他任何地方填充.
因此,自然的解决方案是制作专门为该方法设计的POCO,仅具有这3种属性.这样,消费者就可以知道所有属性都将填充其实际值.不利的一面是,我将结束大量类似形状的模型.
关于哪种方法效果最好的建议?
假设我们有一个类似于下面绘制的SOA基础架构,并且每个服务都可以在不同的主机上运行(这对于两个额外的网络服务"网站"和"支付系统"尤其有效).

显然,我们有一个数据(持久性)层.假设它是通过EJB + JPA或类似的东西实现的.
如果我们想要在不同的服务之间加入数据(在用户UI中),我至少看到了几个选择:
我们希望在RDBMS级别进行高效的JOIN,因此我们有一个包(即.persistence.package),它包含所有实体和会话外观(CRUD实现),在某种程度上必须共享(如何?)或为每个服务部署.也就是说,如果我在订单模式中更改某些内容,我必须重新部署这些包,引入几乎所有内容之间的紧密耦合.此外,数据库必须是唯一的和共享的.
为了避免这些问题,我们为每个不同的服务(即order.package)保留一个实体包,让服务通过一些协议(soap,rest,esb等)进行通信.所以我们可以在每个主机中本地保存数据(不共享任何架构),我们不需要重新部署实体包.但是这种方法对于数据挖掘来说非常糟糕,因为必须在多个服务之间搜索和返回相关数据的查询效率非常低(因为我们无法进行SQL连接)
是否有更好/标准的方法解决上述问题?
soa ×10
architecture ×3
web-services ×3
distributed ×2
wcf ×2
api-design ×1
asp.net-mvc ×1
c# ×1
c++ ×1
caching ×1
crud ×1
data-access ×1
data-mining ×1
dddd ×1
esb ×1
jdbc ×1
messaging ×1
rpc ×1
soap ×1
spring ×1