我正在使用JAX-WS对基于SOAP的Web服务进行一些研究,我发现了解客户端部分非常复杂.如果有人可以帮我解释一些主题,我会非常感激.我正在使用SOA书籍和Google,但我真的很困惑,所以我想在这里我可以得到更准确的答案,专注于我需要的东西.
因此,我们可以以同步和异步方式与Web服务进行通信.同步通信缺乏双方必须等待,直到处理结束.
异步客户端允许我们使用2种编程模型以异步方式进行通信:1-回调和2-轮询
在谈论异步通信时,我也明白生产者(Web服务)应该有一种方法,一旦处理完成就找到消费者(客户端).这就是为什么我们要解决.
还有一件事.Dispatch API也让我很困惑.因为他们一直在谈论动态客户.
消息总线体系结构的每个描述似乎都描述了用于路由消息的集中式中介:
每个应用程序都与消息总线有一个连接,而不是与每个其他应用程序的多个专用连接.
http://msdn.microsoft.com/en-us/library/ff647328.aspx
将这些应用程序之间的连接中间件构建为消息总线,使它们能够使用消息传递协同工作.
http://www.eaipatterns.com/MessageBus.html
Service Bus是位于应用程序之间的消息传递基础结构,允许它们以松散耦合的方式交换消息,以提高规模和弹性.
http://www.windowsazure.com/en-us/home/features/messaging/
描述看起来与Message Broker体系结构相同; 让我相信以下几点:
术语"消息总线"实际上与"MoM"相同 - 一个用于引用消息传递基础结构而没有明确提及拓扑的通用术语.即Message Broker 是一种消息总线.
这似乎是一个有争议的话题,虽然在SO上有一些类似的问题,但没有一个(IMO)有明确的答案.
Ps我知道企业服务总线完全不同,实际上是一个"功能丰富"的MoM.
你们如何测试您的 SOAP 服务?你使用类似的工具soapUI还是你写的Unit Tests?只是想听听一些意见,你更喜欢什么,两种方法的优点或缺点是什么?如果有人写Unit Tests,你能举个例子如何写吗???
编辑:我开发了很多 REST 服务,我通常使用 JUnit 和 REST 客户端框架进行测试。因此,当部署 REST 服务时,我能够使用 http 连接将这些服务作为 JUnit 测试来调用。SOAP 中也有类似的东西吗?有人有 SOAP 客户端的示例代码吗?
我收到“JDBC 驱动程序不支持 XA 问题”
提交事务时出错:; 嵌套异常是:javax.transaction.xa.XAException:JDBC 驱动程序不支持 XA,因此不能成为两阶段提交的参与者。
我尝试访问登台服务器上托管的WCF服务时收到以下错误.
"使用以下搜索条件找到多个X.509证书:StoreName'My',StoreLocation'LocalMachine',FindType'FindBySubjectName',FindValue'StagingServer001'.提供更具体的查找值."
我尝试访问以下URL并获得以上错误:
http://stagingserver001/MyService1.svc
Run Code Online (Sandbox Code Playgroud)
任何人都可以指导我如何在商店中找到证书删除它?或者我在WCF的配置中需要做哪些更改
请在下面找到从WCF服务的web.config中获取的相关代码
<behaviors>
<endpointBehaviors>
<behavior name="endpointCredentialBehavior">
<clientCredentials>
<clientCertificate findValue="SPLEBUSSTG02" storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectName" />
<serviceCertificate>
<defaultCertificate findValue="772f3fdf2496c9750be3b0713003b47b15dfde96" storeLocation="LocalMachine" storeName="My" x509FindType="FindByThumbprint" />
<authentication certificateValidationMode="PeerOrChainTrust" />
</serviceCertificate>
</clientCredentials>
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="SecurityBehavior">
<serviceMetadata httpGetEnabled="True" />
<serviceDebug includeExceptionDetailInFaults="false" />
<serviceCredentials>
<serviceCertificate findValue="772f3fdf2496c9750be3b0713003b47b15dfde96" storeLocation="LocalMachine" storeName="My" x509FindType="FindByThumbprint" />
<clientCertificate>
<certificate findValue="SPLEBUSSTG02" storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectName" />
<authentication certificateValidationMode="PeerOrChainTrust" />
</clientCertificate>
</serviceCredentials>
</behavior>
<behavior>
<!-- To avoid disclosing metadata information, set the values below to false before deployment -->
<serviceMetadata httpGetEnabled="false" httpsGetEnabled="false" /> …Run Code Online (Sandbox Code Playgroud) 我一直在搜索(主要是 google)来尝试查找可用于识别 SOA 服务的功能职责的工具或方法。我的搜索并没有真正得出任何结果。
目前,我用来决定职能职责的方法是临时的,实际上只是直觉,例如
Reflecting on other approaches used in the software design/architecture world:
Object Oriented Analysis has the concept of Class Responsibility Collaboration (CRC) models to decide the responsibility of classes.
From what I understand, Domain Driven Design (DDD) has the concept of bounded contexts to logically partition a domain.
In traditional software architecting:
我们有一个类似 soa 的架构,看起来像这样
\n\nfrontend ->domain A ->db \nfrontend->business A->domain B ->db\nfrontend ->domain C ->db\nfrontend ->domain A ->db \nfrontend->business B->domain B ->db\nfrontend ->domain C ->db\n\nother app A\nother app B\nRun Code Online (Sandbox Code Playgroud)\n\n我们还有其他不属于此 soa 堆栈的应用程序。
\n\n我们不时会遇到以下讨论/问题:
\n\n“我在域 A 中的代码在域 B 中也有用,但在业务服务中不起作用 - 我应该将这些内容及其测试放在哪里”。
\n\n让我们假设代码非常抽象且与领域无关,是非常通用的代码,也可以被 soa 之外的“其他”应用程序使用。
\n\n所以问题是:
\n\na) 将其放入“generic-domain-stuff”模块中,所有域都通过 Maven 依赖项继承该模块。这可能最终会越来越大,直到变成一团糟\xe2\x80\xa6。
\n\nb) 创建一个模块“generic-stuff”,可供 soa 和“其他”应用程序使用。这可能会导致很多小的maven模块\xe2\x80\xa6。
\n\nc) 复制代码直到拥有三个用例,然后重构为 a) 或 b)。这尖叫干(不要重复自己)
\n\n我周围有超过 10 年“企业”经验的人,但我们似乎从来没有找到一个适当的解决方案/答案来解决总是相同的问题:)
\n\n我有兴趣听听你的经历
\n以下是与 SOA 相关的演示幻灯片中提到的一点,它使我对服务编排和服务编排的概念感到困惑。为了启用服务编排,Web 服务不应该能够调用另一个 Web 服务吗?
SOA builds applications out of software services. Services comprise intrinsically
unassociated, loosely coupled units of functionality that have no calls to
each other embedded in them.
Run Code Online (Sandbox Code Playgroud) 我正在致力于使用 Ruby/Rails(Grape、Rails-API 等)构建一套(微)服务,为面向用户的 Web/移动应用程序提供服务。这些服务是独立的/隔离的,但是模型/实体之间需要有一些跨服务关系。
对于has_one/belongs_to关系,我可以简单地将ID外部实体的 存储在本地模型中,反之亦然。我面临的问题是如何处理has_many/belongs_to或has_many/has_many关系。
例如,如果我有一个OrderandProduct模型,在整体 Rails 应用程序中我将执行以下操作:
class Order < ActiveRecord::Base
has_many :products, through :order_products
end
class Product < ActiveRecord::Base
has_many :orders, through :order_products
end
class OrderProduct < ActiveRecord::Base
belongs_to :order
belongs_to :product
end
Run Code Online (Sandbox Code Playgroud)
在处理不同的服务时如何处理这种类型的关系?有没有一种“轨道方式”来做到这一点?
到目前为止,我提出的最佳选择是ID使用 PostgressSQL 列之类的东西将foreign s 作为散列存储在模型中hstore,但从可扩展性和数据完整性的角度来看,这感觉都是错误的。
任何帮助将不胜感激!
服务编排和聚合有什么区别?在 SO 的类似帖子中,有人提到这两个术语之间只有一线之隔。能否获得有关这条细线的更多详细信息?此外,什么是服务增强以及它如何与另外两个概念相关。
soa ×10
java ×4
web-services ×4
architecture ×3
soap ×2
.net ×1
aggregation ×1
crc-cards ×1
esb ×1
jax-ws ×1
jdbc ×1
junit ×1
maven ×1
messaging ×1
rails-api ×1
service ×1
transactions ×1
wcf ×1
web-config ×1
xa ×1