Гессен на Windows Phone 7/Silverlight?

Я использую гессенский протокол для связи между сервером (java) и различными клиентскими приложениями. Сейчас я начал разрабатывать клиент для Windows Phone 7. Я скачал реализацию hessian C#, но она не компилируется для Windows Phone 7/silverlight.

Кому-нибудь удалось заставить его работать на WP7/Silverlight? Похоже, что есть много вещей, которые нужно сделать/изменить, чтобы заставить его работать, чего я хотел бы избежать, если это уже было сделано кем-то.

Спасибо.


person Michal    schedule 08.04.2010    source источник
comment
Здравствуйте, Майкл, не могли бы вы поделиться своей реализацией WP7/silverlight? Спасибо, Теро   -  person    schedule 23.02.2011
comment
Привет, Теро, извините, я не могу, это было сделано на моей работе, поэтому все права на этот код принадлежат моему боссу, поэтому я не могу поделиться :(   -  person Michal    schedule 05.07.2011


Ответы (2)


Что не компилируется? Я предполагаю, что реализация, вероятно, использует сокеты. Имейте в виду, что Silverlight (и, следовательно, wp7) ограничивает типы сетевых подключений, которые вы можете открывать... предпочитая асинхронные веб-запросы (через класс WebRequest) или службы WCF.

Скорее всего, загруженный вами код имеет проблемы с компактной версией сетевых классов, доступных на телефоне/серебряном свете. Дополнительную информацию о поддержке сокетов см. в этой статье msdn:
http://msdn.microsoft.com/en-us/library/cc296248%28VS.95%29.aspx

Если вы хотите напрямую общаться между телефоном и сервером, на котором работает гессенский протокол, самым простым способом, вероятно, будет прокси-связь через службу wcf, работающую на сервере asp.net.

person Joel Martinez    schedule 11.04.2010
comment
настройка другого сервера Windows с помощью wcf - это именно то, чего мы хотим избежать... там много ошибок... но я уже решил эту проблему... - person Michal; 14.04.2010
comment
Я понимаю, что вы хотели бы избежать этого :-) просто из любопытства, как вы это решили? - person Joel Martinez; 14.04.2010
comment
Мне пришлось исправить код. Поэтому я взял компактный фреймворк, включенный в загрузку, который содержит только необходимые классы для клиента. Затем мне пришлось изменить фабрику CHessianProxy, реализовать собственный CHessianProxy, переписать CHessianMethodCaller для работы с асинхронными запросами silverlight, заменить все ArrayLists на List‹Object›, заменить все Hashtables на Dictionary‹Object, Object› и удалить поддержку типов xml, поскольку нет XMLDocument и класс XMLNode в Silverlight. И новый прокси-сервер CHEssian не является настоящим прокси-сервером, поскольку нет удаленного взаимодействия и/или отражения.эмит, поэтому методы вызова довольно многословны. - person Michal; 15.04.2010
comment
Кроме того, динамическая загрузка типов из сборок не работала на Windows Phone, поэтому перед его использованием необходимо сопоставить класс С# с гессианским классом. Для этого мне пришлось также изменить CSerializerFactory... - person Michal; 15.04.2010

Итак, ответ: вам нужно переписать гессианскую реализацию C #, поскольку Silverlight 4 не имеет много вещей из мобильной платформы .net, в основном класса Proxy.

person Michal    schedule 04.07.2011