Взаимодействие с Microsoft Office
От: Roman.Egorishev  
Дата: 13.09.05 09:20
Оценка:
Добрый день, возник вопрос по взаимодействию с Microsoft Office. Мне упорно советуют использовать позднее связывание для написания Add-In'a, в силу изменения интерфейсов объектов оффиса. А в статье "Automating Microsoft Office 97 and Office 2000" по этому поподу ничего не нашел, все тихо и спокойно. Посоветуйте, как вернее?
Re: Взаимодействие с Microsoft Office
От: softilium Россия http://www.pristroy.com
Дата: 13.09.05 09:49
Оценка:
Здравствуйте, Roman.Egorishev, Вы писали:

RE>Добрый день, возник вопрос по взаимодействию с Microsoft Office. Мне упорно советуют использовать позднее связывание для написания Add-In'a, в силу изменения интерфейсов объектов оффиса. А в статье "Automating Microsoft Office 97 and Office 2000" по этому поподу ничего не нашел, все тихо и спокойно. Посоветуйте, как вернее?



аспект №1. Быстродействие:
Там другая беда с быстродействием: все офисные приложения работают строго как out-of-process сервера и никак по-другому (был бы рад ошибиться в этом пункте). Соответственно, обретаем неслабые тормоза, связанные с маршаллингом. По сравнению с этим, тормоза на позднее связывание ничтожны.

аспект №2. Совместимость:
Тут наш выбор — позднее связывание, это не требует комментариев, надеюсь.


вывод (ИМХО): позднее связывание имеет смысл в данном случае.
Re[2]: Взаимодействие с Microsoft Office
От: Roman.Egorishev  
Дата: 13.09.05 09:58
Оценка:
Здравствуйте, softilium, Вы писали:

S>аспект №1. Быстродействие:

S>Там другая беда с быстродействием: все офисные приложения работают строго как out-of-process сервера и никак по-другому (был бы рад ошибиться в этом пункте). Соответственно, обретаем неслабые тормоза, связанные с маршаллингом. По сравнению с этим, тормоза на позднее связывание ничтожны.

S>аспект №2. Совместимость:

S>Тут наш выбор — позднее связывание, это не требует комментариев, надеюсь.


S>вывод (ИМХО): позднее связывание имеет смысл в данном случае.


А если учесть простоту реализации! Ведь с ранним связыванием кодирование и понимание закодированного упрощается значительно.

И по поводу несовместимости, неужели, если ориентироваться на более раннюю версию оффиса ( например 97 ), то могут возникнуть вопроы в XP ?
Re[3]: Взаимодействие с Microsoft Office
От: softilium Россия http://www.pristroy.com
Дата: 13.09.05 10:11
Оценка:
Здравствуйте, Roman.Egorishev, Вы писали:

RE>А если учесть простоту реализации! Ведь с ранним связыванием кодирование и понимание закодированного упрощается значительно.


Кодирование — упрощается только из-за проверки типов на этапе компиляции. Понимание уже написанного кода не улучшается, ИМХО.

RE>И по поводу несовместимости, неужели, если ориентироваться на более раннюю версию оффиса ( например 97 ), то могут возникнуть вопроы в XP ?


Да, такие проблемы есть. Пример: объект Find из Microsoft Word. Его рекомендуется использовать сугубо с помощью позднего связывания, ибо его GUID совпадает с каким-то древним объектом из TLB, обеспеичвающей совместимость с Excel 5. Подробности есть в Microsoft knowledge base.
Re[4]: Взаимодействие с Microsoft Office
От: Roman.Egorishev  
Дата: 13.09.05 10:18
Оценка:
Здравствуйте, softilium, Вы писали:

S>Здравствуйте, Roman.Egorishev, Вы писали:



S>Кодирование — упрощается только из-за проверки типов на этапе компиляции. Понимание уже написанного кода не улучшается, ИМХО.


Т.е. только из-за проверки? Насколько я понимаю, намного проще вызвать метод у объекта явно, чем через позднее связывание через Invoke с вагоном и маленькой тележкой параметров?

Или я неправильно мыслю?
Re[5]: Взаимодействие с Microsoft Office
От: softilium Россия http://www.pristroy.com
Дата: 13.09.05 10:21
Оценка:
Здравствуйте, Roman.Egorishev, Вы писали:

RE>Т.е. только из-за проверки? Насколько я понимаю, намного проще вызвать метод у объекта явно, чем через позднее связывание через Invoke с вагоном и маленькой тележкой параметров?


Это зависит напрямую от используемого языка. В Delphi все пляски с бубнами вокруг Invoke берет на себя компилятор. В С/С++ этого нет.
Re[6]: Взаимодействие с Microsoft Office
От: Roman.Egorishev  
Дата: 13.09.05 12:48
Оценка:
Здравствуйте, softilium, Вы писали:

S>Здравствуйте, Roman.Egorishev, Вы писали:


RE>>Т.е. только из-за проверки? Насколько я понимаю, намного проще вызвать метод у объекта явно, чем через позднее связывание через Invoke с вагоном и маленькой тележкой параметров?


S>Это зависит напрямую от используемого языка. В Delphi все пляски с бубнами вокруг Invoke берет на себя компилятор. В С/С++ этого нет.


В моем случае — это как раз С++, в лице MFC
Re[7]: Взаимодействие с Microsoft Office
От: algol Россия about:blank
Дата: 13.09.05 13:29
Оценка:
Здравствуйте, Roman.Egorishev, Вы писали:

RE>В моем случае — это как раз С++, в лице MFC


Так насколько я помню, MFC как раз генерит обертку для COM с использованием Invoke. Так что проблем здесь быть не должно.
Re[2]: Взаимодействие с Microsoft Office
От: LMars Россия  
Дата: 20.09.05 05:15
Оценка: +1
Здравствуйте, softilium, Вы писали:

S>аспект №1. Быстродействие:

S>Там другая беда с быстродействием: все офисные приложения работают строго как out-of-process сервера и никак по-другому (был бы рад ошибиться в этом пункте). Соответственно, обретаем неслабые тормоза, связанные с маршаллингом. По сравнению с этим, тормоза на позднее связывание ничтожны.

Человеку уже советует написание Add-in_а... так-что out-of-process сервера не будет. Зачем ему использовать позднее связывание... я тоже не пойму. Тормоза надо убирать в любом случае... поэтому в этом аспекте позднее связывание идет в баню

S>аспект №2. Совместимость:

S>Тут наш выбор — позднее связывание, это не требует комментариев, надеюсь.

Пожалуйста, поподробнее, чем позднее связывание нам здесь помогает? Используя интерфейсы 97_го офиса можно достаточно спокойно жить.
Re[3]: Взаимодействие с Microsoft Office
От: softilium Россия http://www.pristroy.com
Дата: 21.09.05 10:14
Оценка:
Здравствуйте, LMars, Вы писали:


S>>аспект №2. Совместимость:

S>>Тут наш выбор — позднее связывание, это не требует комментариев, надеюсь.

LM> Пожалуйста, поподробнее, чем позднее связывание нам здесь помогает? Используя интерфейсы 97_го офиса можно достаточно спокойно жить.


Позднее связывание идет по имени, ранее — по guid. GUID-ы у них задуплились, они это признают. Это может быть проблемой. Объект Word.Find — пример.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.