WCF с .NET 2.0
-
19-09-2019 - |
Вопрос
Нам нужно реализовать службу WCF на машине, на которой может работать только .NET 2.0.
Машина представляет собой POS-терминал Windows XPe, и мы не нашли способа установить .NET 3.0.Мы не можем отформатировать его с использованием нового образа XPe, поскольку установлено фирменное приложение POS и драйверы.
Есть ли способ реализовать службу WCF в .NET 2.0?Мы можем использовать стандартный XmlSerializer для сообщений как .NET CF да, но .NET CF не поддерживает роль сервера...
Альтернативное решение — каким-то образом установить .NET 3.0.Программа установки сообщает, что Windows XP SP2 не установлена, и Центр обновления Windows не работает на XPe.
Есть идеи?
ОБНОВЛЯТЬ:Нам также хотелось бы иметь возможность использовать МЫЛО веб-сервисы, но наша целевая платформа не имеет IIS установлен.Кто-нибудь знает хороший (качественный) способ размещения веб-службы .NET 2.0 без IIS?
РЕШЕНИЕ:Мы используем Cassini с веб-службами .NET 2.0, как было предложено в отмеченном ответе.Кажется, до сих пор это работает хорошо.Спасибо за помощь.
Решение
Похоже, вы исчерпали большую часть возможностей.Есть ли какая-либо причина, по которой вам необходимо использовать WCF вместо простых веб-служб SOAP, которые .NET 2.0 поддерживает «из коробки»?Хотя я понимаю, что использовать старую технологию неприятно, я подозреваю, что у вас будет меньше проблем, если вы пойдете по относительно распространенному пути, чем каким-то образом собирая реализацию WCF на .NET 2.0.
(Я настоятельно рекомендую против пытаюсь использовать сборки .NET 3.0 в .NET 2.0.Это вполне может нарушать лицензию — вам придется это проверить — но также может привести к скрытым нарушениям, которые будет очень сложно отладить.Ведь кто знает точно что делает установщик .NET 3.0?Вы хотите отслеживать каждый записанный им ключ реестра?Ты может пусть это сойдет с рук, но я думаю, что это плохая идея.)
Другие советы
Я могу представить две возможности:
- Попробуйте одну из систем, которая свяжет множество DLL, используемых вашим приложением, в один exe-файл.Один из таких инструментов описан здесь: http://www.remotesoft.com/linker/linker_faq.html
- .NET 3.0 представлял собой в основном несколько новых DLL (WPF, WCF и WF), добавленных в .NET 2.0.Вероятно, вам удастся просто скопировать соответствующие библиотеки DLL вместе с вашим приложением.(Некоторые люди думают, что это опасная идея, но вы этого не узнаете, пока не попробуете.)
Разве вы не можете поставить между ними «Прокси»?Таким образом, ваша POS взаимодействует с прокси-сервером, используя SOAP/ASMX, а затем прокси-сервер взаимодействует со службой WCF.
Я согласен, попытка «взломать» DLL .net 3.0 в систему .net 2.0 звучит как настоящая боль.
Ответ нет.Вы не можете установить или каким-либо образом использовать WCF в системе 2.0.
Ваши варианты:
- WCF создан для работы со всеми стандартами WS-*.Вы можете использовать Web Services Enhancements (WSE) 3.0 или вручную написать собственный класс, используя удаленные классы .net.
- Вы можете посмотреть Mono Olive.Предполагается, что это репликация WCF с открытым исходным кодом.