我不明白Camel到底是做什么的.
如果你能用101个单词介绍骆驼:
请解释一下Camel是什么.
目前正在做一些考试,我正在努力解决一些概念.这些都在我的笔记中被"提及",但我并不真正理解它们是如何联系在一起的.据我所知:
SOA - 使服务使用者/提供者进行通信的解决方案.(据我所知,这是其他一切的总称)
WSDL - 描述提供者服务的语言.
SOAP - 服务用于发送消息的XML协议"包装器".与WSDL一起使用以提供参数?
REST - 在功能上类似于SOAP但避免使用XML的设计模式?(真的不确定这一个)
JSON - 使用javascript的XML的替代品?(也不确定这一个)
在互联网上环顾四周似乎没有明确定义所有这些是什么以及它们如何相互关联.
有人能用简单的英语解释SOA的全部内容吗?我在这里听到SOA,那里有SOA,但我无法理解它是什么以及用于什么.这是一个简单的概念,后来演变成巨大的东西或什么?
包括维基在内的所有文件都有点抽象,或者我可能是个白痴并且没有得到它.这是一个白痴的指南吗?
这三封信背后究竟是什么?
如果你愿意,可以叫我一个巨魔,但我是认真的:新的SOA趋势究竟与我15年前建立的客户服务架构有什么不同?我一直听到SOA,但我不知道它与我们一直以来的不同之处.
回到10年前,我的公司有多个客户(多种语言)与同一服务进行交谈.它不是XML(它是一个名为Microsoft DCOM的二进制协议),并且没有通过WSDL进行自动发现,但这是正常的,因为阅读文档同样容易.我们的系统甚至是"开放的",因为我们记录它足以让第三方与我们的服务交谈.我们不是先锋 - 我10年前所知道的其他公司都在做同样的事情.
我在当时和现在之间看到的唯一区别是现在互联网上有一项服务,而10年前,每个客户都会托管他自己的服务实例.但这不是架构问题 - 物理上的服务对使用该服务的任何人都是透明的.
那么SOA究竟与我们多年来所做的不同呢?SOA只是一个代表最佳实践的营销术语,这个实践在很久以前就已经变得普遍了吗?或者我错过了一些与我们一直在做的不同的SOA?
当我阅读有关存储库的文档时,通常使用实体和集合,但是以"只读"的方式.
从来没有存储库具有类似insertUser(User $user)或的方法的示例updateUser(User $user).
但是,在使用SOA时,Service不应该使用Entity Manager(这是对的,不是吗?)所以:
从这两个问题,另一个问题,我的服务应该明确persist()和flush()我的实体吗?
一点背景.
非常大的单片Django应用程序.所有组件都使用相同的数据库.我们需要分离服务,以便我们可以独立升级系统的某些部分而不影响其余部分.
我们使用RabbitMQ作为Celery的经纪人.
现在我们有两个选择:
我的团队倾向于HTTP,因为这是他们熟悉的,但我认为使用RPC而不是AMQP的优势远大于它.
AMQP为我们提供了轻松添加负载平衡和高可用性以及保证消息传递的功能.
而使用HTTP我们必须创建客户端HTTP包装器以使用REST接口,我们必须放入负载平衡器并设置该基础结构以便具有HA等.
使用AMQP,我可以生成另一个服务实例,它将连接到与其他实例相同的队列以及bam,HA和负载平衡.
我对AMQP的看法是否遗漏了什么?
最近我公司对面向服务的体系结构(SOA)很感兴趣.每当我试图看看我们如何使用它时,我总是遇到心理障碍.粗略地:
面向对象说:"保持数据和方法一起操纵数据(业务流程)";
服务导向说:"将业务流程保留在服务中,并将数据传递给它".
以前开发SOA的尝试最终将面向对象的代码转换为数据结构和单独的操作它们的程序(服务),这似乎是一个倒退.
我的问题是:什么模式,架构,策略等允许SOA和OO一起工作?
编辑:答案说"OO for internals,SOA for system boundary"非常有用,但这并不是我所得到的.
假设您有一个Account对象,该对象具有一个名为Merge将其与另一个帐户组合在一起的业务操作.典型的面向对象方法如下所示:
Account mainAccount = database.loadAccount(mainId);
Account lesserAccount = database.loadAccount(lesserId);
mainAccount.mergeWith(lesserAccount);
mainAccount.save();
lesserAccount.delete();
Run Code Online (Sandbox Code Playgroud)
而我见过的SOA等价物看起来像这样:
Account mainAccount = accountService.loadAccount(mainId);
Account lesserAccount = accountService.loadAccount(lesserId);
accountService.merge(mainAccount, lesserAccount);
// save and delete handled by the service
Run Code Online (Sandbox Code Playgroud)
在OO情况下,业务逻辑(以及感谢ActiveRecord模式的实体感知)被烘焙到Account类中.在SOA案例中,Account对象实际上只是一个结构,因为所有业务规则都隐藏在服务中.
我可以同时拥有丰富的功能类和可重用的服务吗?
警告!我在这里有点钓鱼之旅,我甚至不确定我问的问题是否完全有意义.请善意回复你!:)
我最近接手了一个目前基于Java + Linux + Tomcat + MySQL的项目.现在,该系统基本上只是一个在后台有一些cron工作的网站,可以移动一些数据等等.在与产品经理合作开发优先顺序时,很清楚他想做什么我需要开始开发面向服务的体系结构(SOA < - buzz word warning!),最终我将结合使用Web服务器和应用程序服务器.注意:我正在考虑转向Glassfish v3.
目前,身份验证和授权在Java代码中处理,用户信息存储在MySQL数据库中.至少在我看来,我需要将其拆分为一个单独的身份验证服务(否则,最终将会出现一堆重复的代码来处理用户身份验证和授权).
我一直在研究单点登录(SSO)类型解决方案并进行一些研究.从我可以收集的信息来看,OpenSSO已被Oracle正式删除,但被ForgeRock收录,现在被称为OpenAM.这似乎非常接近我想要的,但由于我已经有一个基于MySQL的系统,我宁愿有一些东西支持它(或其他一些RDBMS).我在Stack Overflow上找到了它,它似乎表明它基本上是LDAP或什么也没有.
有没有办法让OpenSSO/OpenAM与数据库通信以进行身份验证和授权?
我的问题是:
OpenSSO/OpenAM有哪些其他选择?LDAP是否可行?注意:执行"OpenAM vs"谷歌搜索不会产生太多影响.人们倾向于"自己动手"吗?
任何有助于教育我的关于此主题的想法/建议/链接将不胜感激.提前感谢您的耐心和帮助.
soa ×10
java ×2
amqp ×1
apache-camel ×1
architecture ×1
composition ×1
doctrine-orm ×1
events ×1
glassfish-3 ×1
http ×1
integration ×1
json ×1
messaging ×1
middleware ×1
oop ×1
openam ×1
opensso ×1
rabbitmq ×1
rest ×1
scaling ×1
service-tier ×1
soap ×1
symfony ×1
web-services ×1
wsdl ×1