взаимодействие unmanaged -> managed
От: SHDN  
Дата: 15.01.10 07:28
Оценка:
Доброго всем времени суток
Есть несколько старых unmanaged приложений А1 А2 А3 и т.д. которые могут вызывать функции из unmanaged dll. Задач состоит в том чтобы прикрутить к этому общее managed приложение N, в котором будет находиться корректирующая логика для приложений А. Пока вижу такую цепочку взаимодействия А -> dll -> COM+ -> N. Не нравится мне в этой цепочке наличие COM+ который по сути будет простым ретранслятором вызовов , можно ли как нибудь уйти от COM+ в этой цепочке?
PS Рассматривал вариант передачи данных между dll и N по портам, но както не камильфо получается помоему
Re: взаимодействие unmanaged -> managed
От: SergeyT. США http://sergeyteplyakov.blogspot.com/
Дата: 15.01.10 08:47
Оценка:
Здравствуйте, SHDN, Вы писали:

SHD>Доброго всем времени суток

SHD> Есть несколько старых unmanaged приложений А1 А2 А3 и т.д. которые могут вызывать функции из unmanaged dll. Задач состоит в том чтобы прикрутить к этому общее managed приложение N, в котором будет находиться корректирующая логика для приложений А. Пока вижу такую цепочку взаимодействия А -> dll -> COM+ -> N. Не нравится мне в этой цепочке наличие COM+ который по сути будет простым ретранслятором вызовов , можно ли как нибудь уйти от COM+ в этой цепочке?
SHD> PS Рассматривал вариант передачи данных между dll и N по портам, но както не камильфо получается помоему

В статье "Взаимодействие неуправляемого и управляемого кода"
Автор(ы): Сергей Тепляков
Дата: 12.02.2009
Появление .Net Framework значительно облегчило создание многих видов приложений. Благодаря богатой библиотеки отпала необходимость в создании большого количества велосипедов, которые, в противном случае, создавались каждым из нас. Но, не смотря на это, существует множество «неуправляемого» кода, написанного на «голом» С++, который ничего не знает об .Net Framework и знать не может. Многие из этих приложений переписываются с использованием «управляемого» кода, но этот процесс не быстрый и у многих разработчиков появляется необходимость смешивать «управляемый» и «неуправляемый» код.
О том, как взаимодействовать с «неуправляемым» кодом из «управляемого» написано достаточно много, и это неудивительно, поскольку именно эта задача является наиболее распространенной в «смешанных» приложениях. Но бывает и обратная ситуация, у вас «неуправляемое» приложение (консольное приложение, служба или приложение, написанное с использование MFC), но появилась необходимость обратиться к некоторой управляемой библиотеке. Как быть? Переписывать заново нет ни времени, ни возможности, перекомпилировать с использованием ключа /clr, тоже не получается.
В данной статье я опишу общие принципы решения задачи обращения из «неуправляемого» кода к «управляемому», а также реализую оболочку для работы с распространенной библиотекой log4net.
как раз рассматривается механизм доступа из unmanaged приложений (даже скомпилированных без ключа /clr) к managed.
Re: взаимодействие unmanaged -> managed
От: TK Лес кывт.рф
Дата: 15.01.10 21:50
Оценка:
Здравствуйте, SHDN, Вы писали:

SHD> Есть несколько старых unmanaged приложений А1 А2 А3 и т.д. которые могут вызывать функции из unmanaged dll. Задач состоит в том чтобы прикрутить к этому общее managed приложение N, в котором будет находиться корректирующая логика для приложений А. Пока вижу такую цепочку взаимодействия А -> dll -> COM+ -> N. Не нравится мне в этой цепочке наличие COM+ который по сути будет простым ретранслятором вызовов , можно ли как нибудь уйти от COM+ в этой цепочке?


Что есть в вашем понимании COM+ и какие сервисы вам из него требуются? dll может быть написана на C++/CLI в этом случае все будет выглядеть как:

A -> dll(managed code) -> N
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[2]: взаимодействие unmanaged -> managed
От: SHDN  
Дата: 17.01.10 14:43
Оценка:
TK>Что есть в вашем понимании COM+ и какие сервисы вам из него требуются? dll может быть написана на C++/CLI в этом случае все будет выглядеть как:
В том то и дело что сервисы COM+ мне не нужны, в этой схеме он использоваться планируется как ретранслятор, прельщает же простота разработки взаимодействия unmanaged -> managed

TK>A -> dll(managed code) -> N

Это возможно только если сделать так, чтобы приложения А глядя на функции managed dll видели обыкновенные _stdcall функции... возможно ли такое?
Re[2]: взаимодействие unmanaged -> managed
От: SHDN  
Дата: 17.01.10 14:48
Оценка:
Здравствуйте, SergeyT., Вы писали:

ST>В статье "Взаимодействие неуправляемого и управляемого кода"
Автор(ы): Сергей Тепляков
Дата: 12.02.2009
Появление .Net Framework значительно облегчило создание многих видов приложений. Благодаря богатой библиотеки отпала необходимость в создании большого количества велосипедов, которые, в противном случае, создавались каждым из нас. Но, не смотря на это, существует множество «неуправляемого» кода, написанного на «голом» С++, который ничего не знает об .Net Framework и знать не может. Многие из этих приложений переписываются с использованием «управляемого» кода, но этот процесс не быстрый и у многих разработчиков появляется необходимость смешивать «управляемый» и «неуправляемый» код.
О том, как взаимодействовать с «неуправляемым» кодом из «управляемого» написано достаточно много, и это неудивительно, поскольку именно эта задача является наиболее распространенной в «смешанных» приложениях. Но бывает и обратная ситуация, у вас «неуправляемое» приложение (консольное приложение, служба или приложение, написанное с использование MFC), но появилась необходимость обратиться к некоторой управляемой библиотеке. Как быть? Переписывать заново нет ни времени, ни возможности, перекомпилировать с использованием ключа /clr, тоже не получается.
В данной статье я опишу общие принципы решения задачи обращения из «неуправляемого» кода к «управляемому», а также реализую оболочку для работы с распространенной библиотекой log4net.
как раз рассматривается механизм доступа из unmanaged приложений (даже скомпилированных без ключа /clr) к managed.


Спасибо — смотрю, что пока смущает: проект планировался на C# , а тут кусок придется делать на C++ (а я в не не очень силен)... но подход который там предлагается определенно интереснее, всетаки не требующая регистрации dll выглядит поизящнее чем COM+ в данной ситуации
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.