Compatibilidad con RPC del editor
Dado que el nuevo modelo de extensibilidad de Visual Studio está completamente en un proceso independiente y la comunicación entre el proceso de extensión y el proceso de Visual Studio se produce a través de una secuencia, todas las API tienen que operar en algún nivel con tipos de datos serializables. Normalmente, las extensiones pueden omitir estos detalles de implementación. En algunos escenarios, es posible que una extensión tenga que interactuar directamente con los servicios RPC adquiridos desde this.Extensibility.ServiceBroker
.
Tipos RPC serializables
Para facilitar las interacciones con los servicios RPC, el modelo de objetos expone las propiedades RpcContract en la mayoría de los tipos principales y los siguientes tipos RPC serializables:
VersionedTextDocumentRange
- 1:1 versión serializable de , a la que puede acceder a través deSpan
laRpcContract
propiedad . Este tipo debe usarse en la mayoría de los contratos RPC entre procesos.VersionedTextDocumentPosition
- 1:1 versión serializable de , a la que puede acceder a través dePosition
laRpcContract
propiedad . Este tipo debe usarse en la mayoría de los contratos RPC entre procesos.Range
- Versión serializable de Span, omitiendo el URI y el número de versión.Microsoft.VisualStudio.RpcContracts.Utilities.Position
- Versión serializable de , omitiendo el URI y el número dePosition
versión.TextView
- 1:1 forma serializada de , a la que puede acceder a través deITextView
laRpcContract
propiedad .TextDocument
- 1:1 forma serializada de a través deITextDocument
laRpcContract
propiedad .
En lugar de VersionedTextDocumentRange
y VersionedTextDocumentPosition
, Range
y Microsoft.VisualStudio.RpcContracts.Utilities.Position
omiten el URI y la versión del documento, lo que hace que sea una representación serializable más pequeña. Este tipo se debe usar en contratos RPC que contienen muchos equivalentes de intervalo o intervalo que necesitan reducir su tamaño de carga para el rendimiento. Estos contratos RPC deben pasar el URI del documento y la versión de los intervalos o intervalos a los que se va a crear una instancia Span
de IEditorHostServicePosition
. IEditorHostService
interfaces con copias locales de extensión del búfer de texto y administra la apertura y cierre de documentos descritos por los tipos RPC.
Contenido relacionado
Obtenga más información sobre la interfaz de usuario remota, el modelo RPC usado en VS. Extensiibilidad en la interfaz de usuario remota.