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.ServiceBrokerusł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 wersji Span, do której można uzyskać dostęp za pośrednictwem RpcContract 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 wersji Position, do której można uzyskać dostęp za pośrednictwem RpcContract 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 wersji Position, pomijając identyfikator URI i numer wersji.
  • TextView - 1:1 serializowana forma ITextView, do której można uzyskać dostęp za pośrednictwem RpcContract właściwości .
  • TextDocument - 1:1 serializowana forma ITextDocument za pośrednictwem RpcContract właściwości.

W przeciwieństwie do VersionedTextDocumentRange elementów i RangeVersionedTextDocumentPositioni 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.

Dowiedz się więcej o zdalnym interfejsie użytkownika, modelu RPC używanego w programie VS. Rozszerzenie w interfejsie użytkownika zdalnego.