通过WCF传递对象,以便服务器接收客户端更改

时间:2010-05-24 22:17:09

标签: c# wcf

我想设置一个WCF服务,以便客户端对我发送它们的对象所做的任何更改也会反映在服务器端。例如,如果程序集A具有以下内容......

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 个答案:

答案 0 :(得分:2)

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

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

    [OperationContract]
    void UpdatePerson( Person person )
}

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

server.UpdatePerson( person );

答案 1 :(得分:1)

如果您需要处理客户与客户之间的事件。服务器,你应该寻找与WCF的双工合同。这是一个非常好的详细示例,您可以从: http://www.codeproject.com/Articles/491844/A-Beginners-Guide-to-Duplex-WCF