Добрый день, возник вопрос по взаимодействию с Microsoft Office. Мне упорно советуют использовать позднее связывание для написания Add-In'a, в силу изменения интерфейсов объектов оффиса. А в статье "Automating Microsoft Office 97 and Office 2000" по этому поподу ничего не нашел, все тихо и спокойно. Посоветуйте, как вернее?
Здравствуйте, Roman.Egorishev, Вы писали:
RE>Добрый день, возник вопрос по взаимодействию с Microsoft Office. Мне упорно советуют использовать позднее связывание для написания Add-In'a, в силу изменения интерфейсов объектов оффиса. А в статье "Automating Microsoft Office 97 and Office 2000" по этому поподу ничего не нашел, все тихо и спокойно. Посоветуйте, как вернее?
аспект №1. Быстродействие:
Там другая беда с быстродействием: все офисные приложения работают строго как out-of-process сервера и никак по-другому (был бы рад ошибиться в этом пункте). Соответственно, обретаем неслабые тормоза, связанные с маршаллингом. По сравнению с этим, тормоза на позднее связывание ничтожны.
аспект №2. Совместимость:
Тут наш выбор — позднее связывание, это не требует комментариев, надеюсь.
вывод (ИМХО): позднее связывание имеет смысл в данном случае.
Здравствуйте, softilium, Вы писали:
S>аспект №1. Быстродействие: S>Там другая беда с быстродействием: все офисные приложения работают строго как out-of-process сервера и никак по-другому (был бы рад ошибиться в этом пункте). Соответственно, обретаем неслабые тормоза, связанные с маршаллингом. По сравнению с этим, тормоза на позднее связывание ничтожны.
S>аспект №2. Совместимость: S>Тут наш выбор — позднее связывание, это не требует комментариев, надеюсь.
S>вывод (ИМХО): позднее связывание имеет смысл в данном случае.
А если учесть простоту реализации! Ведь с ранним связыванием кодирование и понимание закодированного упрощается значительно.
И по поводу несовместимости, неужели, если ориентироваться на более раннюю версию оффиса ( например 97 ), то могут возникнуть вопроы в XP ?
Здравствуйте, Roman.Egorishev, Вы писали:
RE>А если учесть простоту реализации! Ведь с ранним связыванием кодирование и понимание закодированного упрощается значительно.
Кодирование — упрощается только из-за проверки типов на этапе компиляции. Понимание уже написанного кода не улучшается, ИМХО.
RE>И по поводу несовместимости, неужели, если ориентироваться на более раннюю версию оффиса ( например 97 ), то могут возникнуть вопроы в XP ?
Да, такие проблемы есть. Пример: объект Find из Microsoft Word. Его рекомендуется использовать сугубо с помощью позднего связывания, ибо его GUID совпадает с каким-то древним объектом из TLB, обеспеичвающей совместимость с Excel 5. Подробности есть в Microsoft knowledge base.
Здравствуйте, softilium, Вы писали:
S>Здравствуйте, Roman.Egorishev, Вы писали:
S>Кодирование — упрощается только из-за проверки типов на этапе компиляции. Понимание уже написанного кода не улучшается, ИМХО.
Т.е. только из-за проверки? Насколько я понимаю, намного проще вызвать метод у объекта явно, чем через позднее связывание через Invoke с вагоном и маленькой тележкой параметров?
Здравствуйте, Roman.Egorishev, Вы писали:
RE>Т.е. только из-за проверки? Насколько я понимаю, намного проще вызвать метод у объекта явно, чем через позднее связывание через Invoke с вагоном и маленькой тележкой параметров?
Это зависит напрямую от используемого языка. В Delphi все пляски с бубнами вокруг Invoke берет на себя компилятор. В С/С++ этого нет.
Здравствуйте, softilium, Вы писали:
S>Здравствуйте, Roman.Egorishev, Вы писали:
RE>>Т.е. только из-за проверки? Насколько я понимаю, намного проще вызвать метод у объекта явно, чем через позднее связывание через Invoke с вагоном и маленькой тележкой параметров?
S>Это зависит напрямую от используемого языка. В Delphi все пляски с бубнами вокруг Invoke берет на себя компилятор. В С/С++ этого нет.
Здравствуйте, softilium, Вы писали:
S>аспект №1. Быстродействие: S>Там другая беда с быстродействием: все офисные приложения работают строго как out-of-process сервера и никак по-другому (был бы рад ошибиться в этом пункте). Соответственно, обретаем неслабые тормоза, связанные с маршаллингом. По сравнению с этим, тормоза на позднее связывание ничтожны.
Человеку уже советует написание Add-in_а... так-что out-of-process сервера не будет. Зачем ему использовать позднее связывание... я тоже не пойму. Тормоза надо убирать в любом случае... поэтому в этом аспекте позднее связывание идет в баню
S>аспект №2. Совместимость: S>Тут наш выбор — позднее связывание, это не требует комментариев, надеюсь.
Пожалуйста, поподробнее, чем позднее связывание нам здесь помогает? Используя интерфейсы 97_го офиса можно достаточно спокойно жить.
S>>аспект №2. Совместимость: S>>Тут наш выбор — позднее связывание, это не требует комментариев, надеюсь.
LM> Пожалуйста, поподробнее, чем позднее связывание нам здесь помогает? Используя интерфейсы 97_го офиса можно достаточно спокойно жить.
Позднее связывание идет по имени, ранее — по guid. GUID-ы у них задуплились, они это признают. Это может быть проблемой. Объект Word.Find — пример.