问题标签 [contract-first]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
937 浏览

c# - WCF Contract 首先基于 xsd 数据类型

我们将数据类型创建为 XSD 定义。然后将这些 xsd 文件导入 WebSphere Application Server。

我们希望 WebSphere Application Server 能够使用这些数据类型调用 WCF Web 服务。

原来的xsd如下:

通过 xsd.exe 运行它会生成以下 C# 代码:

然后,当我们在 WCF 合同中使用此数据类型时,它会生成以下 xsd:

  • 我们希望数据合约与​​原始 xsd 相同。
  • 我们也希望在生成后不需要编辑文件。(数据模型很大)

问题与 minoccurs=0 的可选字段有关,这些字段确实可以为空,但 xsd.exe 是在 .net 具有可空类型之前创建的。

我们如何确保 WCF 合约中使用的数据类型与 XSD 中指定的数据类型完全相同?

0 投票
2 回答
13974 浏览

c# - 一个 WCF 服务——两个客户端;一个客户端不工作

我有一个 WCF 服务和两个控制台应用程序客户端。

服务:服务代码是使用 WCSF Blue 工具从 wsdl 联系人创建的。

客户端 1:此客户端正在使用通过浏览 svc 文件获得的 wsdl。这个浏览的 wsdl 文件与合同 wsdl 文件略有不同。

客户端 2:此客户端是使用原始 wsdl 合同创建的。

Cleint1 工作正常。客户端 2 不工作。什么都可能是潜在的问题?

两个客户端的 App.Config 文件看起来很相似——只是名称发生了变化。我认为,问题出在生成的客户端 C# 代码中——很可能在Action——ReplyAction中。这里需要纠正什么?

一个明显的区别是 Action 和 ReplyAction

客户 1:

Action="urn:lijo:demos:multiplyservice:calculation:v1/ICalculationService/GetMultiplied", ReplyAction="urn:lijo:demos:multiplyservice:calculation:v1/ICalculationService/GetMultipliedRe" + "sponse"

客户 2:

Action="urn:lijo:demos:multiplyservice:calculation:v1:getMultipliedIn", ReplyAction="*"

跟踪消息

由于 EndpointDispatcher 的 ContractFilter 不匹配,接收方无法处理带有 Action 'urn:lijo:demos:multiplyservice:calculation:v1:getMultipliedIn' 的消息。这可能是因为合约不匹配(发送方和接收方之间的操作不匹配)或发送方和接收方之间的绑定/安全不匹配。检查发送方和接收方是否具有相同的合同和相同的绑定(包括安全要求,例如消息、传输、无)。

编辑

这可以通过如下更改 Action 和 ReplyAction 来纠正(从服务中复制)。

注意:确保服务中的大小写正确很重要(即getMultiplied不是GetMultiplied)

从服务中复制不是一个好的选择,尽管它有效。什么是正确的 Action 和 ReplyAction?

另外,您能否指出如何修改 wsdl 以使生成的客户端代理中的 ReplyAction 正确?这是将其标记为已回答的重要部分。

WCF:操作、星号和元数据

用于元数据发布的 WsdlExporter 忽略带有星号操作的操作(操作和回复操作)。

来自MSDN -ReplyAction 属性

在服务中指定星号指示 WCF 不要向消息添加回复操作,这在您直接针对消息进行编程时很有用。

参考文献

  1. WCF 元数据缺少操作

餐厅数据.xsd

原始合同 wsdl

0 投票
1 回答
670 浏览

wcf - 使用 WCF 构建 Web 服务以供使用 WSDL 的现有 Java 客户端使用

我有一个现有的 Java 客户端,我需要在 .NET 4.0 中构建一个 Web 服务。该接口已经使用 WSDL 文件定义,因此我创建了一个类库并使用WSCF.blue生成了服务器端存根(我也尝试了 svcutil,但没有成功)。WSCF.blue 负责引用并添加文件(很棒的工具:-))所以我只用一些代码替换了生成的 System.NotImplementedException。然后我将结果托管在一个 ASP.NET 开发服务器中。

我想我需要一些额外的步骤,因为我得到了著名的“在服务'Hello' 实现的合同列表中找不到合同名称'WsdlWebService.IHello'。” 在浏览器中查找服务时(请参阅WCF Contract Name 'IMyService' could not be found?)。但这里是一个 ServiceContractAttribute,我希望它可以完成这项工作。

如果有人能指出我所缺少的,我将不胜感激......

这是生成的接口和实现:

这是 web.config:

0 投票
3 回答
2170 浏览

visual-studio-2012 - 如何在 VisualStudio 2012 中安装 Contract-First Tool

我有 VisualStudio 2012,我正在尝试遵循以下教程http://msdn.microsoft.com/en-us/library/hh674270.aspx

但是我在模板对话框的WCF 窗格中找不到选项架构定义。

我必须安装一些东西吗?那会是什么?一个扩展,也许?

提前致谢。

0 投票
1 回答
1030 浏览

wcf - 支持 XSD 限制的 WCF 服务?

