2010-05-24 76 views
1

我想设置一个WCF服务,以便客户端对我发送的对象所做的任何更改也反映在服务器端。例如,如果大会A具有以下...通过WCF传递对象,以便服务器接收客户端更改

namespace AssemblyA 
{ 

    public class Person 
    { 
     public string FirstName { get; set; } 
     public string LastName { get; set; } 
    } 

    [ServiceContract] 
    public interface IServer 
    { 
     [OperationContract] 
     Person GetPerson(); 
    } 

} 

而组件B引用组件A ...

using AssemblyA; 

namespace AssemblyB 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      <snip> 
      IServer server = factory.CreateChannel(); 
      Person person = server.GetPerson(); 
      person.FirstName = "Kilroy"; 
      person.LastName = "WuzHere"; 
     } 
    } 
} 

是什么让这个最简单的/最佳方式服务的副本Person对象的反映也反映了客户所做的改变?这甚至有可能吗?

回答

2

在服务器上创建一个以Person对象为参数的方法。

[ServiceContract] 
public interface IServer 
{ 
    [OperationContract] 
    Person GetPerson(); 

    [OperationContract] 
    void UpdatePerson(Person person) 
} 

并在设置了FirstName和LastName属性后,从客户端调用它。

server.UpdatePerson(person); 
+0

我不确定这是否适用于我正在尝试做的事......上面给出的示例非常简单,但对象我其实想要通过更复杂 - 属性有多个事件,并导致UI更改,硬件输出等,我会给它一个镜头,虽然。 – 2010-05-25 12:26:13

+0

你能否多说一点你的情况?你希望客户端事件触发服务器操作,还是反过来呢?服务器和客户端是否位于本地网络或Internet上? 如果您的Person对象有事件,您可以实现客户端代码以在服务器上运行Update方法。 – 2010-05-25 14:19:01

+1

对不起,花了这么长的时间来回应 - 在做了一些更多的研究之后,我想我误解了WCF的工作原理以及它能做的事情。我已经能够实施像你这样的建议,适合我需要做的事情。谢谢! – 2010-06-02 22:01:59

相关问题