Pull to refresh

Comments 3

Я много слышал про макровирусы, но это видео меня просто удивило! Статью сохраню. :)

Здравствуй, Word.Interop, давно не виделись. Сразу небольшой совет всем к статье — не используйте это в сервером окружении. Это написано на сайте MS, но на stackoverflow все говорят "плюй и используй, будет проще". Не будет.


  • Зависания при работе с несколькими инстансами.
  • Тонна недокументированных ошибок в коде скопипащенном из MSDN вида "Com ошибка, что-то сломалось, насяльника"
  • Работа с dynamic-ами, т.к. возможно несколько версий office на компьютере у пользователя и надо подгружать библиотеку динамически по версии офиса прописанной в реестре.
  • Куча проблем с DCOM config-ом в корпоративных сетях.
  • Доустановка MS Online Services, отсутствие которых тоже приводит к недокументированным ошибкам.
  • Любой алерт вида "документ защищенный", "есть изменения, сохранить?", "файл создан в старой версии, обновить?" приводит к рестарту процесса, т.к. через Com модель к этому алерту у вас нет доступа. И вы должны либо не допустить его появления, либо если появился — то всё, ничего не сделаешь, грохай процесс.
  • Поднятие UI сеанса на сервере, проблемы с правами.
  • и опять же зависаниями "RPC unavailable" Word без причины.
    Основная беда — все ошибки недокументированны, невоспроизводимы и несодержательны. Наиболее частая ситуация, которую вы будете получать — процесс Word-а висит на сервере не закрытым, но уже без UI и не откликается, в логе скупой "RPC server unavailable" — живи с этим.

Применили решение послушавшись stackoverflow, задача была достаточно сложной — сравнение и объединение нескольких файлов по сложному алгоритму с учетом рецензирования несколькими людьми, примечаний, колонтитулов, таблиц и т.п.
В итоге оказалось проще просто продублировать все механизмы MS на OpenXML, чем заставить работать Interop. Спустя несколько потерянных месяцев трудозатрат всё было переписано на OpenXML — работает стабильно и значительно быстрее.

Да, на Msdn обстоятельная статья на тему «почему вам не следует использовать это в серверном решении».
Sign up to leave a comment.