问题标签 [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 投票
3 回答
13129 浏览

web-services - Web 服务的更好方法是先合同还是最后合同?

哪个是开发 Web 服务的更好方法?先签约还是后签约?
各自的优点和缺点是什么?

你有哪些经验?

编辑 这个问题是关于 Web 服务的实现(阅读:SOAP)问题是是否应该首先对实现类进行编码,然后生成 WSDL 和 XSD 模式(最后一个合同)或首先编写 WSDL 和 XSD 模式,然后生成的实现类(合约优先)

0 投票
5 回答
6279 浏览

.net - 使用 WCF 的合同优先 SOA

这个问题更多的是探索人们在实际情况下在社区中所做的事情,而不是一个有针对性的问题。我对此进行了相当广泛的搜索,虽然我发现很多博客都提倡契约优先服务设计和一些支持它们的评论,但我还没有找到很多关于使用 WCF 实现契约优先的实用信息,优缺点我最近对 ​​SOA 进行了一些广泛的研究,主要是通过 Thomas Erl 的书籍,他提倡的主要概念之一是契约优先设计。

我的问题如下:

  1. 您如何使用 .NET 和 WCF 进行合同优先服务设计?
  2. 除了 svcutil 之外,还有其他工具可以从合同中生成客户端和服务吗?(任何与 VS 集成的东西都是理想的)
  3. 您在合同优先设计和 wCF 方面遇到过哪些现实世界的专业人士?
  4. 您在使用契约优先设计和 WCF 时遇到了哪些现实世界的弊端?

合约优先开发的主要问题之一似乎是工具。Svcutil 是我发现的唯一可以从合约生成服务代码的东西,而且它的输出很差。它的单一文件,塞满了属性和代码生成工件,基本上需要在合约更新时重新生成和替换。我更喜欢更好的方法,最好是不需要regen-replace的方法。我什至可以手动创建服务端合同,假设它在现实世界的场景中是实用的。

编辑:

虽然 WCSF 解决了我的迫切需求,但学习Protocol BuffersService Factory都是有趣的工具,我相信它们将来会对我有所帮助。

0 投票
2 回答
3541 浏览

.net - 从 WSDL 生成服务契约

我有一个 WSDL,我需要生成一个 ServiceContract(OperationContract,DataContract)...

我找到了一种为ASMX WebServices执行此操作的方法,但似乎无法在 WCF 中找到如何执行此操作。

我试过跑步

但生成的接口不会反序列化传入的调用,因此服务实现的所有请求参数都是null

0 投票
1 回答
336 浏览

wcf - WCF 合同限制字符串值

我们正在为一个项目定义一些 WCF 合同。

在一种情况下,我们希望发送一个状态字段。我们只是将其作为文本发送。

  • 我们可以在 WCF 合同中指定只允许这些 x 字符串值吗?
  • 使用枚举会更好吗?

我们将与 java web 服务进行互操作。

0 投票
1 回答
565 浏览

c# - 如何实施合同优先

我正在与通过网络推送提供数据的第 3 方供应商合作。

他们说他们的 web-push 依赖于一个契约优先的 web 服务,并且他们已经为我提供了一个 WSDL 来开发。

采用此 WSDL 并将其转换为 Web 服务涉及哪些步骤?我已经尝试过了,但我的服务没有记录任何命中它的数据。

我意识到这有点含糊,但是整个“合同优先”对我来说还是很新鲜的。

提前致谢

乔恩

0 投票
1 回答
2207 浏览

wcf - WSDL 解析器如何决定为请求/回复操作生成 void 方法?

我在这上面花了 5 个小时,而且我已经花了 30 个小时来编写这个以合同为先的规范(“激进的”截止日期,所以我很愚蠢),我看不出我错过了什么。

我不想要单向操作,因为我预计会出现故障。我已经构建了一个简单的 WCF 服务并检查了它生成的 WSDL,它确实往返于一个 void 方法,但我一直盯着它这么久(而且 WSDL 1.1 在最好的时候是如此烦人 - 滚上 2.0拜托)我再也看不到魔术是什么了。

谁能提供一些非常简单的 WSDL 来解释魔法?我的目标是 jax-ws 2.2 和 WCF 3.5/4.0 与这个 WSDL。我正在手写 WSDL,每次我尝试构建代理(在 java 或 .net 中)时,它总是构建一个带有返回消息的方法。我正在失去它。

0 投票
2 回答
1480 浏览

wcf - 从 *.xsd 文件生成 C# 代码以用作 WCF 服务

更新

我想基于 *.xsd 文件生成用作 WCF 服务的 C# 类文件。我怎样才能做到这一点?

0 投票
1 回答
648 浏览

rest - 与泽西岛的合同优先方法

我目前正在使用 JERSEY 开发具有现有 REST 服务的项目 API 层。大多数初始服务是在使用 jaxb 注释等的合同最后方法中创建的。最近,由于版本控制问题,通过向其他客户提供模式更容易第三方集成,我被要求使用合同优先方法。

任何人都可以为使用 REST 的合同优先方法提供有用的资源或阅读材料,因为我发现与合同优先方法相关的大部分内容都指向 SOAP 示例。

谢谢

0 投票
1 回答
1545 浏览

wcf - 如何让 WCF Data Contract Serializer 相信 WSDL 是 doc/lit/wrapped

我尝试按照http://blogs.msdn.com/b/donsmith/archive/2006/10/06/handcrafting-wcf_2d00_friendly-wsdls.aspx的指导来创建 WCF svcutil 将相信的 WSDL文档/文字包装格式。这样做时,svcutil 应该在 C# 中生成一个服务接口和代理代码,该代码使用数据协定序列化程序,以及包装器操作上的 OperationContractAttributes。相反,我得到了一个奇怪的双重包装,其中 BlahResponse1 类嵌套在 BlahResponse 类中,svcutil 告诉我 WSDL 没有包装,它将创建 MessageContracts 而不是 OperationContracts。

为了服务使用者的代码可读性,我想去掉 BlahResponse1 类,并让 svcutil 相信 WSDL 已包装。如何做到这一点?也许还有,一个人怎么不这样做?

我已经看到建议在架构中的一些但不是所有元素上设置 nillable="true" ,这些元素将成为数据合同。哪个应该是可空的,为什么?是否需要有不可为 nillable 的元素,设置 nillable="true" 是不好的?

如上面的链接所示,我尝试将架构划分为两个命名空间,但这似乎不起作用(或者被另一个问题掩盖了)。关于模式命名空间、导入与包含以及声明顺序有什么重要的吗?

我会包括模式/WSDL,但它们是专有的。此外,非常大并且分布在许多文件中。

0 投票
1 回答
6877 浏览

java - WADL 的问题/使用 Jersey 以合同优先的方法生成的 XSD

几天来,我一直在使用 Jersey 开发 REST Web 服务,并设法使所有 CRUD 操作正常工作,并使用多种交换格式:XML、JSON、Google Protobuf。

但是我面临一些与自动生成的 WADL 和 XSD 相关的问题。


语境

为了定义以这三种格式交换的对象,我遵循了“合同优先”的方法

  • 从我编写的 XSD 中,我使用 JAXB 生成了我的模型类;
  • 从我编写的等效 proto 文件中,我生成了 Google Protobuf 类(并且在内部有一种方法可以将它们转换为 JAXB 生成的对象,以便拥有一个独特的模型)。

但是,由于我希望我的用户也能够生成他们的类,我想共享这些模式文件(.xsd 和 .proto),并让它们与自动生成的 WADL 很好地集成

为此,感谢这个wiki 页面:

  • 我已经暴露了下面的两个文件
    • /schema/schema.xsd
    • /schema/schema.proto
  • 我添加了一个应用程序语法文件:

    /li>
  • 我添加了一个自定义的 WADL 生成器:

    /li>

这样,当我点击时,以下内容会出现在 WADL 中/rest/application.wadl


问题

/rest/application.wadl/xsd0.xsd是从我的课程中自动生成的,但我最初在schema.xsd. 除此之外,wadl2java在这个 WADL 上调用这样的工具会惨遭失败,大概是因为

  • /schema/schema.xsd, 和
  • /rest/application.wadl/xsd0.xsd

现在是冲突的(相同对象的两个定义)。


问题

  1. 有没有办法禁用这个自动生成的 XSD 的生成和传播?(因为我遵循这种“合同优先”的方法,所以我不需要它)

  2. /rest/application.wadl/xsd0.xsd如果没有,有没有办法在被击中时用我手动编写的 XSD 来“覆盖”它的内容?(我用谷歌搜索并找到了关于 WadlResource 的信息,用于生成自定义的 WADL,但没有找到关于 XSD 生成本身的信息)


在此先感谢您的帮助!

M。


编辑

1)我向泽西队提出了这个问题并得到了答复:http: //java.net/projects/jersey/lists/users/archive/2012-06/message/8

2) 根据 Pavel 的指示,我提出了一张罚单 (JERSEY-1230)。我目前正在跟进自己提交修复或从泽西队获得修复。