Zdalne zarządzanie sesjami renderowania
Usługa Azure Remote Rendering udostępnia interfejs API REST zarządzania sesjami w celu zarządzania interakcjami z serwerem w chmurze i wykonywania zapytań dotyczących sesji renderowania zdalnego. W językach C# i C++można tworzyć, aktualizować i zatrzymywać sesje za pośrednictwem RemoteRenderingClient
klas i RenderingSession
. W tej lekcji opisano sposób zarządzania sesjami usługi Remote Rendering.
Tworzenie sesji
Następujące polecenie żąda utworzenia sesji.
Invoke-WebRequest -Uri "$endPoint/v1/accounts/$accountId/sessions/create" -Method Post -ContentType "application/json" -Body "{ 'maxLeaseTime': '4:0:0', 'models': [], 'size': 'standard' }" -Headers @{ Authorization = "Bearer $token" }
Podczas tworzenia nowej sesji należy użyć parametru maxLeaseTime
, aby określić maksymalny czas dzierżawy, zazwyczaj w zakresie od jednego do ośmiu godzin. Maksymalny czas dzierżawy to czas, w którym host akceptuje dane wejściowe. W razie potrzeby możesz przedłużyć czas dzierżawy aktywnej sesji.
Odpowiedź z żądania zwraca wartość sessionId
, która umożliwia wykonywanie zapytań o informacje o sesji. Ten identyfikator UUID i niektóre podstawowe informacje o sesji są utrwalane przez 30 dni, dzięki czemu można wykonywać zapytania dotyczące informacji nawet po zatrzymaniu sesji.
Nawiązywanie połączenia z sesją
Gdy sesja będzie gotowa, urządzenie klienckie może się z nim połączyć i wysyłać polecenia, aby załadować i zmodyfikować modele. Gdy RenderingSession.IsConnected
parametr to true
, RenderingSession.Connection
zwraca wystąpienie RenderingConnection
klasy , które zawiera funkcje do ładowania modeli, manipulowania jednostkami i wykonywania zapytań o renderowaną scenę.
Można tworzyć, obserwować i zamykać dowolną liczbę sesji z jednej aplikacji, ale tylko jedno urządzenie może łączyć się z sesją zdalnego renderowania naraz. Próby nawiązania połączenia z sesją przez inne urządzenia kończą się niepowodzeniem. Inne urządzenie może łączyć się tylko po zatrzymaniu sesji.
Ponieważ host renderowania zdalnego obsługuje tylko jedno urządzenie klienckie w danym momencie, klient połączony z sesją ma wyłączną kontrolę nad renderowaną zawartością. Połączenie pojedynczego klienta oznacza również, że wydajność renderowania nigdy nie różni się z powodów spoza kontroli.
Zatrzymywanie sesji
Sesja zostanie zatrzymana, gdy maksymalny czas dzierżawy wygaśnie lub ręcznie zatrzymasz sesję. Aby ręcznie zatrzymać sesję, możesz wywołać metodę RenderingSession.StopAsync
. Sesja może również zostać zatrzymana z powodu niektórych awarii. Po zatrzymaniu sesji nie są już naliczane opłaty, a wszystkie poprzednie stany, takie jak załadowane modele, zostaną odrzucone.
Po zatrzymaniu sesji można wykonać zapytanie dotyczące identyfikatora trwałej sesji przy użyciu polecenia RenderingSession.SessionUuid()
. Aplikacja może wywołać RemoteRenderingClient.OpenRenderingSessionAsync
wywołanie za pomocą identyfikatora sesji, aby powiązać ją z sesją i buforować ją lokalnie.