繁体   English   中英

了解WCF客户端到服务器

[英]Understanding WCF Client to Server

我很难完全掌握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实际上在做什么。 这与我想要的相似。 我想获取Client接口输入并将其写入数据库和单独的日志文件。

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

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

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

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

更新:我的真实目的是了解Client接口如何引用该对象; 所以当调用时,服务器有一个非空的有效对象。

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

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

现在,在客户端上,您将拥有一个名为proxy的匹配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工具)可以自动为您编写这些代理类,这使得一切都可以神奇地工作。

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

特别是你可以检查DataContractSerializer

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM