Las clases SoapFormatter y BinaryFormatter implementan la interfaz IRemotingFormatter para que se admitan las llamadas a procedimientos remotos (RPC), y la interfaz IFormatter (heredada por IRemotingFormatter) para que se admita la serialización de un gráfico de objetos. La clase SoapFormatter también admite llamadas RPC con objetos ISoapMessage, sin utilizar la funcionalidad de IRemotingFormatter.
Durante las llamadas RPC, la interfaz IRemotingFormatter permite que se especifiquen dos gráficos de objetos diferentes: el gráfico de objetos que se va a serializar y un gráfico adicional que contiene una matriz de objetos de encabezado que transmiten información sobre la llamada a la función remota (por ejemplo, un identificador de transacción o una firma de método).
Las llamadas RPC que utilizan BinaryFormatter se dividen en dos partes distintas: llamadas de método, que se envían al servidor con el objeto remoto que contiene el método al que se ha llamado, y respuestas de método, que se envían del servidor al cliente con la información de estado y respuesta del método al que se ha llamado.
Durante la serialización de una llamada de método, el primer objeto del gráfico de objetos debe admitir la interfaz IMethodCallMessage. Para deserializar una llamada de método, utilice el método Deserialize con el parámetro HeaderHandler. La infraestructura de entorno remoto utiliza el delegado de HeaderHandler para crear un objeto que admite la interfaz ISerializable. Cuando BinaryFormatter llama al delegado de HeaderHandler, éste devuelve la dirección URI del objeto remoto con el método al que se está llamando. El primer objeto del gráfico devuelto admite la interfaz IMethodCallMessage.
El procedimiento de serialización de una respuesta de método es idéntico al de una llamada de método, con la excepción de que el primer objeto del gráfico de objetos debe admitir la interfaz IMethodReturnMessage. Para deserializar una respuesta de método, utilice el método DeserializeMethodResponse. Para ahorrar tiempo, los detalles sobre el objeto que realiza la llamada no se envían al objeto remoto durante la llamada al método. En lugar de ello, estos detalles se obtienen de la llamada de método original, que se pasa al método DeserializeMethodResponse en el parámetro IMethodCallMessage. El primer objeto del gráfico devuelto por el método DeserializeMethodResponse admite la interfaz IMethodReturnMessage.
Suplentes sin par
Cualquier carácter suplente sin par se pierde en la serialización binaria. Por ejemplo, la cadena siguiente contiene un (\ud800 de carácter Unicode de suplente alto) entre las dos palabras Test:
Test\ud800Test
Antes de la serialización, el byte de la matriz de la cadena es como sigue:
| Valor de la matriz de bytes | Carácter |
| 84 | T |
| 101 | e |
| 115 | s |
| 116 | t |
| 55296 | \ud800 |
| 84 | T |
| 101 | e |
| 115 | s |
| 116 | t |
Después de la deserialización, se pierde el carácter Unicode del suplente alto:
| Valor de la matriz de bytes | Carácter |
| 84 | T |
| 101 | e |
| 115 | s |
| 116 | t |
| 84 | T |
| 101 | e |
| 115 | s |
| 116 | t |