WCF es no un método de "llamada de objeto remoto" o algo así, es puro paso de mensajes. Por lo tanto, es posible que se haya compilado un parámetro "by-ref", pero realmente no va a hacer nada útil.
En su cliente, tiene un método con los parámetros que usted llama. El tiempo de ejecución de WCF luego intercepta esa llamada, empaqueta los parámetros y cualquier información adicional necesaria en un mensaje, serializa ese mensaje (en XML textual o binario) y envía ese mensaje a través del cable al servidor.
El servidor deserializa los mensajes en un conjunto de parámetros, y el componente despachador en el servidor creará una instancia de la clase de servicio y llamará al método apropiado en esa instancia de clase de servicio con los parámetros del mensaje.
Toda la historia funciona al revés para la respuesta que el servidor envía de vuelta.
Pero nuevamente: todo lo que intercambia entre el cliente y el servidor es un mensaje serializado - no tiene sentido hacer un parámetro "por ref" - al final no puede ser un parámetro de ref. El servidor y el cliente son mundos totalmente separados, objetos y clases totalmente separados: se ven iguales en el cable.
Creo que quien escribió que el método WCF no entendía los principios de la aprobación de mensajes WCF, pero se sintió atraído por la forma en que se siente WCF, como una simple llamada a un método. Pero en realidad no es solo una llamada al método al final.
Esto es exactamente lo que pensaba. Y después de su respuesta, decidí ejecutar una prueba. Suena extraño, pero la infraestructura WCF maneja el por ref: si el servicio realiza cambios en el argumento ref, después de que la llamada retorna al cliente, el argumento pasado refleja esos cambios. – MatteoSp
@MatteoSp: ¡eso es muy interesante de escuchar! Ni siquiera me molesté en intentarlo, ya que, por lo que sabía, estaba convencido de que nunca funcionaría, ¡mejor pruébelo yo mismo! :-) Aún plantea la pregunta si realmente es una buena idea, aunque ... –
@marc_s Un poco tarde, pero el valor predeterminado de WCF es el estilo RPC. Después de todo, estamos llamando a un método en un objeto (proxy) y, por arte de magia, el método se ejecuta en un servidor. Para usar el estilo de 'mensajes', necesitamos usar contratos de mensajes que nos den un control total del mensaje SOAP. – thewpfguy