问题标签 [datacontract]

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 回答
398 浏览

wcf - WCF 服务可以使用的 DataContract 数量是否有限制?

使用 WCF3.5SP1、VS2008。构建一个公开大约 10 种服务方法的 WCF 服务。我们已经定义了大约 40 种服务使用的 [DataContract] 类型。我们现在体验到向项目添加额外的 [DataContract] 类型(在与其他现有类型相同的命名空间中)不会正确公开。新类型不在使用 WSDL 生成的 XSD 模式中。我们已经到了复制和重命名现有(和工作)类型的地步,但它也不存在于生成的 WSDL/XSD 中。

我们已经在两台不同的开发人员机器上尝试过,同样的问题。

可以作为服务的 [DataContract] 公开的类型数量是否有限制?每个命名空间?

0 投票
2 回答
3763 浏览

c# - 对如何在 C# 中使用 JSON 感到困惑

几乎所有关于将 C# 与JSON结合使用的问题的答案似乎都是“使用 JSON.NET”,但这不是我要寻找的答案。

我这么说的原因是,从我在文档中读到的所有内容来看,JSON.NET 基本上只是 .NET 框架中内置的 DataContractSerializer 性能更好的版本......

这意味着如果我想反序列化一个 JSON 字符串,我必须为我可能拥有的每个请求定义完整的强类型类。因此,如果我需要获取类别、帖子、作者、标签等,我必须为这些内容中的每一个定义一个新类。

如果我构建了客户端并确切知道字段是什么,这很好,但我使用的是其他人的 API,所以我不知道合同是什么,除非我下载示例响应字符串并从 JSON 字符串手动创建类.

这是唯一的方法吗?有没有办法让它创建一种可以用 json["propertyname"] 读取的哈希表?

最后,如果我必须自己构建这些类,那么当 API 发生变化而他们没有告诉我时会发生什么(因为 twitter 似乎因为这样做而臭名昭著)?我猜我的整个项目都会中断,直到我进入并更新对象属性......

那么使用 JSON 时的一般工作流程到底是什么?一般来说,我的意思是与图书馆无关。我想知道一般情况下它是如何完成的,而不是专门针对目标库......

0 投票
1 回答
2852 浏览

wcf - WCF - 从接口继承的 DataContract

我有一个数据合同作为我的 WCF 接口的一部分,它继承自 IIdentity:

该服务返回我的 AuthenticationIdentity 对象就好了。但是,当我尝试对客户端进行明显的转换时:

我收到一条投诉,称 AuthenticationIdentity 无法转换为 IIdentity。我尝试将 ServiceKnownTypes 添加到界面:

但仍然没有运气。有任何想法吗?

0 投票
2 回答
1892 浏览

c# - 在 WCF 中,多态数据契约是拥有多个操作契约还是只有一个操作更好?

我想知道在 WCF 中使用多个操作合同或只有一个操作合同与多态数据合同是否更好。

让我给你一个小例子:

或者

动作契约将是一个抽象类,action1Contract 和 action2Contract 都将从中继承。动作契约将do()在其接口中指定成员函数,而该成员函数又将在子类中重载

个人而言,我发现第二种方法更有趣,因为它允许您将数据和操作很好地封装在派生的 actionContract 中,从而更容易添加新操作。但这是我第一次使用 WCF,所以您可能更了解!

0 投票
1 回答
576 浏览

json - Asp.Net MVC 2:与客户端 javascript 共享数据合同的任何方式?

如果您有以下情况:

  1. Asp.Net MVC 2 项目具有定义视图模型的对象类。
  2. 使用 JSON 将这些模型序列化到 Web 浏览器客户端。
  3. 客户向对象添加信息,例如发票上的订单行。
  4. 客户端将对象发送回服务器进行处理。

有没有办法与客户端共享 JSON 对象的数据合约?我真的想让服务器使用 Order 工厂创建一个 Order,然后将其发送给客户端。客户端使用数据合同添加订单行,并将完全填充的对象作为 JSON 发送回。

我真的很想在客户端的 JavaScript 中执行以下操作:

任何指向 Asp.Net MVC 2 的示例或网页链接都会非常有帮助。

0 投票
2 回答
596 浏览

linq-to-sql - 克隆 LINQ To SQL 对象扩展方法引发对象处置异常

我有这个扩展方法来克隆我的 LINQ To SQL 对象:

但是,当我携带未加载所有引用的对象时,在使用 DataLoadOptions 查询时,有时它会抛出对象已处理的异常,但问题是我不要求未加载的引用(null)。

