Przegląd integrowania z aplikacjami COM+
Program Windows Communication Foundation (WCF) udostępnia zaawansowane środowisko do tworzenia aplikacji rozproszonych. Jeśli używasz już logiki aplikacji opartej na składnikach hostowanej w modelu COM+, możesz użyć programu WCF, aby rozszerzyć istniejącą logikę zamiast ponownego zapisywania. Typowy scenariusz polega na tym, że chcesz uwidocznić istniejącą logikę biznesową COM+ lub Enterprise Services za pośrednictwem usług sieci Web.
Gdy interfejs w składniku COM+ jest uwidoczniony jako usługa sieci Web, specyfikacja i kontrakt tych usług są określane przez automatyczne mapowanie wykonywane w czasie inicjowania aplikacji. Na poniższej liście przedstawiono model koncepcyjny dla tego mapowania:
Jedna usługa jest definiowana dla każdej uwidocznionej klasy COM.
Kontrakt dla usługi pochodzi bezpośrednio z definicji interfejsu wybranego składnika z możliwością wykluczenia metody zdefiniowanej w konfiguracji.
Operacje w tym kontrakcie pochodzą bezpośrednio z metod w definicji interfejsu składnika.
Parametry tych operacji pochodzą bezpośrednio z typu współdziałania COM, który odpowiada parametrom metody składnika.
Adresy domyślne i powiązania transportu dla usługi są udostępniane w pliku konfiguracji usługi, ale można je ponownie skonfigurować zgodnie z potrzebami.
Uwaga
Kontrakty dla uwidocznionych usług sieci Web pozostają stałe, o ile interfejsy COM+ i konfiguracja pozostają niezmienione. Modyfikacja kilku interfejsów nie powoduje automatycznej aktualizacji dostępnych usług i wymaga ponownego uruchomienia narzędzia COM+ Service Model Configuration (ComSvcConfig.exe).
Wymagania dotyczące uwierzytelniania i autoryzacji aplikacji COM+ i jej składników są nadal wymuszane, gdy są używane jako usługa sieci Web.
Jeśli obiekt wywołujący inicjuje transakcję usługi sieci Web, składniki oznaczone jako transakcyjne w ramach tego zakresu transakcji.
Aby uwidocznić interfejs składnika COM+ jako usługę sieci Web, wymagane są następujące kroki bez modyfikowania składnika:
Ustal, czy interfejs składnika COM+ może być uwidoczniony jako usługa sieci Web.
Wybierz odpowiedni tryb hostingu.
Użyj narzędzia COM+ Service Model Configuration (ComSvcConfig.exe), aby dodać usługę sieci Web dla interfejsu. Aby uzyskać więcej informacji na temat używania ComSvcConfig.exe, zobacz How to: Use the COM+ Service Model Configuration Tool (Instrukcje: korzystanie z narzędzia konfiguracji modelu usługi COM+ Service).
Skonfiguruj wszelkie dodatkowe ustawienia usługi w pliku konfiguracji aplikacji. Aby uzyskać więcej informacji na temat konfigurowania składnika, zobacz How to: Configure COM+ Service Settings (Jak skonfigurować ustawienia usługi COM+).
Obsługiwane interfejsy
Istnieją pewne ograniczenia dotyczące typu interfejsów, które mogą być uwidocznione jako usługa sieci Web. Następujące typy interfejsów nie są obsługiwane:
Interfejsy, które przekazują odwołania do obiektów jako parametry — w sekcji Obsługa odwołań do obiektów ograniczonych opisano następujące ograniczone podejście do odwołań do obiektów.
Interfejsy, które przekazują typy, które nie są zgodne z konwersjami współdziałania .NET Framework COM.
Interfejsy dla aplikacji, które mają włączoną pulę aplikacji w przypadku hostowania przez com+.
Interfejsy składników, które są oznaczone jako prywatne dla aplikacji.
Interfejsy infrastruktury COM+.
Interfejsy z aplikacji systemowej.
Interfejsy ze składników usług Enterprise Services, które nie zostały dodane do globalnej pamięci podręcznej zestawów.
Obsługa odwołań do ograniczonych obiektów
Ponieważ wiele wdrożonych składników COM+ używa obiektów według parametrów referencyjnych, takich jak zwracanie obiektu zestawu rekordów ADO, integracja MODELU COM+ obejmuje ograniczoną obsługę parametrów odwołania do obiektów. Obsługa jest ograniczona do obiektów implementujących IPersistStream
interfejs COM. Obejmuje to obiekty zestawu rekordów ADO i można je zaimplementować dla obiektów COM specyficznych dla aplikacji.
Aby włączyć tę obsługę, narzędzie ComSvcConfig.exe udostępnia przełącznik allowreferences , który wyłącza zwykły parametr podpisu metody i sprawdza, czy narzędzie jest uruchamiane, aby upewnić się, że parametry odwołania do obiektu nie są używane. Ponadto typy obiektów, które są przekazywane jako parametry, muszą być nazwane i zidentyfikowane w <persistableTypes>
elemecie konfiguracji, który jest elementem podrzędnym <comContract>
elementu.
Gdy ta funkcja jest używana, usługa integracji COM+ używa interfejsu IPersistStream
do serializacji lub deserializacji wystąpienia obiektu. Jeśli wystąpienie obiektu nie obsługuje IPersistStream
, zgłaszany jest wyjątek.
W aplikacji klienckiej metody obiektu PersistStreamTypeWrapper mogą służyć do przekazywania obiektu do usługi i podobnie do pobierania obiektu.
Uwaga
Ze względu na niestandardowy i specyficzny dla platformy charakter podejścia serializacji najlepiej nadaje się do użycia między klientami WCF i usługami WCF.
Wybieranie trybu hostingu
Com+ uwidacznia usługi sieci Web w jednym z następujących trybów hostingu:
COM +-hosted
Usługa sieci Web jest hostowana w dedykowanym procesie serwera COM+ aplikacji (Dllhost.exe). Ten tryb wymaga jawnego uruchomienia aplikacji, zanim będzie mógł odbierać żądania usługi sieci Web. Opcje MODELU COM+ "Uruchom jako usługę NT" lub "Pozostaw uruchomione w przypadku bezczynności" mogą służyć do zapobiegania bezczynnym zamykaniu aplikacji i jej usług. Ten tryb zapewnia zarówno dostęp do usługi sieci Web, jak i modelu DCOM do aplikacji serwera.
Hostowane w Sieci Web
Usługa sieci Web jest hostowana w procesie roboczym serwera sieci Web. Ten tryb nie wymaga, aby tryb COM+ był aktywny po odebraniu początkowego żądania. Jeśli aplikacja nie jest aktywna po odebraniu tego żądania, zostanie ona automatycznie aktywowana przed przetworzeniem żądania. Ten tryb zapewnia również dostęp zarówno do usługi sieci Web, jak i modelu DCOM do aplikacji serwera, ale powoduje przeskok procesu dla żądań usługi sieci Web. Zazwyczaj wymaga to od klienta włączenia personifikacji. W programie WCF można to zrobić za pomocą AllowedImpersonationLevel właściwości WindowsClientCredential klasy, która jest dostępna jako właściwość klasy ogólnej ChannelFactory<TChannel> , a także Impersonation wartość wyliczenia.
Hostowane w Internecie w procesie
Usługa sieci Web i logika aplikacji COM+ są hostowane w procesie roboczym serwera sieci Web. Zapewnia to automatyczną aktywację trybu hostowanego w Sieci Web bez powodowania przeskoku procesu dla żądań obsługi sieci Web. Wadą jest to, że nie można uzyskać dostępu do aplikacji serwera za pośrednictwem modelu DCOM.
Zagadnienia związane z zabezpieczeniami
Podobnie jak w przypadku innych usług WCF, ustawienia zabezpieczeń uwidocznionej usługi są administrowane za pośrednictwem ustawień konfiguracji kanału WCF. Tradycyjne ustawienia zabezpieczeń MODELU DCOM, takie jak ustawienia uprawnień całego komputera DCOM, nie są wymuszane. Aby wymusić role aplikacji COM+ , dla składnika musi być włączona autoryzacja "kontroli dostępu na poziomie składnika".
Użycie powiązania niezabezpieczonego może pozostawić komunikację otwartą na naruszenie lub ujawnienie informacji. Aby temu zapobiec, zaleca się użycie zabezpieczonego powiązania.
W przypadku trybów COM+-hosted i hostowanych w sieci Web aplikacje klienckie muszą zezwolić procesowi serwera na personifikację użytkownika klienta. Można to zrobić w klientach WCF, ustawiając poziom personifikacji na Impersonation.
W przypadku usług Internet Information Services (IIS) lub usługi aktywacji procesów systemu Windows (WAS) przy użyciu transportu HTTP można użyć narzędzia Httpcfg.exe do zarezerwowania adresu punktu końcowego transportu. W innych konfiguracjach ważne jest, aby chronić przed nieuczciwymi usługami, które działają jako zamierzone usługi. Aby zapobiec uruchamianiu nieautoryzowanych usług w żądanym punkcie końcowym, można skonfigurować odpowiednią usługę do uruchamiania jako usługi NT. Dzięki temu legalna usługa może podawać adres punktu końcowego przed wszelkimi nieuczciwymi usługami.
Podczas uwidaczniania aplikacji COM+ ze skonfigurowanymi rolami COM+ jako usługą hostowaną w sieci Web należy dodać "Uruchom konto procesu usług IIS" do jednej z ról aplikacji. To konto, zwykle o nazwie IWAM_machinename, należy dodać, aby umożliwić czyste zamykanie obiektów po użyciu. Konto nie powinno mieć żadnych dodatkowych uprawnień.
Funkcji recyklingu procesów COM+ nie można używać w zintegrowanych aplikacjach. Jeśli aplikacja jest skonfigurowana do używania recyklingu procesów, a składniki są uruchomione w procesie hostowanym w modelu COM+ , uruchomienie usługi nie powiedzie się. To wymaganie nie obejmuje usług korzystających z trybu przetwarzania hostowanego w sieci Web, ponieważ ustawienia recyklingu procesu nie są stosowane.