过去一天,我一直在努力寻找一种方法来生成 WCF 服务,该服务实际上维护了原始 XSD 中定义的限制。基本问题是,如果我使用包含限制(例如模式)的 XSD 构建合同优先服务,则限制会从部署服务时输出的 WSDL/XSD 中删除。

这是其他人抱怨同样的问题: http: //geekswithblogs.net/wojan/archive/2010/12/10/143086.aspx

我只剩下我认为的 2 个选项:

  • 我可以替换 Web 服务器(IIS 或 IIS Express)上生成的服务 WSDL/XSD
  • 我可以用另一个正确支持 XSD 限制的第 3 方序列化程序替换默认 XML 序列化程序吗?

想法?

0 投票
0 回答
406 浏览

cxf - cxf 中的异步 Web 服务

我需要使用 cxf 从服务器端主动向客户端发送响应。我非常擅长从客户端到服务器进行同步 JAX-WS 调用(我使用 SOPAUI 来调用我的服务器,它是一个 webservice_..我正在关注JAX-WS wsdl 第一种方法。我正在使用 cxf 'wsdltojava' 将 wsdl 转换为 java 类。

为了简单起见,我的问题是'如何在 CXF、JAX-WS wsdl 第一种方法中从服务器向客户端发送响应(没有来自客户端的请求)?

0 投票
1 回答
1342 浏览

java - 在 WSDL-first 方法中如何使用一些(例如:验证)方法编写 DTO?只是不要写“贫血的领域模型”

我首先使用 WSDL。我有 WSDL 并使用 Maven 插件“cxf-codegen-plugin”生成 Java 代码。使用 Code-first 可以编写 DTO,例如:

所以使用 Code-First(Java-First)很容易用验证方法编写 DTO。客户可以检查搜索条件是否得到很好的满足。此类将由使用@WebService 注释的 WebService 类返回。这将起作用。

但是如何使用 WSDL-First 方法编写这样的 DTO(使用某种方法)?

我非常喜欢 WSDL-First 方法(它有很多优点,但这里不是写它们的地方)但我想添加方法......只是不写“贫血域模型”并允许客户端检查之前满足的搜索条件发送到服务器。

0 投票
0 回答
53 浏览

java - 弹簧处理程序代码未执行

我在这里是因为我无法理解为什么在我的合同中第一个使用 spring 创建的 web 服务中处理程序代码永远不会执行。我正在使用SpringJUnit测试Mock来运行测试。

这是我的端点:

这是消息发送者:

这里是 InscriptionRequest.xml 文件的开头:

测试的结果很好,但是如果我尝试在处理程序中进行打印,它似乎永远不会执行。我不认为问题来自端点,因为它的构造函数被成功调用。

有没有人遇到过同样的问题或知道如何解决?

如果您想了解更多详细信息,我可以给您项目的 git 地址: https ://github.com/Ornro/CVWS

0 投票
3 回答
9522 浏览

wcf - 在 WSDL 文件中包含模式类型

我手动创建了一个 WSDL,它只有一个操作,没有输入参数,也没有输出参数。

当我尝试从此 WSDL 创建客户端时出现以下错误:

无法导入 wsdl:portType 详细信息:运行 WSDL 导入扩展时引发异常:System.ServiceModel.Description.DataContractSerializerMessageContractImporter 错误:带有目标命名空间的架构' http://www.xmlns.mycompany.com/GAME/service/Associate/ 1.1/ ' 找不到。错误源的 XPath: //wsdl:definitions[@targetNamespace=' http://www.xmlns.mycompany.com/GAME/service/Associate/1.1/ ']/wsdl:portType[@name='GAMEAssociateIntf'] C :\toolbox\BlueTest\BloodRedTest\BloodRedTest\Service

(将types 在客户端中使用)需要从 WSDL 中存在的 XML 生成。我认为,在添加服务参考时,由于 XML 中的一些错误,该工具无法创建它。xsd似乎是问题所在。

需要在 WSDL 中进行哪些更改才能创建代理?

注意:我试图包含在 WSDL 本身中定义的 xml 类型。[我不需要单独的文件来定义模式]

WSDL

参考文献

  1. WSDL - 无输入 - 最佳实践
  2. 此 WCF 错误是什么意思:“自定义工具警告:无法导入 wsdl:portType”
  3. 手动编写 WSDL 1.1 Web 服务契约
  4. 编写契约优先的 Web 服务
  5. 从 wsdl 文件生成 wcf 服务器代码
  6. 如何让 wsdl 输入和输出名称出现
  7. 内联架构
  8. 手卷 SOAP 请求
0 投票
2 回答
849 浏览

soap - 如何验证 WSDL 合同中断?

我知道什么会破坏 WSDL 合同(什么被认为是对 WSDL 合同的非破坏性或向后兼容的更改?)但是每次我们对某些 WSDL 进行更改时,我们都需要向其他团队证明是否该更改是否违反了合同。由于我们不想将整个应用程序构建为我们服务的客户端,因此我们希望为此目的使用一些更简单的工具,例如soapUI。

我已经查看了soapUI 断言和互联网,但仍然没有找到线索。有谁能够帮我?

谢谢并恭祝安康,