- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在编写我的第一个 WCF 服务。我决定先将服务作为 DLL 来编写,然后再考虑 WCF 的内容,这就是我现在所处的位置。
架构师建议我应该坚持我已经完成的消息对象的特定格式。然而,我在消息对象中使用了接口(interface)、复杂类型及其列表。我要添加属性,但有点困惑。
这是我的代码的示例。
[ServiceContract]
public interface MyServiceContract
{
[OperationContract]
MyMethodResponseMessage MyMethod(MyMethodRequestMessage request);
}
public class MyService : MyServiceContract
{
public MyMethodResponseMessage MyMethod(MyMethodRequestMessage request)
{
//Do things
}
}
//Messages
[MessageContract]
public class MyMethodResponseMessage
{
[MessageBodyMember]
public MyMethodResponse Body { get; set; }
}
[DataContract]
public class MyMethodResponse
{
[DataMember]
public IMyComplexTypeItem { get; set; }
[DataMember]
public List<IMyComplexType> Items { get; set; }
[DataMember]
public bool Success { get; set; }
}
//DTO
public interface IMyComplexType
{
[DataMember]
string Identity { get; set; }
}
[DataContract]
public class MyComplexType1 : IMyComplexType
{
[DataMember]
public virtual string Identity
}
谁能评论一下使用 MessageContract、DataContract、DataMember 和 Serializable 等的正确性?有任何指示或明显的错误吗?
还有哪个序列化器最好用?确保我从中获得格式良好的 XML 以便其他客户可以轻松使用我的服务的最佳策略是什么?
最佳答案
请求/响应 - [DataContract]
也可以。消息契约(Contract)的优点之一是您可以针对成员设置隐私,但在许多情况下这不是必需的。在这种情况下,我更愿意让契约(Contract)尽可能简单,就像数据契约(Contract)一样。
Re which serializer - 这在很大程度上是配置的一个因素。默认情况下,通过 http,例如,它将是 DataContractSerializer
。
但是,我不确定 IMyComplexType
的列表是否会很好地工作。您可以尝试,但通常它需要具体类型。请注意,对于基类,您可以使用 [KnownType]
来指定允许的子类型。
请注意,与 XmlSerializer
不同,它不是集合成员必须具有 setter 的要求 - 尽管如果您可能需要添加 OnDeserializing
回调方法来初始化列表这样做(WCF 不调用构造函数)。
此外:您还可以使用 protobuf-net使用数据契约(Contract)和 WCF(只要它们有明确的订单);这比普通的 xml 更密集。不过,它目前不支持消息契约(Contract)。
关于c# - WCF:MessageContract、DataContract……一头雾水?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/673638/
我对 WCF 相当陌生,只是有一个关于如何正确使 MessageContract 继承工作的问题。我的设置的简化版本如下 - 一个“基本”消息类型,然后是另一个从它继承的“测试”消息。 [Messag
我有以下 wcf 服务: [ServiceContract] public interface IUnitTestingService { [OperationContract] Te
我收到了一位客户关于他们的网络服务客户端如何工作的规范。该规范是从服务以及相应的 XSD 发送和接收的实际 SOAP XML 消息。客户希望我实现符合客户要求的网络服务。客户端是用 axis2 ws-
我在我的 wcf 契约(Contract)中使用 Stream 对象,因此被迫使用 MessageContract 而不是 DataContract。 [MessageContract] p
我正在编写我的第一个 WCF 服务。我决定先将服务作为 DLL 来编写,然后再考虑 WCF 的内容,这就是我现在所处的位置。 架构师建议我应该坚持我已经完成的消息对象的特定格式。然而,我在消息对象中使
我正在尝试使用以下 MessageContract 通过 Silverlight 客户端上传文件: [MessageContract] public class CategoryClientFileT
我正在尝试用 WCF 服务替换 asmx WebService。我的主要目标是保持 SOAP 消息相同。调用方不是 .NET,需要大量返工才能对契约(Contract)进行细微更改。 我的痛点是我试图
有什么方法可以在使用 Mtom 的同时使用 datacontracts 吗? 最佳答案 有 nothing preventing您不能使用与 MTOM 的数据契约(Contract)。 关于c# -
我想知道,当我使用流式传输通过 WCF 发送数据时,是否有可能返回任何内容?我使用 netTcpBinding,客户端和服务器在同一个本地网络中。 这是我的代码: [ServiceContract()
有没有办法让 DataContractSerializer 序列化一个 [MessageContract],就像它在通过 SOAP 传输时一样? 我有一个类在 WCF 调用的线路上显示如下: J
我正在尝试针对现有示例消息测试 [MessageContract] 类,并且我正在寻找一种方法来简化开发,方法是将示例消息文件读入我的 [MessageContract] 类并查看它是如何工作的(我在
我正在尝试将 MessageContract 添加到我的 WCF 服务,类似于这个问题中发生的事情:WCF: using streaming with Message Contracts 这是我得到的
预先说明:我无法更改传入的 SOAP 请求的格式,因为它们已由国际标准固定 (weeeeeeeee)。 我有一个 SOAP 请求进入我的 WCF 服务,看起来像这样:
我们有一个包含以下契约的 WCF 设置: [ServiceContract( Namespace = Constants.Namespaces.HL7Namespace, Na
我正在导入一个 WSDL 作为服务定义(入站到我的服务),无论出于何种原因,客户端正在格式化请求,使得 WCF 无法在代理类没有 MessageContract 装饰的情况下反序列化它. 我已经通过在
我有一个 WCF 服务操作的要求,它接受一个大流,处理它并返回该流。 我用了an MSDN article on Large Data Streaming作为我需要的引用。我遵循了那篇文章中的建议。
我可以在 WCF 中使用递归 MessageContract 吗?例如: 我需要发布一些参数,其中一个参数是一个文件流数组。这是我的操作合约: DomainResult AddSomethingNew
我需要所有 3 个项目都在 Body 中,以便客户端可以使用它们,他不能修改 Header 中的数据(首先在 MessageHeader 中的前 2 个): [MessageContract] pub
我是一名优秀的程序员,十分优秀!