Obsługa wywołania RPC edytora
Ponieważ nowy model rozszerzalności programu Visual Studio jest całkowicie w osobnym procesie, a komunikacja między procesem rozszerzenia a procesem programu Visual Studio odbywa się za pośrednictwem strumienia, wszystkie interfejsy API muszą działać na pewnym poziomie z typami danych możliwych do serializacji. Zazwyczaj rozszerzenia mogą ignorować te szczegóły implementacji. W niektórych scenariuszach rozszerzenie może wymagać bezpośredniego interfejsu z usługami RPC uzyskanymi z this.Extensibility.ServiceBroker
usługi .
Serializacji typów RPC
Aby ułatwić interakcje z usługami RPC, model obiektów uwidacznia właściwości RpcContract w większości typów podstawowych i następujące serializacji typów RPC:
VersionedTextDocumentRange
- 1:1 z możliwością serializacji wersjiSpan
, do której można uzyskać dostęp za pośrednictwemRpcContract
właściwości . Ten typ powinien być używany w większości kontraktów RPC między procesami.VersionedTextDocumentPosition
- 1:1 z możliwością serializacji wersjiPosition
, do której można uzyskać dostęp za pośrednictwemRpcContract
właściwości . Ten typ powinien być używany w większości kontraktów RPC między procesami.Range
- Serializable wersja Span, pomijając identyfikator URI i numer wersji.Microsoft.VisualStudio.RpcContracts.Utilities.Position
— z możliwością serializacji wersjiPosition
, pomijając identyfikator URI i numer wersji.TextView
- 1:1 serializowana formaITextView
, do której można uzyskać dostęp za pośrednictwemRpcContract
właściwości .TextDocument
- 1:1 serializowana formaITextDocument
za pośrednictwemRpcContract
właściwości.
W przeciwieństwie do VersionedTextDocumentRange
elementów i Range
VersionedTextDocumentPosition
i Microsoft.VisualStudio.RpcContracts.Utilities.Position
pomijają identyfikator URI i wersję dokumentu, tworząc mniejszą reprezentację z możliwością serializacji. Ten typ powinien być używany w kontraktach RPC, które zawierają wiele odpowiedników zakresu/zakresu, które muszą zmniejszyć ich rozmiar ładunku w celu zapewnienia wydajności. Te kontrakty RPC muszą przekazać identyfikator URI dokumentu i wersję dla zakresów lub zakresów, które mają zostać utworzone w Span
obiektach i Position
przez IEditorHostService. IEditorHostService
interfejsy z rozszerzeniami lokalnymi kopiami buforu tekstu oraz zarządzają otwieraniem i zamykaniem dokumentów opisanych przez typy RPC.
Powiązana zawartość
Dowiedz się więcej o zdalnym interfejsie użytkownika, modelu RPC używanego w programie VS. Rozszerzenie w interfejsie użytkownika zdalnego.