Передача объекта через WCF, чтобы сервер получал клиентские изменения - PullRequest
1 голос
/ 25 мая 2010

Я хотел бы настроить службу WCF, чтобы любые изменения, вносимые клиентом в объект, который я им отправлял, также отражались на стороне сервера. Например, если сборка А имеет следующее ...

namespace AssemblyA
{

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

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

}

А, сборка В, ссылки на сборку А ...

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 ]

2 голосов
/ 25 мая 2010

Создайте метод на сервере, который принимает объект Person в качестве параметра.

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

    [OperationContract]
    void UpdatePerson( Person person )
}

и вызовите его из клиента после того, как вы установили свойства FirstName и LastName.

server.UpdatePerson( person );
1 голос
/ 04 июня 2013

Если вам нужна обработка событий между клиентом и сервером, вам следует поискать дуплексные контракты с WCF. Это очень хороший подробный пример для вас: http://www.codeproject.com/Articles/491844/A-Beginners-Guide-to-Duplex-WCF

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...