Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: Андрей Бушман от 07-04-2016, 16:22:40

Название: Если хостом WCF службы вместо acad.exe сделать accoreconsole.exe, то проблемы.
Отправлено: Андрей Бушман от 07-04-2016, 16:22:40
Исходные данные
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, содержащие поясняющую информацию. Там же показаны результаты работы клиента для разных хостов (со скринами). Скачать исходный код решения можно отсюда (https://bitbucket.org/Andrey-Bushman/sandboxcad).

Пока не могу понять, в чём причина такого поведения. Есть какие-то идеи?
Название: Re: Если хостом WCF службы вместо acad.exe сделать accoreconsole.exe, то проблемы.
Отправлено: Андрей Бушман от 19-04-2016, 15:05:33
Оказалось, что обозначенная проблема присутствует только в accoreconsole.exe для AutoCAD 2016. Во всех более ранних версиях AutoCAD всё работает. Вывод: accoreconsole.exe в AutoCAD 2016 написан через зад.

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

UPD
Дополнительно (по прежнему) присутствует так же и другой, пусть и менее досадный баг: то, что программно отправляется в консоль AutoCAD через Editor.WriteLine(...) по факту в консоли не появляется... Не очень приятно, но не смертельно (хотя чему-то удивляться уже давно не приходится)...
Название: Re: Если хостом WCF службы вместо acad.exe сделать accoreconsole.exe, то проблемы.
Отправлено: Александр Ривилис от 19-04-2016, 15:06:52
Надеюсь, что ты установил все обновления на 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-ом.
Название: Re: Если хостом WCF службы вместо acad.exe сделать accoreconsole.exe, то проблемы.
Отправлено: Андрей Бушман от 19-04-2016, 15:36:28
Последнее установленное обновление было SP1. Сейчас попробую накатать эти. Версии более поздние, чем 2016-я мне не интересны, вряд ли будут интересны (учитывая текущую ценовую политику Autodesk), да и попросту нет их у меня.
Название: Re: Если хостом WCF службы вместо acad.exe сделать accoreconsole.exe, то проблемы.
Отправлено: Андрей Бушман от 19-04-2016, 15:42:09
Обозначенная заплатка не помогла.
Название: Re: Если хостом WCF службы вместо acad.exe сделать accoreconsole.exe, то проблемы.
Отправлено: Андрей Бушман от 21-04-2016, 15:39:05
Подумал тут... Вполне возможно, что Autodesk умышленно прикрыла возможность хостинга сервисов в 2016-м accoreconsole.exe, дабы если не полностью пресечь (т.к. это не возможно), то хотя бы максимально усложнить возможность использования инструмента в системе распределённых приложений взаимодействующих через сервисы...

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

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

Резюме
Я не удивлюсь, если в более новых версиях AutoCAD приложение accoreconsole.exe будет вовсе тихо изъято, мол "за ненадобностью"...