Позволит ли WCF использовать ссылки на объекты через границы объектов, которые реализуют INotifyPropertyChanged или содержат объекты observablecollection? - PullRequest
1 голос
/ 20 апреля 2010

Итак, я создал серию объектов, которые взаимодействуют с частью оборудования через последовательный порт. Существует поток, выполняющий мониторинг последовательного порта, и если состояние оборудования изменяется, он обновляет свойства в моих объектах. Я использую наблюдаемые коллекции и INotifyPropertyChanged.

Я построил пользовательский интерфейс в WPF, и он отлично работает, показывая мне обновление в реальном времени при изменении аппаратного обеспечения и позволяет также отправлять изменения в аппаратное обеспечение, изменяя эти свойства с помощью привязок.

То, на что я надеюсь, - это то, что я могу запустить пользовательский интерфейс на другом компьютере, чем то, к чему подключено оборудование, без большого количества событий. Возможно даже разрешить нескольким пользовательским интерфейсам подключаться к одному и тому же сервису и взаимодействовать с этим оборудованием.

Пока я понимаю, что мне нужно создать службу WCF. Я пытаюсь выяснить, смогу ли я передать ссылку на объект, созданный в службе, клиенту, оставив события без изменений. Так что пользовательский интерфейс действительно будет просто связан с удаленным объектом.

Я двигаюсь в правильном направлении с WCF?

Также я вижу тонны примеров для WCF в C #, есть ли хорошие примеры практического использования в VB, которые могут соответствовать тому, что я пытаюсь сделать?

1 Ответ

2 голосов
/ 20 апреля 2010

Нет, WCF - это система, основанная на сообщениях - вы передаете сериализованные (текстовые / xml) сообщения. Нет никаких «ссылок на объекты», которые вы можете передать.

У клиента есть прокси, который дает вам возможность «вызвать» метод сервиса. Затем среда выполнения WCF захватывает параметры для этого вызова, упаковывает их в сериализованное сообщение и отправляет это сообщение по сети.

Нет прямой связи между клиентом и сервером - клиент не может "связаться" со службой, чтобы получить удаленный объект, и служба не может вернуться к клиенту, чтобы найти кто это называл или что-то в этом роде.

Все, что вы хотите отправить в службу, должно быть частью либо самого сообщения, либо заголовков, которые сопровождают сообщение.

Эти сообщения должны соответствовать стандарту схемы XML, что опять-таки означает: только конкретные неуниверсальные типы. Вы не можете передавать интерфейсы, вы не можете передавать ссылки - только конкретные типы, состоящие из базовых типов, таких как string, int, datetime и т. Д.

Обновление: возможно, вам нужно проверить шаблон публикации / подписки (pub / sub для краткости) - который вы также можете создать с помощью WCF. Это позволило бы вашему компьютеру для сбора данных публиковать своих данных на регулярной основе или всякий раз, когда они изменяются, и любое количество подписчиков может быть уведомлено об этих изменениях.

Ознакомьтесь с некоторыми из этих статей - поиск в Google или публикация в "WC sub pub sub" определенно получится еще!

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