[英]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.