Skip to main content

Co to jest aktywny obiekt?

W programowaniu komputerowym i inżynierii aktywny obiekt jest rodzajem wzorca projektowania, który może być użyty, aby zapewnić, że niektóre usługi są zawsze dostępne w systemie wielowytrowym lub współbieżnym.Aktywny obiekt to obiekt, który implementuje mechanizm, aby mógł odbierać i przetwarzać wprowadzanie obiektów zewnętrznych bez zmuszania obiektów zewnętrznych do oczekiwania na zakończenie.Mechanizm ten pozwala również wielu obiektom, które wszystkie mogą działać jednocześnie w celu korzystania z aktywnych obiektów bez możliwości długich czasów blokowania, w których równoczesne procesy muszą zatrzymać się i czekać na dostęp.Najczęściej to osiąga się poprzez pakowanie aktywnych obiektów w publicznie dostępnym interfejsie, zwanym proxy, a następnie wdrożenie rodzaju systemu kolejki wewnątrz obiektów, aby komunikaty są przechowywane do późniejszego przetwarzania.Tworzy to wzór projektowy, w którym obiekty wysyłają wiadomości do aktywnych obiektów, a następnie kontynuują przetwarzanie, aż aktywny obiekt przetworzy komunikat, a później poinformuje obiekty wywołujące wyniki, aby mogły odpowiednio zaktualizować swoje stany.

Poza aktywnym wzorem projektu obiektów, normalny obiekt może być nazywany obiektem pasywnym.W prostym przykładzie programu obiekt pasywny może działać jako przekaźnik serwera czatu, w którym obiekty zdalne kontaktują się z obiektem pasywnym, aby przesyłać wiadomość wszystkim innym na serwerze.Ilekroć obiekt serwera pasywnego odbiera komunikat czatu ze zdalnego obiektu, musi natychmiast obsługiwać żądanie, a następnie natychmiast wysłać wyjście, wszystko, podczas gdy obiekt zdalny zatrzymuje własne wykonywanie do momentu zakończenia procesu, efekt znany jako blokowanie.Tworzenie różnych wątków w programie może rozwiązać problem blokowania wykonywania, ale następnie inicjuje problemy z synchronizacją.

W wzorze projektu aktywnego obiektu, ten sam obiekt serwera w powyższym przykładzie byłby uruchomiony w swoim wątku oddzielnym od innych obiektów.Byłby również owinięty w pewnym rodzaju interfejsie znanym jako serwer proxy, który również działa w osobnym wątku, czasem w wątku wykonania programu głównego.Gdy zdalny obiekt chce, aby obiekt serwera wysłał komunikat czatu, kontaktuje się z obiektem proxy, przekazuje do niego wszystkie wymagane informacje, a następnie zwraca do normalnego stanu wykonania zamiast czekać.

interfejs proxy konwertuje, a następnie konwertujeInformacje ze zdalnego obiektu w komunikat, który przekazuje do kolejki dla aktywnego obiektu do przetworzenia.W tym momencie zarówno interfejs proxy, jak i obiekt zdalny mogą kontynuować wykonywanie i nie są zablokowane.Tymczasem aktywny obiekt działa na puste kolejkę, przetwarzając każdy komunikat przychodzący.Jeśli obiekt wywołania wymaga zwrócenia niektórych informacji przez aktywny obiekt, wówczas można użyć struktury zwrotnej do poinformowania zdalnego obiektu wszelkich zmian w stanie.