问题标签 [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.
.net - WCF 数据合同
我有一个为内部客户端托管的 WCF 服务——我们可以控制所有客户端。因此,我们将使用数据合约库来消除对代理生成的需求。我想使用一些只读属性并有一些没有默认构造函数的数据契约。谢谢你的帮助...
wcf - .NET 基类型不能被 WCF 序列化
我正在编写 WCF 服务并希望公开一些自定义配置元素(例如自定义 ConfigurationSection 和 ConnectionStringSettings),以便我可以修改服务的配置。
我的自定义配置元素之一继承自System.Configuration.ConfigurationElementCollection
. 当我尝试启动我的 WCF 服务时,我收到以下错误消息...
无法序列化类型“System.Configuration.ConfigurationElementCollection”。考虑使用 DataContractAttribute 属性对其进行标记,并使用 DataMemberAttribute 属性标记您想要序列化的所有成员。
有没有办法为这种类型实现 DataContract?我的继承类标有 [DataContract] 属性。
wcf - 创建具有多个命名空间的 WCF 消息
我正在尝试创建一个 WSTransfer 实现(我意识到 Roman Kiss 已经为 WCF 编写了一个 - 但它实际上并不符合规范)
由于 WSTransfer 是松散耦合的,我最终放弃了服务联系人的数据契约;所以每个创建消息看起来像消息创建(消息请求)。
这很好用,一切都很可爱,直到需要回击的时候。
我遇到的问题是构建 WSTransfer 响应的方式。以 create 为例,响应看起来像
如您所见,响应消息中有 3 个不同的 XML 命名空间。
现在,参与其中就很容易了;你可以(即使你没有公开它),创建一个数据合约并设置值并回火
但是,在为响应中的子元素设置不同的命名空间时会出现问题;看来 WCF 的数据合同不这样做。即使使用
在响应类中的各个元素上似乎没有进行任何更改,所有内容都成为为合同类指定的命名空间的一部分。
那么如何将不同的命名空间应用于 WCF 消息中的各个元素?是通过合同,还是通过其他一些诡计多端的游戏?
.net - WCF DataContract/ServiceOperation 涉及 .NET XmlDocument 类型
我只是想知道要在 WCF 通信中通过线路发送的数据合同。我知道为了互操作性,不建议(甚至不允许?)将本机 .NET 类型作为数据合同的一部分发送。
我希望有一个服务可以接受,作为ServiceOperation
.NETXmlDocument
类型的输入。DataContract
如果我要创建一个包含XmlDocument
类型(将用属性标记)的包装类(将用属性标记DataMember
),并将其用作参数ServiceOperation
- 这是否合法/可能?
我如何确保互操作性,同时仍然具有XmlDocument
类型的便利性?string
接受 a作为参数ServiceOperation
然后在服务端XmlDocument
使用方法实例化a 可能是更好的设计选择吗?XmlDocument.LoadXml(string)
为任何帮助/意见/评论欢呼,我刚刚开始掌握 wcf,所以我只想在我开始创建服务之前清除我脑海中的任何困惑。
谢谢!
wcf - wcf 服务到服务通信和数据合同
我最近参与了开发 WCF 服务,它充当一种多播中继(即接受一些传入数据,进行一些处理,然后将其发送到多个其他外部服务)。该服务(我将其称为“我的服务”)由第二个内部服务提供数据。
此数据将从我的服务中作为 XML 保存在字符串中进行中继。因此我的服务可以简单地接受一个字符串作为方法请求的参数——但这并不理想,因为我们失去了类型安全性。
第二个服务有一个类,它封装了我的服务需要处理的所有信息,并最终中继到外部服务。
第二个服务在它的数据契约中公开了这个类。理想情况下,为了保持类型安全,并且不需要对第二个服务的实现进行大量更改,我应该接受这种类型的类作为我的服务操作的参数。
我在数据合同中说我需要这种类型的类而不复制代码的最佳方式是什么?我可以向第二个类添加服务引用,然后使用在我的数据合同中创建的代理类吗?
我只是无法解决这个问题,即使这似乎是一个微不足道的问题!
为任何帮助欢呼!
wcf - 企业级数据合同是一种好的做法吗?
在企业级程序集中定义 DataContracts 然后在 WCF 服务项目中引用它们而不是在单个 WCF 服务解决方案级别定义它们是一种好习惯吗?我看到的所有 WCF 示例都避开了该主题,并且仅在服务解决方案中定义了 DataContracts。我与之交谈的一些程序员希望将 DataContracts 视为企业级规范数据模型的不同风格,而不是服务本地合同。我还没有找到任何支持或反对这种观点的论据。
这个问题可能很难选择正确的答案,但我会努力的。我至少会对任何我觉得能增加我对这个话题的理解的东西投赞成票。
c# - 设计 SOA WCF Web 服务时的最佳实践是什么?
给定一个运营合同,例如:
这可以重新设计为:
我喜欢 MessageContract 的一件事是我可以更明确地控制 SOAP 消息的格式。
同样,我可以编写几乎相同的代码,但使用 DataContract:
我喜欢 DataContract 的一件事是我可以定义 IsRequired、Order 和 Name。
今天,我预计唯一的消费者将是 WCF 客户端。但是,我想先设计契约,并尽可能地坚持 SOA 实践。我不想让 WCF 规定我的 SOAP、WSDL 和 XSD,而是希望 XML 定义 WCF 层,但使用 WCF 生成它,以免向 WCF 添加任何自定义消息处理。我想遵循最常见的 SOA XML 约定,我认为这些约定可能所有标签都以小写开头——对吗?我想尽可能地容忍版本。
总是像这样创建请求和响应消息是否明智?三种格式中的哪一种促进了最佳 SOA 实践?我是否应该更进一步并定义一个 DataContract 和一个 MessageContract,而 MessageContract 只包含 DataContract?或者,如果我真正公开一种新类型(即不将消息类型创建为容器),我是否应该只使用 DataContracts?
我知道一组加载的问题,但我正试图深入其中,我不确定将问题分开是否能提供足够的上下文来获得我正在寻找的答案。
.net - 可移植/可互操作的 WCF 合同
我想知道是否有人在设计 WCF 合同时有一些好的提示/注意事项,考虑到 Web 服务互操作性,无论是在旧的 Microsoft Web 服务技术(例如 WSE)和非 Microsoft 技术方面,例如Java 调用 WCF Web 服务。
例如:在将 DateTime 暴露为合同中的类型时,是否需要考虑任何特殊规则?字典和哈希表怎么样?使用各种可用的绑定可能会遇到什么问题?
wcf - 在 WCF 中命名通用 DataContract
我使用通用类作为响应数据协定。一切都很好,这大大简化了我的 WCF 服务的设计。
每个请求都有一个标准响应对象,其签名如下:
- 状态(枚举)
- 消息(字符串)
- 结果 (T)
下面是响应类:
这非常有效。我唯一的问题是 WCF 客户端为这个对象“ResponseOfAccountnT9LOUZL”赋予了一个非常糟糕的名称
有没有办法解决这个问题?
我应该将此类用作继承的抽象类吗?我宁愿没有多个类使我的代码混乱。
.net - 如何控制 .NET DataContract 序列化,使其使用 XML 属性而不是元素?
如果我有一个标记为 a 的类DataContract
和一些用属性标记的DataMember
属性,我可以轻松地将其序列化为 XML,但它会创建如下输出:
我更喜欢的是属性,比如......
该DataMember
属性允许我控制名称和顺序,但不能控制它是否被序列化为元素或属性。我环顾四周并找到了DataContractFormat
,IXmlSerializable
但我希望有一个更简单的解决方案。
最简单的方法是什么?