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.
Baza danych rejestracji MODELU COM+ (RegDB) jest transakcyjnym menedżerem zasobów, który może uczestniczyć w transakcjach COM+. Dzięki temu można wykonywać operacje administracyjne w ramach transakcji i wszystkie zmiany konfiguracji zatwierdzone lub przerwane jako operacja niepodzielna, nawet na wielu komputerach. W niektórych okolicznościach może to być bardzo korzystne, chociaż istnieje izolacja i blokowanie zachowania, które należy wziąć pod uwagę, a wykonywanie zadań administracyjnych w ramach transakcji wiąże się z niewielkimi zmianami w normalnym modelu programowania administracyjnego.
Zalety wykonywania operacji administracyjnych w ramach transakcji
- **Spójność danych — **Operacje administracyjne wykonywane w ramach transakcji są zatwierdzane lub przerywane jako całość, chociaż istnieją pewne nie transakcyjne zasoby katalogu COM+, dla których może to nie być możliwe. (Zobacz zasoby katalogu com+ inne niż transakcyjne poniżej).
- **Spójne wdrażanie na wielu maszynach — **Jeśli wdrażasz aplikacje COM+ na wielu serwerach, możesz zagwarantować, że wszystkie serwery zostaną pozostawione z identycznymi konfiguracjami.
- **Skalowanie i wydajność — **Podczas wykonywania wielu operacji w ramach transakcji wszystkie operacje zapisu w bazie danych RegDB są wykonywane jednocześnie. Utrwalone zapisy w bazie danych RegDB są stosunkowo kosztowną operacją; Jeśli wykonujesz wiele operacji zapisu w bazie danych RegDB, możesz uzyskać dużą korzyść z wydajności, wykonując je wszystkie jednocześnie zamiast za każdym razem, gdy wywołujesz SaveChanges.
Zachowanie izolacji bazy danych RegDB
Aby zapewnić odpowiednią spójność danych i serializacji transakcji, baza danych RegDB wymusza określone zachowanie blokowania i izolacji podczas wykonywania operacji administracyjnych w ramach transakcji.
Za każdym razem, gdy składnik wykonujący pracę w ramach transakcji wywołuje dowolną metodę, która spowoduje zapis w katalogu COM+ — na przykład SaveChanges, InstallApplicationlub InstallComponent— blokada składnika zapisywania jest wykonywana w kodzie serwera wykazu COM+, który zablokuje dostęp do bieżących zatwierdzeń transakcji lub przerwania. Oznacza to, że zapisy mogą znajdować się tylko wtedy, gdy mają prawidłową koligację transakcji i uczestniczą w bieżącej transakcji.
Czytelnicy nie są blokowani. Jednak dane widoczne przez czytelników nie odzwierciedlają żadnych zmian tymczasowych wprowadzonych w ramach transakcji, dopóki ta transakcja rzeczywiście nie zostanie zatwierdzona. Wszystkie składniki uczestniczące w tej transakcji widzą stany danych tymczasowych podczas odczytu danych, ale wszystkie składniki poza transakcją widzą te zmiany dopiero po zakończeniu transakcji.
Zachowanie funkcji SaveChanges
Aby osiągnąć zachowanie izolacji opisane powyżej, regDB skutecznie zapewnia pamięć podręczną, która działa na podstawie składników w ramach transakcji. Spowoduje to zmianę zachowania metody SaveChanges.
Zwykle bez obecności transakcji wszelkie oczekujące zmiany są zapisywane w wykazie podczas wywoływania SaveChanges, a SaveChanges nie zwraca się, dopóki wszystkie zapisy nie zostaną ukończone. Gwarantuje to, że jeśli wywołanie SaveChanges zostanie zwrócone pomyślnie, możesz wywołać StartApplication i aktywuje aplikację przy użyciu nowych danych.
Jednak w ramach transakcji SaveChanges wpływa tylko na pamięć podręczną, a nie samą bazę danych RegDB, a saveChanges zwraca natychmiast, czy wszystkie zmiany zostały transakcyjnie zatwierdzone w regDB. Nie ma gwarancji, że StartApplication używa nowych danych po zwracanych zmian. Jeśli w tym kontekście musisz wywołać StartApplication, zaleca się poczekanie na jakiś czas przed wykonaniem tej czynności.
Okres Time-Out transakcji
Jeśli wykonujesz wiele operacji administracyjnych w ramach transakcji, może to być długotrwała transakcja. W takim przypadku wartość limitu czasu transakcji może być problemem. Jest to określane przez wartość limitu czasu transakcji ustawioną dla składnika inicjującego transakcję lub przez ustawienie limitu czasu dla maszyny, na której jest uruchomiony ten składnik. Jeśli wykonujesz wiele operacji w ramach transakcji, zaleca się ustawienie odpowiedniego limitu czasu transakcji na wystarczająco długą wartość i, w razie potrzeby, przywrócenie oryginalnego ustawienia po zakończeniu.
Nie transakcyjne zasoby wykazu COM+
Rejestr, system plików i Instalator Windows (MSI) to zasoby wykazu COM+, które nie są transakcyjne.
Nuta
Jeśli wystąpi błąd, który przerywa transakcję, zmiany w tych zasobach mogą nie zostać wycofane.
Jeśli wystąpił błąd podczas instalowania istniejącej aplikacji COM+ z pliku .msi, aplikacja nie jest wyświetlana w przystawce Usługi składników, ale może pojawić się w dodaj/usuń programy, w tym przypadku musisz ją ręcznie usunąć.
Odzyskiwanie w przypadku zawieszania się systemu
Jeśli składnik wykonujący operacje administracyjne w ramach transakcji miał zawieszać się, gdy przechowuje blokadę składnika zapisywania w kodzie serwera wykazu, uniemożliwi wszystkim innym osobom wprowadzanie jakichkolwiek zmian w wykazie. Jeśli tak się stanie, możesz wyczyścić blokadę katalogu, zamykając i ponownie uruchamiając aplikację System.
Wykonywanie skryptów za pomocą obiektu TransactionContext
Prostym sposobem wykonywania operacji administracyjnych w ramach transakcji jest użycie obiektu TransactionContext w celu kontrolowania transakcji. Na przykład poniższy skrypt języka Visual Basic demonstruje sposób transakcyjnego dodawania dwóch nowych aplikacji, tak aby obie aplikacje lub żadna z nich nie została utworzona:
Dim txctx
Dim cat
Dim apps
Dim app1
Dim app2
WScript.Echo "Starting"
Set txctx = CreateObject("TxCtx.TransactionContext")
Set cat = txctx.CreateInstance("COMAdmin.COMAdminCatalog")
Set apps = cat.GetCollection("Applications")
Set app1 = apps.Add
app1.Value("Name") = "Test App #1"
apps.SaveChanges
Set app2 = apps.Add
app2.Value("Name") = "Test App #2"
apps.SaveChanges
WScript.Echo "Ending"
txctx.Commit
Tematy pokrewne