Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Składniki aplikacji używają dozownika zasobów COM+ do uzyskiwania dostępu do oraz zarządzania udostępnionymi, nietrwałymi informacjami o stanie, takimi jak połączenia między składnikami a danym menedżerem zasobów. W czasie wykonywania dynamiczne pule zasobów, takie jak połączenia z bazą danych, połączenia sieciowe, połączenia z kolejkami, wątki, obiekty i bloki pamięci, są udostępniane dystrybutorowi zasobów. Proces aplikacji osiąga wysoką wydajność przy użyciu minimalnej liczby często używanych zasobów. Dozownik zasobów może również automatyzować transakcje i odzyskiwanie. (Aby uzyskać więcej informacji na temat tej funkcji, zobacz Automatyczne Odzyskiwanie Zasobów).
Notatka
Zasób to wszystko, co jest tworzone przez dozownik zasobów. Na przykład połączenie z menedżerem zasobów jest typowym zasobem. Zasoby znajdują się w pamięci dyspensera zasobów i nigdy nie są kopiowane do menedżera dyspensera zasobów. Zasób jest znany tylko przez nieprzezroczyste dojście (RESID) i może być zdolny do wykonywania transakcji lub nie. Chociaż zarządzane zasoby często mogą być połączeniami ze składnikiem zarządzającym stanem trwałym, same połączenia nie są trwałe. Dozownik zasobów często używa powiązanego menedżera zasobów do zachowania stanu trwałego.
W architekturze system dozownika zasobów COM+ składa się z dozowników zasobów i menedżera dozownika. Dozowniki zasobów to składniki dostarczane przez użytkownika, które zapewniają aplikacjom proste interfejsy do udostępnionych zasobów. Menedżer dozownika jest składnikiem dostarczanym przez COM+, który koordynuje działania różnych dozowników zasobów.
Dozownik zasobów to składnik biblioteki dll (dynamic-link library), który zapewnia co najmniej dwa interfejsy. Pierwszy, IDispenserDriver, dostarcza menedżerowi dozownika podstawowe informacje na temat tworzenia, niszczenia i zaangażowania zasobów, którymi zarządza. Drugi jest udostępniany aplikacjom i może być interfejsem COM lub zestawem interfejsów lub może być interfejsem programowania aplikacji (API), z którym składnik jest połączony za pośrednictwem biblioteki importu. Aplikacja może wywołać dowolny dozownik zasobów, co z kolei może oferować dowolny interfejs API aplikacji. Jeśli dozownik zasobów jest składnikiem automatyzacji, można uzyskać do niego dostęp z poziomu programu Microsoft Visual Basic. Dystrybutor zasobów jest tworzony, gdy składnik aplikacji się do niego odwołuje.
Menedżer dyspozytorów dostarczony przez COM+ śledzi dyspozytory zasobów i koordynuje je. Implementuje dwa interfejsy: IDispenserManager i IHolder. dozowniki zasobów rejestrują się przy użyciu interfejsu IDispenserManager. Menedżer dozownika następnie daje im wskaźnik do IHolder, którego używają do powiadamiania menedżera dozownika o swoich działaniach.
Transakcyjny dozownik zasobów musi zarejestrować się w transakcji koordynatora transakcji rozproszonej (DTC). Oznacza to użycie wewnętrznego lub zewnętrznego (do dozownika zasobów) menedżera zasobów, który jest zgodny z transakcjami OLE.
Uwaga
Model programowania COM+ obejmuje transakcje deklaratywne , które pomagają chronić pracę wykonywaną przez obiekt aplikacji w okresie jego istnienia. Gdy obiekt aplikacji używa dozownika zasobów COM+, wykonywana praca jest automatycznie transakcyjna; oznacza to, że składnik nie musi jawnie deklarować transakcji. Te transakcje są definiowane w specyfikacji transakcji OLE, implementowane przez DTC i inicjowane w imieniu obiektu aplikacji przez COM+. Aby uzyskać więcej informacji, zobacz Przewodnik po rozwoju DTC.
Zasoby nie muszą być transakcyjne. Dozownik zasobów, który grupuje zasoby inne niż transakcyjne, może nadal osiągać wysoką wydajność, umożliwiając obiektom aplikacji dostęp do udostępnionej puli tych zasobów. Ten typ dozownika zasobów zwraca S_FALSE z metody IDispenserDriver::EnlistResource, co oznacza, że dozownik zasobów nie zarejestrował zasobu, ponieważ zasób nie jest transakcyjny.
Dozownik zasobów może również działać niezależnie od COM+, zapewniając tylko możliwości zarządzania pulą zasobów. Jeśli na przykład dozownik zasobów uwidacznia interfejs API (taki jak ODBC), dozownik zasobów może być biblioteką DLL dostępną przez aplikację za pośrednictwem biblioteki importowej (lub przy użyciu LoadLibrary i GetProcAddress funkcji). Dozownik zasobów może być również składnikiem COM, do którego uzyskuje dostęp aplikacja, wywołując CoCreateInstance. Bez modelu COM+ nie można wywołać metody EnlistResource, ponieważ menedżer dozownika zasobów nie ma wiedzy o bieżącej transakcji składnika.
Podczas uruchamiania biblioteka DLL dozownika zasobów musi zarejestrować się w menedżerze dozownika. Menedżer dozownika jest zarządzającym wykonawczym, który zarządza ładowaniem i rozładowywaniem dozowników zasobów, zapewnia kontekst COM+ oraz kontroluje menedżera statystyk inwentarza. (Aby uzyskać więcej informacji, zobacz COM+ Dispenser Manager.) Dozownik zasobów najpierw wywołuje funkcję GetDispenserManager, a następnie wywołuje metodę IDispenserManager::RegisterDispenser, przekazując wskaźnik IDispenserDriver, który implementuje dozownik zasobów. To wywołanie zwraca odwołanie do IHolder.
Aby zamknąć, dozownik zasobów wywołuje IHolder::Close. Aby zapewnić poprawne zamknięcie pakietu, dozownik zasobów musi być w stanie obsłużyć sytuację, gdy po zażądaniu zamknięcia przez COM+ wywołania nadal będą przychodzić z obiektów biznesowych.
Poniższe tematy w tej sekcji zawierają bardziej szczegółowe informacje o usłudze dozownika zasobów COM+:
- Menedżer dyspensera COM+
- Typy wątków dozowników zasobów COM+
- Dostępne stany zasobów w puli dla dyspozytora zasobów COM+
- rejestrowanie zasobu w transakcji
- proces alokacji zasobów dozownika zasobów
- Śledzenie nieprzydzielonych zasobów
- Automatyczne Odzyskiwanie Zasobów
- Typy używane w interfejsach dozowników zasobów COM+
- Interfejsy Dozownika Zasobów COM+
Tematy pokrewne