Если хостом WCF службы вместо acad.exe сделать accoreconsole.exe, то проблемы.

Автор Тема: Если хостом WCF службы вместо acad.exe сделать accoreconsole.exe, то проблемы.  (Прочитано 6389 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Исходные данные
Windows 7 x64
Visual Studio 2015 Update 1.
AutoCAD 2016 SP1 x64
.Net Framework 4.6.1

Управляемое расширение для AutoCAD 2016 содержит WCF службу, сконфигурированную для работы по HTTP. Расширение в качестве хоста может использовать как acad.exe, так и accoreconsole.exe (т.е. может быть загружено в любое из обозначенных приложений). В конфигурационные файлы этих приложений добавлены соответствующие (полностью идентичные) настройки, относящиеся к работе WCF службы.

В качестве клиента выступает консольное приложение (для примера). Сервис и хост находятся на одной и той же машине.

Проблема
Если в качестве хоста выступает acad.exe, то всё работает. Если же хостом использовать accoreconsole.exe, то клиент не может достучаться до службы.  В обоих случаях telnet успешно подключается к нужному порту.

Для демонстрации проблемы создал простое решение, состоящее из двух проектов: клиента и сервиса. В каждом проекте, а так же непосредственно в каталоге решения находятся файлы readme.md, содержащие поясняющую информацию. Там же показаны результаты работы клиента для разных хостов (со скринами). Скачать исходный код решения можно отсюда.

Пока не могу понять, в чём причина такого поведения. Есть какие-то идеи?
« Последнее редактирование: 19-04-2016, 17:45:10 от Андрей Бушман »

Отмечено как Решение Андрей Бушман 19-04-2016, 15:46:15

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Оказалось, что обозначенная проблема присутствует только в accoreconsole.exe для AutoCAD 2016. Во всех более ранних версиях AutoCAD всё работает. Вывод: accoreconsole.exe в AutoCAD 2016 написан через зад.

Т.е. попросту говоря - это очередной баг accoreconsole.exe. Очень даже может быть, что присутствовать теперь он будет и в более новых версиях AutoCAD (проверить не могу)...

UPD
Дополнительно (по прежнему) присутствует так же и другой, пусть и менее досадный баг: то, что программно отправляется в консоль AutoCAD через Editor.WriteLine(...) по факту в консоли не появляется... Не очень приятно, но не смертельно (хотя чему-то удивляться уже давно не приходится)...
« Последнее редактирование: 19-04-2016, 17:53:18 от Андрей Бушман »

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Надеюсь, что ты установил все обновления на AutoCAD 2016 (на днях новое пробегало: https://knowledge.autodesk.com/support/autocad/downloads/caas/downloads/content/autodesk-C2-AE-autocad-C2-AE-2016-hotfix-3.html?v=2016) .
Кстати интересно проверить и в 2017-ом.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Последнее установленное обновление было SP1. Сейчас попробую накатать эти. Версии более поздние, чем 2016-я мне не интересны, вряд ли будут интересны (учитывая текущую ценовую политику Autodesk), да и попросту нет их у меня.

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Обозначенная заплатка не помогла.

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Подумал тут... Вполне возможно, что Autodesk умышленно прикрыла возможность хостинга сервисов в 2016-м accoreconsole.exe, дабы если не полностью пресечь (т.к. это не возможно), то хотя бы максимально усложнить возможность использования инструмента в системе распределённых приложений взаимодействующих через сервисы...

Наличие возможности хостинга WCF-сервисов в accoreconsole.exe для ряда случаев может существенно сократить потребность в количестве приобретаемых лицензий AutoCAD на предприятиях, где выполнение некоторого (если даже не всего) объёма работ можно автоматизировать (т.е. сделать программно). Одним сервисом или набором сервисов (читать как "одной лицензией AutoCAD") в таком случае сможет пользоваться неограниченное количество сотрудников компании одновременно. Для компании клиента это, безусловно, экономия... Но вот для компании Autodesk - это потеря денег... Т.е. налицо явный конфликт интересов и вполне очевидно, кто в данной ситуации имеет на руках "все козыри".

Кроме того, не стоит забывать, что теперь в Autodesk хотят одних и тех же овец стричь каждый год (новая ценовая политика) в виду чего обозначенная выше потенциальная возможность  сокращения количества лицензий вряд ли будет воспринята ими положительно. Т.о., как я уже писал выше: не исключено, что в 2016-м AutoCAD "кислород" сервисам был перекрыт преднамеренно...

Резюме
Я не удивлюсь, если в более новых версиях AutoCAD приложение accoreconsole.exe будет вовсе тихо изъято, мол "за ненадобностью"...
« Последнее редактирование: 21-04-2016, 20:45:55 от Андрей Бушман »