Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Projektanci dostawcy usług powinni starać się skrócić czas wykonywania synchronicznych operacji. Na przykład istnieje operacja "Otwórz" o nazwie w czasie inicjowania, która przygotowuje dostawcę usług i interfejs TAPI do kolejnych operacji na urządzeniu. Dostawca usług, którego implementacja jest podzielona między komputer kliencki i dedykowany serwer, może mieć uzasadnione zaufanie, że może komunikować się z serwerem zdalnym. Jego implementacja "Open" może po prostu przydzielić i zainicjować struktury danych w celu reprezentowania urządzenia i powrotu, odpopoczątując kompleksową komunikację do momentu zażądania niektórych rzeczywistych operacji.
Każda taka "optymistyczna" implementacja operacji synchronicznej może później napotkać ograniczenia zasobów lub błędy komunikacji zdalnej. Ogólnie rzecz biorąc, nawet "konserwatywne" podejście nie może całkowicie zapobiec tym problemom; Projektanci dostawcy usług muszą wybrać najlepszą kompromis między niezawodnością a wydajnością. Awaria tego rodzaju powinna być obsłużona z wdziękiem wszędzie tam, gdzie to możliwe. Z punktu widzenia urządzeń TSPI powinny one pozostać prawidłowe dla celów "księgowania", nawet jeśli zwracają stan awarii dla każdej żądanej operacji.
Zaimplementowanie optymistycznego podejścia do żądań synchronicznych nie powinno odbywać się kosztem poprawnej semantyki dla operacji. Powrót do przykładu "Otwarte", jeśli otwarcie urządzenia musi konkurować o i zarezerwować ograniczony, niedostępny zasób, taki jak porty komunikacyjne, powinien to zrobić prawdopodobnie nawet wtedy, gdy jest czasochłonny.
TAPI 2.x: Operacja wykonywana synchronicznie wykonuje wszystkie jego przetwarzanie w wywołaniu funkcji wykonanym przez aplikację. Funkcja zwraca różne wartości w zależności od powodzenia lub niepowodzenia:
- Sukces synchroniczny. Jeśli żądanie lub usługa odpowiadająca funkcji została przeprowadzona pomyślnie, funkcja zwraca zero, co wskazuje powodzenie. Wszystkie wartości zapisane w wyniku wywołania funkcji są niezawodne i mogą być używane natychmiast.
- Błąd synchroniczny. Jeśli funkcja wykryje błąd i żądanie nie zostanie wykonane, zwracany jest ujemny numer błędu w celu zidentyfikowania błędu.