0

我很难完全掌握 Windows Communication Foundation 的特定功能。我一个接一个地阅读教程,一本书又一本书。所以我对整个概念性质充满信心。

一部分除外;这是几乎像魔术一样的部分。这实际上使学习有点困难。

我将使用网络上最常见的示例。

我将从DataContract

[DataContract]
public class Customer
{

    // Declerations:
    private Guid id;
    private string firstName;
    private string lastName;
    private string emailAddress;

    [DataMembers]
    public Guid Id
    {
       get { return id; }
       set { id = value; }
    }

    [DataMember]
    public string FirstName
    {
         get { return firstName; }
         set { firstName = value; }
    }

    [DataMember]
    public string LastName
    {
         get { return lastName; }
         set { lastName = value; }
    }

    [DataMember]
    public string EmailAddress
    {
         get { return emailAddress; }
         set { emailAddress = value; }
    }

}

现在我创建了一个对象;我想暴露给我的客户。

所以我然后创建我的ServiceContract.

[ServiceContract]
public interface ICustomer
{

     [OperationContract]
     Customer AddCustomer(Customer info);

}

所以这就是我一直困惑自己的地方;假设您有一个客户端应用程序。您已使用该服务。您在单独的程序集/命名空间中有三个文本框。客户提出标准:

  • 电子邮件地址

如果您将这些文本框设置为日期;他们将在元数据中转移。但是在服务器上;我怎样才能把那个信息变量拉出来?我只是参考private Guid and private string variables吗?

我看到了一个关于如何将它添加到数据库的教程;但我并不完全理解 WCF 实际在做什么。这与我想要的相似。我想获取客户端接口输入并将其写入数据库和单独的日志文件。

我可以按照教程进行操作;但我想知道如何组装客户对象数据及其变量以在服务器上使用。

任何帮助都将是惊人的,一些澄清。

对不起,如果我的问题很愚蠢;我不是要开始辩论。只想了解如何提取这些变量并在服务器上使用它们。

提前致谢。如果我没有正确格式化问题,请告诉我。我真的很想了解它在概念上的作用。

更新: 我的真正意图是了解客户端接口如何引用该对象;因此,当进行调用时,服务器具有一个不为空的有效对象。

文本框中的客户端类型 ---> 代理发送 ---> 反序列化 ---> 服务 ---> 序列化 ---> 使属性可供使用。

4

2 回答 2

2

实际类型(例如您的Customer类)并没有真正通过网络传输。但是,这些类型中的公共信息是通过称为序列化的过程发送的。序列化允许以允许其通过网络传输的方式表示类型。这通常使用 SOAP、JSON 或 XML 等格式来表示。WCF 甚至允许您准确控制对象的序列化方式,允许您根据需要编写自己的格式化程序。基本上,当AddCustomer被调用时,WCF 正在服务器上构造一个Customer对象,对其进行序列化,然后通过网络发送这些位。

现在,在客户端上,您将拥有一个Customer称为代理的匹配对象。它可能看起来像:

public class Customer
{
    public Guid Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string EmailAddress { get; set; }
}

基本上,只有服务器版本的数据成员的缩小版本,没有代码或逻辑。在客户端, 的序列化表示Customer被反序列化回这个本地代理类的实例,在那里它可以用于各种客户端目的,包括绑定到本地 UI 元素。

Web 服务可以使用WSDL(一种用于描述 Web 服务契约的 XML 格式)公开这种类型的信息。Visual Studio(使用 wsdl.exe 工具)可以自动为您编写这些代理类,让一切都神奇地工作。

于 2012-12-20T19:41:19.997 回答
0

我不确定,但可能这就是您正在寻找的 数据传输和序列化

特别是您可以检查DataContractSerializer

您也可以查看这篇文章:Windows Communication Foundation 中的序列化

于 2012-12-20T19:01:29.010 回答