Estoy tratando de comprender mejor algunos de los mecanismos internos de WCF. He revisado bastante, pero no he podido encontrar una explicación clara de lo que hace ChannelFactory.Open()
en comparación con IClientChannel.Open()
. ¿Cuál es el propósito de abrir la fábrica? Si el canal se utiliza para la comunicación, ¿qué parte juega la fábrica en el proceso una vez que se ha creado y abierto el canal?ChannelFactory.Open VS IClientChannel.Open
La pregunta fue here, entre otras preguntas, pero nunca respondió directamente.
EDIT:
Después de-compilar el código fuente, he encontrado algunas de las razones específicas por las necesidades Abiertas a ser llamados ChannelFactory, que se documenta a continuación.
Lo que todavía tengo problemas para entender es por qué este trabajo se realiza a través de mecanismos proporcionados por el ICommunicationObject, cuando la fábrica no se está comunicando con nada (hasta donde yo sé). ¿Por qué no manejar estas cosas solo cuando el objeto se construye o se desecha?
Creo que estoy lo suficientemente alejado como para que tal respuesta no esté disponible públicamente. Gracias a aquellos que intervinieron en la pregunta original.
Gracias por la respuesta. ¿Puedes dar más detalles sobre el propósito de abrir la fábrica? Usted dijo: "Por lo tanto, el propósito de abrir la fábrica es solo una opción de diseño y, de hecho, se realiza automáticamente cuando se crea el primer canal, no es demasiado bajo el capó". Estoy tratando de entender por qué la fábrica debe abrirse en absoluto. ¿Por qué hicieron esta elección de diseño? ¿Para qué sirve? ¿Por qué la fábrica implementa ICommunicationObject cuando también se usa para crear un canal que lo implementa también? –
Lo siento, pero no sé por qué Microsoft hizo esta elección porque no (y creo que no puedo) saber cómo se implementa ChannelFactory y tampoco el canal que crea, espero que si alguien sabe más acerca de eso va a dejar nosotros sabemos :) – MaRuf