#.net #wcf #azure #compact-framework #windows-mobile-6.5
#.net #wcf #azure #compact-framework #windows-mobile-6.5
Вопрос:
Мы добавляем функциональность в клиент Windows Mobile для отправки данных в службу .NET. К сожалению, класс .cs, который svcutil.exe creates генерирует непригодный для использования код для Compact Framework. (это имя не существует в compact framework)
Существует ли замена или сторонний класс или обходной путь или любой другой способ заставить мобильное приложение подключаться к службе?
Мы можем изменить API / сервис, чтобы он был удобным для Compact Framework. Мы новички в игре CF (и .NET в целом) Мы не уверены в подходящем способе разрешить клиентам CF — метод «из коробки» подходит для настольных приложений, но, увы, не для мобильных устройств…
Редактировать
Я попытался использовать netcfSvcUtil.exe вместо этого, но получаю сообщение об ошибке (которое я не получаю с svcutil.exe ). Я полагаю, это означает, что созданная служба просто несовместима с compact Framework?
Я, к сожалению, не осведомлен об этом, но я бы предположил, что спецификации для передачи данных не имеют корреляции между платформами и что транспорт может быть разработан между tow. Я полагаю, это наивно…
Любые предложения о том, как это исправить? Нужно ли мне менять сторону обслуживания, чтобы она была удобной для мобильных / компактных платформ?
Редактировать
сообщения об ошибках, которые я получаю, следующие:
Ошибка: в инструменте произошла ошибка.
Ошибка: ошибка в приложении
Комментарии:
1. Какую ошибку вы получили с помощью netcfsvcutil? Кроме того, он может использовать базовую привязку http только при правильной настройке.
2. Ошибка была бесполезной — информации не было. Я опубликую сообщение в ближайшее время.
Ответ №1:
Как я упоминал в своем комментарии, первым делом нужно убедиться, что служба настроена с базовой привязкой HTTP, чтобы сделать ее удобной для CF.
Комментарии:
1. Хорошо, спасибо. Я предполагаю, что это не так. это какой-то wsdl, который не будет работать с CF. Не уверен, как это исправить. Я думаю, это совсем другой вопрос.
2. Это ваша служба WCF? Если это так, вы обычно можете добавить ednpoint в свой конфигурационный файл.
3. Да, это служба WCF. Я расскажу человеку, который внедрил сервис… Спасибо
Ответ №2:
Проверьте версию soap в wsdl, не уверен, но я могу вспомнить, что была проблема с использованием SOAP 1.2 в CF. Если это так, просто заставьте WCF использовать 1.1 в файле конфигурации.
В любом случае, опубликуйте сообщение об ошибке. Проблема, которую вы описываете, звучит странно, потому что обычно, когда возникает проблема с файлом wsdl, SVC не пытается генерировать какой-либо код. Вы уверены, что используете svc таким образом, чтобы создавать CF-код? Вы пробовали использовать Add Service Reference в Visual Studio? В большинстве случаев это отлично работало для меня.
Редактировать: я еще раз прочитал ваш вопрос. — Вы не можете использовать «обычный» svcutil.exe чтобы сгенерировать CF-код, используйте netcfsvcutil.exe версия — Вместо командной строки я действительно рекомендую использовать Visual Studio Add Service Reference, тогда мастер позаботится обо всем. — Да, веб-сервисы не зависят от технологий и поддерживаются CF, просто обязательно используйте привязки, поддерживаемые CF (например, BasicHttpBinding) и версию soap, поддерживаемую CF.
Сценарий WCF <-> Compact Framework вначале может сбивать с толку, но он работает хорошо.
Комментарии:
1. 1 netcfsvcutil также не работает — выдает бесполезное сообщение об ошибке. Однако щелчок правой кнопкой мыши и добавление ссылки на службу работали просто отлично.
2. Единственным сценарием, который я нашел с использованием netcfsvcutil из командной строки, полезным было ссылаться на библиотеку с определениями типов для открытого интерфейса. Однако это невозможно при использовании чего-либо из-за пределов CF в определении типов, что является довольно распространенным явлением. В большинстве случаев я бы рекомендовал использовать VS Wizard, поскольку это намного удобнее и упрощает и ускоряет обновление интерфейса.