WCF с.NET 2.0
Нам нужно реализовать службу 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.
Есть идеи?
ОБНОВЛЕНИЕ: Мы также хотели бы использовать опцию веб-сервисов SOAP, но на нашей целевой платформе не установлен IIS. Кто-нибудь знает хороший (производственное качество) способ размещения веб-службы.NET 2.0 без IIS?
РЕШЕНИЕ. Мы используем Cassini с веб-сервисами.NET 2.0, как указано в помеченном ответе. Это, кажется, работает хорошо до сих пор. Спасибо за помощь.
4 ответа
Похоже, вы исчерпали большинство возможностей. Есть ли какая-то причина, по которой вам нужно использовать 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 было в основном несколько новых библиотек (WPF, WCF и WF), добавленных в.NET 2.0. Вы, вероятно, можете просто скопировать соответствующие библиотеки вместе с вашим приложением. (Некоторые люди думают, что это опасная идея, но вы не узнаете, пока не попробуете.)
Не можете ли вы поставить "прокси" между ними? Таким образом, ваш POS взаимодействует с прокси-сервером с использованием SOAP/ASMX, а затем прокси-сервер взаимодействует со службой WCF.
Я согласен, попытка "взломать" .net 3.0 DLL в систему.net 2.0 звучит как боль в мире.
Ответ - нет. Вы не можете установить или каким-либо образом использовать WCF в системе 2.0
Ваши варианты:
- WCF создан для работы со всеми стандартами WS-*. Вы можете использовать Web Services Enhancements (WSE) 3.0 или написать собственный класс, используя удаленные классы.net.
- Вы можете посмотреть на Mono Olive. Предполагается, что репликация с открытым исходным кодом WCF.