Комментарии 10
А не проще было не городить огород с классом Message, а обрабатывать вызовы BinaryFormatter-ом, как это делает Remoting в стандартной конфигурации? Тогда бы и ref/out параметры обрабатывались нормально.
0
Но в данном примере удобно менять тип сериализатора, например на json или xml и использовать сервер для связки с клиентами написанными на других языках.
+4
Обрабатывать вызовы BinaryFormatter-ом было бы удобней, но ведь тогда у нас получится только синхронный сервер, а клиент должен обрабатывать и асинхронные вызовы.
0
Управляйте асинхронностью с помощью атрибутов. Например, если на методе атрибут есть, выполняйте его асинхронно.
0
Возможно вы не поняли. Нужно не на сервере выполнять метод асинхронно, а сервер должен иметь возможность в любой момент инициализировать событие у подключенного клиента.
0
И? Что мешает сериализовать и отправить? Создаёте фейковое сообщение возврата, а дальше делаете с сериализованным вызовом что угодно. Я просто писал уже подобную систему и искренне не понимаю ваших затруднений.
0
remotinglite.codeplex.com/ + любой IoC, поддерживающий интерсепторы для менеджмента привилегий (колец) сделает, в принципе то же самое. Но реализация интересная :)
+1
А мне нравится supersocket.codeplex.com/ очень тырпрайзненько и красиво. + На Windows 8 можно заюзать даже в десктопных приложениях новое апи для сокетов (пример можно посмотреть тут: habrahabr.ru/company/viber/blog/174287/)
+1
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Пишем свой синхронный/асинхронный клиент-сервер