2010-02-02 8 views
5

Mamy aplikację internetową ASP.NET 1.1. Wywołuje obiekt COM z C++, który z kolei wywołuje obiekt COM .NET. Pierwotnie ten obiekt .NET COM był zespołem .NET 1.1. Teraz musimy zmodyfikować ten obiekt .NET COM, a teraz korzystamy z Visual Studio 2008, więc jest to obiekt COM .NET 2.0. Obecnie nasza aplikacja ASP.NET 1.1 nadal może wywoływać obiekt COM C++, ale obiekt COM C++ nie może wywołać CoCreateInstance() na nowym obiekcie COM .NET 2.0. Kiedy konfigurujemy aplikację internetową do korzystania z platformy .NET 2.0, obiekt COM C++ może wywoływać obiekt COM .NET 2.0, ale w ten sposób łamie aplikację internetową.Czy można wywołać obiekt COM .NET 2.0 z aplikacji sieci Web ASP.NET 1.1?

W tej chwili planuję ponowne uruchomienie obiektu .NET COM przy użyciu programu Visual Studio .NET 2003, dzięki czemu mogę utworzyć zespół .NET 1.1. Ale wolałbym tego nie robić, jeśli to możliwe. Wiem, że powinniśmy również zaktualizować naszą aplikację internetową do .NET 2.0, ale to zajmie więcej czasu.

Czy istnieje sposób, aby nasza aplikacja internetowa ASP.NET 1.1 mogła wywoływać obiekt COM .NET 2.0 przez obiekt COM C++?

Dziękujemy za wszelkie sugestie.

-Dave Herrmann

+1

Brak szansy na uaktualnienie aplikacji .NET 1.1 do .NET 2.0? W .NET 2.0 jest bardzo niewiele, co mogłoby złamać aplikację .NET 1.1. –

Odpowiedz

1

Nie, jeśli uruchomisz go w procesie. Środowiska wykonawcze .Net v1.1 i v2.0 nie mogą współistnieć w procesie. Który kiedykolwiek jest ładowany pierwszy, wygrywa.

Powinieneś być w stanie uruchomić go w kontekście aktywacji COM + w oddzielnym procesie. To może być celowe rozwiązanie Twojej sytuacji.

+0

Tak, właśnie to odkrywam. Mój COM COM .NET 2.0 jest obiektem COM w trakcie, ponieważ działa jako część IIS. Myślę więc, że moim jedynym rozwiązaniem jest ponowne zainstalowanie starego środowiska programistycznego Visual Studio .NET 2003 i przebudowanie mojego zestawu przy użyciu .NET 1.1. Dzięki za odpowiedzi. -Dave Herrmann –

+0

Możesz uruchamiać obiekty COM-proc w oddzielnym procesie, a infrastruktura COM + generuje dla nich połączenia. To prosta sprawa konfiguracji. Możesz spróbować tego najpierw ... – codekaizen

0

Szybka sugestia - nic nie może ułatwić ... ale istnieje możliwość obejścia tego, dlaczego nie utworzyć mapy pamięci dla komunikacji IPC między aplikacją .NET 1.1 i .NET 2.0, na przykład , C++ COM tworzy mapę pamięci do odczytu/zapisu, obiekt .NET 1.1 otwiera mapę pamięci, zapisuje niektóre dane, obiekt COM C++ odczytuje ją i deleguje połączenie do obiektu COM .NET 2 ... i zwraca dane przez mapę pamięci ... przepraszam, jeśli nie mogłem dać ci lepszej sugestii niż to ... jesteś ograniczony przez wysiłek czasu?

1.1 NET -> C++ COM -> .NET 2.0 COM

Nadzieja to pomaga, poważaniem, Tom.

+0

Myślę, że skonfigurowanie kontekstu COM + byłoby znacznie łatwiejsze ... bez potrzeby kodowania i rekompilacji. – codekaizen

+0

@codekaizen: oh ok ... moja sugestia była trochę ekstremalna .... :) – t0mm13b

0

Jeśli dobrze Cię rozumiem, chcesz zbudować zespół w wersji 1.1, a nie w wersji 2.0. Dlaczego nie spróbujesz użyć kompilatora wiersza poleceń? Nie musisz instalować VS 2003 tylko po to, aby skompilować i zbudować zespół.

Jeśli nie wiesz, jak zacząć, zainstaluj VS na maszynie piaskownicy, zbuduj projekt i sprawdź okno wyjściowe - zobaczysz, jakie polecenia są używane do kompilowania i kompilowania (csc.exe lub vbc.exe są najważniejsze) W większości przypadków nie jest to nauka rakietowa.

Inna opcja: przejdź do wersji 2.0 - nie zaszkodzi.

P.S .: Obiekt .NET COM jest nieprawidłowy. Nazwij to zgromadzeniem.

Powiązane problemy