【发布时间】:2012-12-20 18:53:00
【问题描述】:
我很难完全掌握 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 接口如何引用该对象;所以当调用时服务器有一个不为空的有效对象。
文本框中的客户端类型 ---> 代理发送 ---> 反序列化 ---> 服务 ---> 序列化 ---> 使属性可供使用。
【问题讨论】:
-
我有点迷失在“如果您将这些文本框设置为日期;它们将在元数据中传输”-您是在问序列化是如何工作的吗?
-
好吧,如果用户真的填写了这些字段。你如何检索这些值;或获取这些变量。我隐约了解序列化和反序列化,但在所有示例中,它们只是回调变量;你如何操纵用户变量?当编码到您现在只有一个数据协定变量要使用的接口时,序列化只是神奇地出现了?那有意义吗?如果没有,我会相应地思考和编辑问题。
-
很多平台使用数据绑定来完成这项工作。您将文本框绑定到对象中的字段,然后当用户更改值时,对象中的数据绑定字段会更新。然后,您可以将更新的对象发送回您的服务器以保存它。仅供参考,Visual Studio 从 Web 服务引用创建的代理对象本机支持数据绑定操作。
-
有点。当您在客户端引用您的服务时,它将为服务公开的类型(例如
Customer)构造代理对象。您的 UI 将数据绑定到那些代理对象,这些代理对象必须与服务器上的那些类型兼容(在序列化级别上)。换句话说,您的客户端也将拥有一个具有所有相同属性的Customer类型。