Hola gente,

Para aquel que le interese, encontré un lindo encare a la situación que
tenía hace varios días de querer utilizar un cliente WCF como singleton, de
manera de no crear a cada rato el proxy (operación que es bastante costosa).

La solución aparente (sólo resta hacerle sus buenos stress test para
confirmar que sirva en producción) es por un lado manejar ClientBase de la
siguiente manera:

Building a reusable ClientBase
proxy<http://www.acorns.com.au/2007/8/21/Building+a+reusable+ClientBase+proxy.aspx>

Y por otra parte, crear un singleton wrapper que me devuelva siempre la
misma instancia y en caso de ocurrir una de las excepciones que maneja el
proxy del ejemplo anterior, crear y devolver una *nueva *instancia. De esta
forma sólo estoy creando un nuevo proxy en aquellos casos que hay una falla,
tanto sea de serialización, de timeout, de comunicación, etc.

A esto también se le podría integrar un pool (WCF Client Channel
Pool<http://weblogs.asp.net/pglavich/archive/2007/05/07/wcf-client-channel-pool-improved-client-performance.aspx>),
algo que podría mejorar más la performance, pero por mi parte todavía no lo
probé.

Y si alguno, en mi misma situación, se topa en algún momento con WCF LOB
Adapter, por favor sigan de largo!! ;) A menos que estén usando BizTalk.

Saludos,

Luis

Responder a