例如,我有很多引用的客户,我只需要保存地址引用 EntityRef<> 并且我不加载任何其他内容。但是,当我克隆对象时,此异常迫使我使用 Customer 对象加载所有 EntitySet<> 引用,这可能太多并减慢应​​用程序速度。

有什么建议么?

0 投票
2 回答
10523 浏览

.net - 将 WCF 与抽象类一起使用

如何在 WCF 中为抽象类定义 DataContract?

我有一个“人”类,我使用 WCF 成功通信。现在我添加一个从 Person 引用的新类“Foo”。一切都还好。但是当我使 Foo 抽象并定义一个子类时,它会失败。它在服务器端失败并出现 CommunicationException,但这并不能告诉我太多。

我为测试而制作的简化类:

0 投票
1 回答
774 浏览

c# - 设计 WCF 合同(操作/数据)

我目前正在寻求设计一些 WCF 服务,并希望获得社区对处理操作/数据合同的最佳方式的意见。

我有 2 个基本操作合同,第一个创建报价,第二个在报价中添加项目(并在幕后计算总数)。

第一个接收客户信息商店信息返回报价

第二个接受报价项目对象,计算总数并返回项目的报价

我的问题是关于如何在这种情况下设计数据合约?

对于CreateQuote,应该传入一个带有客户属性和商店属性集的报价对象,还是应该有某种包含客户和商店对象但没有传入报价对象的 QuoteRequest 对象?

对于AddQuoteItem,是否应该使用包含 Quote 对象的必需属性集传入 QuoteItem 对象,或者是否应该存在具有 Quote 对象和 item 对象(没有关系)的 QuoteItemRequest 对象,然后使用 QuoteItem 对象重新计算 Quote回来?

换句话说,它们应该看起来像这样吗?

或者他们应该看起来像这样?

0 投票
1 回答
1067 浏览

rest - WCF 休息多个 DataContracts 包装

所以我正在使用 Rest WebHttp 调用 wcf 网络服务。我还设置了第二个绑定 mex 进行测试。我的方法有效,但是当我尝试通过 fiddler 或通过客户端应用程序直接 httppost 进行测试时,我收到 400 Bad request 错误。我将多个数据合同传递给该方法。它迫使我使用 Wrapped 的 BodyStyle,但我不知道如何格式化我的 xml 以进行测试。我创建了一个测试方法来尝试这个和同样的错误。这是我的代码:我所有的其他方法都适用于一个数据合同,但我有两个的这个没有。我相信问题出在这篇文章底部的 xml 中,它需要被包装,但我不知道如何包装它。

我正在使用的 xml

0 投票
1 回答
1180 浏览

wcf - 使用代理在 WCF 中序列化委托?

我有一个想法,但我需要帮助来实现它。

WCF 在其合同中不支持委托。相反,它有一个繁琐的回调合约机制,我正在寻找一种方法来克服这个限制。

我考虑过使用 aIDataContractSurrogate将合同中的每个委托替换为将被序列化到远程端点的令牌。在那里,令牌将被反序列化为生成的委托。此生成的委托将发送一个通用回调消息,该消息封装了所有参数(调用委托时使用的参数)。

通用回调消息将到达第一个端点,并在那里使用参数调用原始委托。

这是有目的的(简化的)序列:

  1. A 调用 B-pr​​oxy.Foo(callback)
  2. 回调通过 DelegateSurrogate 序列化。
  3. DelegateSurrogate 将委托存储在专用委托存储中,并用令牌替换它
  4. 消息到达 B 的端点
  5. 令牌通过 DelegateSurrogate 反序列化
  6. DelegateSurrogate 构造一个生成的委托
  7. B.Foo(generatedCallback) 被调用
  8. 稍后,B 正在调用 generatedCallback(args)
  9. generatedCallback(args) 在 A 的端点上调用一个专用的通用合约:CallbackContract-proxy.GenericCallback(args)
  10. 在 A 的端点上调用 CallbackContract.GenericCallback(args)
  11. 从存储中检索原始回调并调用:callback(args)

NServiceBus我之前已经使用服务总线(我知道如何实现步骤 3、6、9 和 11。我还不知道如何连接 WCF 中的所有内容——尤其是代理部分。

就是这样 - 我希望我的问题是有道理的,并且这里的集体智慧将能够帮助我建立这个。

这是我想要的解决方案的示例用法: