<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8964517421557723616</id><updated>2011-11-27T17:06:41.125-08:00</updated><category term='Compact WCF'/><category term='Context'/><category term='Visual Basic 6'/><category term='Visual Studio'/><category term='Throttling'/><category term='.NET Framework 3'/><category term='WCF'/><category term='WS-Trust'/><category term='username'/><category term='COM'/><category term='UserNamePasswordValidator'/><category term='Security'/><category term='FaultException'/><category term='Interoperabilidad'/><category term='SDK'/><title type='text'>WCF opiniones...</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://wcefe.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8964517421557723616/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://wcefe.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>José Miguel Torres</name><uri>http://www.blogger.com/profile/00332291893267131192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://upload.wikimedia.org/wikipedia/commons/thumb/c/cb/Humphrey_Bogart_by_Karsh_%28Library_and_Archives_Canada%29.jpg/300px-Humphrey_Bogart_by_Karsh_%28Library_and_Archives_Canada%29.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8964517421557723616.post-7250040210600773189</id><published>2007-09-14T08:09:00.000-07:00</published><updated>2007-09-14T08:17:48.533-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Compact WCF'/><title type='text'>Compact WCF Ten Commandments    # .NET Compact Framework 3.5</title><content type='html'>&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Compact WCF&lt;/strong&gt; was born from E-Mail transport capabilities. Read and understand the &lt;a href="http://blogs.msdn.com/romanbat/archive/2006/10/21/windows-communication-foundation-compact-edition-and-the-story-of-the-lunch-launcher.aspx"&gt;story of "Lunch Launcher"&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Compact WCF&lt;/strong&gt; is a subset of &lt;strong&gt;WCF Framework&lt;/strong&gt;.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Compact WCF&lt;/strong&gt; only consume, don't host &lt;strong&gt;WCF&lt;/strong&gt; &lt;strong&gt;Service&lt;/strong&gt;.&lt;/li&gt;&lt;li&gt;Forget &lt;strong&gt;Contracts&lt;/strong&gt;. You are managing messages, so...&lt;/li&gt;&lt;li&gt;... be familiarized with &lt;strong&gt;Channel Factories&lt;/strong&gt; and &lt;strong&gt;XmlSerializerWrapper&lt;/strong&gt;. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Compact WCF&lt;/strong&gt; don't support MSMQ, TCP o others transports. Http/s and E-Mail transports bindings do.&lt;/li&gt;&lt;li&gt;Forget transfer a large amount of data into a message, discard &lt;strong&gt;stream mode&lt;/strong&gt;, is not available. "Buffer" it into your head.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Compact WCF&lt;/strong&gt; supports a subset* of WS_Security  and WS_Addresing. [* -&gt; only Basic256Rsa15.]&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Make&lt;/strong&gt; Microsoft &lt;strong&gt;Exchange&lt;/strong&gt; MVP o expert &lt;strong&gt;friend&lt;/strong&gt;. Keep him/her close to you.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Think Mobile&lt;/strong&gt;.&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8964517421557723616-7250040210600773189?l=wcefe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wcefe.blogspot.com/feeds/7250040210600773189/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8964517421557723616&amp;postID=7250040210600773189' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8964517421557723616/posts/default/7250040210600773189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8964517421557723616/posts/default/7250040210600773189'/><link rel='alternate' type='text/html' href='http://wcefe.blogspot.com/2007/09/compact-wcf-ten-commandments-net.html' title='Compact WCF Ten Commandments    # .NET Compact Framework 3.5'/><author><name>José Miguel Torres</name><uri>http://www.blogger.com/profile/00332291893267131192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://upload.wikimedia.org/wikipedia/commons/thumb/c/cb/Humphrey_Bogart_by_Karsh_%28Library_and_Archives_Canada%29.jpg/300px-Humphrey_Bogart_by_Karsh_%28Library_and_Archives_Canada%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8964517421557723616.post-946594275125964740</id><published>2007-03-20T04:21:00.000-07:00</published><updated>2007-03-20T04:57:04.932-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Throttling'/><title type='text'>Service Throttling</title><content type='html'>&lt;strong&gt;&lt;em&gt;Throttling&lt;/em&gt;&lt;/strong&gt; viene de &lt;strong&gt;&lt;a href="http://en.wikipedia.org/wiki/Throttle"&gt;throttle&lt;/a&gt;&lt;/strong&gt;, y este termino sólo lo había utilizado en aviación "&lt;em&gt;move throttle from idle,..."&lt;/em&gt; y se refería a la palanca de gases de los reactores modernos. Pero que carajo significa en &lt;strong&gt;WCF&lt;/strong&gt;??&lt;br /&gt;&lt;br /&gt;Throttling es una técnica que permite la restricción de clientes de un servicio &lt;strong&gt;WCF&lt;/strong&gt;. Ésta se aplica al &lt;strong&gt;Servicio&lt;/strong&gt; y todos sus &lt;strong&gt;EndPoints&lt;/strong&gt;. Los tres parámetros que controla son:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Concurrencia máxima de sesiones&lt;/li&gt;&lt;li&gt;Concurrencia máxima de llamadas&lt;/li&gt;&lt;li&gt;Concurrencia máxima de instancias&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Pese a que se asigna al tipo de Servicio ésta, al igual que otras, es un aspecto del &lt;strong&gt;hosting&lt;/strong&gt;, con lo que deberemos indicar los valores en el &lt;strong&gt;.con&lt;/strong&gt;fig del proyecto que lo hospeda. Un ejemplo:&lt;/p&gt;&lt;p&gt;&lt;span style="color:#000099;"&gt;[serviceBehaviors&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#336666;"&gt;[behavior name = "MiServicio"&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#990000;"&gt;[service throttling maxConcurrentsSessions = "10"&lt;br /&gt;maxConcurrentsCalls = "10"&lt;br /&gt;maxConcurrentsInstances = "5" \]&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#336666;"&gt;\]&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;\]&lt;/span&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;span style="font-size:85%;color:#330033;"&gt;&lt;strong&gt;NOTA: He utilizado brackets (paréntesis) en lugar de &lt;&gt;&lt;/span&gt;&lt;/p&gt;&lt;/strong&gt;&lt;span style="color:#330033;"&gt;&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8964517421557723616-946594275125964740?l=wcefe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wcefe.blogspot.com/feeds/946594275125964740/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8964517421557723616&amp;postID=946594275125964740' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8964517421557723616/posts/default/946594275125964740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8964517421557723616/posts/default/946594275125964740'/><link rel='alternate' type='text/html' href='http://wcefe.blogspot.com/2007/03/service-throttling.html' title='Service Throttling'/><author><name>José Miguel Torres</name><uri>http://www.blogger.com/profile/00332291893267131192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://upload.wikimedia.org/wikipedia/commons/thumb/c/cb/Humphrey_Bogart_by_Karsh_%28Library_and_Archives_Canada%29.jpg/300px-Humphrey_Bogart_by_Karsh_%28Library_and_Archives_Canada%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8964517421557723616.post-2624799464394981727</id><published>2007-03-19T04:52:00.000-07:00</published><updated>2007-03-19T05:06:57.184-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='COM'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Basic 6'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET Framework 3'/><category scheme='http://www.blogger.com/atom/ns#' term='Interoperabilidad'/><title type='text'>Clientes VB6</title><content type='html'>Por lo que he podido ver la &lt;strong&gt;interoperabilidad&lt;/strong&gt; de clientes no &lt;strong&gt;WCF&lt;/strong&gt; está bastante presente sin embargo &lt;em&gt;&lt;span style="color:#000099;"&gt;con algunas conotaciones&lt;/span&gt;&lt;/em&gt;, ya sea el cliente &lt;strong&gt;Java, COM o VC++.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;En el caso de &lt;strong&gt;Visual Basic&lt;/strong&gt;, por lo que he podido ver, existen tres escenarios en función del &lt;strong&gt;Runtime&lt;/strong&gt; instalado. Así, si el cliente posee .&lt;strong&gt;NET Framework 3.0&lt;/strong&gt;, la opción más lógica es la creación de un ensamblado &lt;strong&gt;COM Interop&lt;/strong&gt;, que contenga el proxy al WCF Service. Es decir, el cliente que, normalmente, generamos con Svcutil.exe, lo exponemos a COM y exportamos la biblioteca de tipos para que sea referenciada por un proyecto Visual Basic 6.0. En el segundo caso, el cliente tiene .&lt;strong&gt;NET Framework 2.0&lt;/strong&gt;. La alternativa anteriormente comentada no es válida así que podemos generar, el lugar de un proxy &lt;strong&gt;WCF&lt;/strong&gt;, &lt;a href="http://msdn2.microsoft.com/en-us/library/ms751433.aspx"&gt;un proxy &lt;strong&gt;ASMX&lt;/strong&gt;&lt;/a&gt;. De las misma forma pasamos en proxy a COM Interop, exportamos la biblioteca de tipos y  referenciamos o instanciamos desde VB6. La última, en la que no tenemos el &lt;strong&gt;CLR&lt;/strong&gt; de .NET instalado, podemos utilizar &lt;strong&gt;SOAP&lt;/strong&gt;. Windows XP viene con las biliotecas&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8964517421557723616-2624799464394981727?l=wcefe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wcefe.blogspot.com/feeds/2624799464394981727/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8964517421557723616&amp;postID=2624799464394981727' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8964517421557723616/posts/default/2624799464394981727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8964517421557723616/posts/default/2624799464394981727'/><link rel='alternate' type='text/html' href='http://wcefe.blogspot.com/2007/03/clientes-vb6.html' title='Clientes VB6'/><author><name>José Miguel Torres</name><uri>http://www.blogger.com/profile/00332291893267131192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://upload.wikimedia.org/wikipedia/commons/thumb/c/cb/Humphrey_Bogart_by_Karsh_%28Library_and_Archives_Canada%29.jpg/300px-Humphrey_Bogart_by_Karsh_%28Library_and_Archives_Canada%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8964517421557723616.post-2188691806889830501</id><published>2007-03-08T00:19:00.000-08:00</published><updated>2007-03-09T00:16:39.210-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UserNamePasswordValidator'/><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><category scheme='http://www.blogger.com/atom/ns#' term='WS-Trust'/><category scheme='http://www.blogger.com/atom/ns#' term='Context'/><category scheme='http://www.blogger.com/atom/ns#' term='username'/><category scheme='http://www.blogger.com/atom/ns#' term='WCF'/><title type='text'>Escenarios de seguridad en WCF: A nivel de Mensaje</title><content type='html'>¿Transporte o Menaje? Bien, según el escenario, aunque ahora no hablaré de ello (quizás otro post). Ante la posibilidad de implantación de servicios desarrollados con &lt;strong&gt;WCF&lt;/strong&gt;, se presentan varios escenarios dónde la utilización de los mismo vienen, sino determinada, sí influenciada por su política de seguridad.&lt;br /&gt;&lt;br /&gt;Modos de seguridad hay 5 [&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:85%;"&gt;None, Transport, Message, Both, TransportWithMessageCredentials, TransportCredential Only&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;], si quereis ampliar información mirar &lt;a href="http://msdn2.microsoft.com/en-us/library/ms731925.aspx"&gt;aqui&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/ms733836.aspx"&gt;Message Security with Username Client &lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Ante este contexto explicaré &lt;strong&gt;tres posible &lt;/strong&gt;modos de autenticación &lt;strong&gt;UserName&lt;/strong&gt;. Primeramente saber que en los tres modos de autenticación en el Servidor debe existir un certificado &lt;strong&gt;X509&lt;/strong&gt; para que el cliente pueda constatar la autenticidad del servicio. Si quereis más info de como crearlo mirar aqui.&lt;br /&gt;&lt;br /&gt;En el intercambio inicial desde una llamada del cliente los datos en &lt;strong&gt;&lt;em&gt;formato binario&lt;/em&gt;&lt;/strong&gt; son trasportados mediante la &lt;em&gt;especificación &lt;strong&gt;WS-Trust&lt;/strong&gt;&lt;/em&gt; (&lt;strong&gt;véase &lt;a href="http://msdn.microsoft.com/ws/2004/04/ws-trust"&gt;TLS Negotiation&lt;/a&gt;&lt;/strong&gt;). Una vez el servicio ha sido autenticado se establece un contexto de seguridad compartido [Shared security context].&lt;br /&gt;&lt;br /&gt;Los mensajes, por defecto, están &lt;strong&gt;encriptados y firmados&lt;/strong&gt; (véase &lt;a href="http://msdn2.microsoft.com/en-us/library/system.net.security.protectionlevel.aspx"&gt;ProtectionLevel &lt;/a&gt;) y són transportados bajo dicho contexto de seguridad. La peculiaridad de este escenario és que el cliente es autenticado mediante un &lt;strong&gt;User&lt;/strong&gt; y un &lt;strong&gt;Password&lt;/strong&gt;. El tipo de enlace es &lt;strong&gt;wsHttpBinding&lt;/strong&gt;, el transporte &lt;strong&gt;HTTP&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Modos de Autenticación:&lt;br /&gt;&lt;br /&gt;* &lt;strong&gt;Utilizando autenticación por Windows&lt;/strong&gt;: El tipo de credencial por &lt;strong&gt;UserName&lt;/strong&gt; requiere de un valor &lt;strong&gt;User&lt;/strong&gt; y otro &lt;strong&gt;Password&lt;/strong&gt; que se deberán especificar a la hora de llamar desde el cliente mediante la propiedad &lt;em&gt;clienteproxy&lt;/em&gt;.&lt;a href="http://msdn2.microsoft.com/en-us/system.servicemodel.description.clientcredentials.username.aspx"&gt;ClientCredentials.UserName&lt;/a&gt;.&lt;strong&gt;User&lt;/strong&gt; o &lt;strong&gt;Password&lt;/strong&gt;. Bajo el escenario en que nos encontramos, si no se especifica el tipo concreto de autenticación será, por defecto, autenticación &lt;strong&gt;Windows&lt;/strong&gt;. Es decir que si en la llamada pasamos en &lt;em&gt;User&lt;/em&gt; algo tal que &lt;em&gt;'Dominio\Usuario'&lt;/em&gt; con el respectivo &lt;em&gt;password&lt;/em&gt;, la autenticación, con el permiso del &lt;em&gt;&lt;strong&gt;controlador de dominio&lt;/strong&gt;&lt;/em&gt;, se validará.&lt;br /&gt;&lt;br /&gt;* &lt;strong&gt;Utilizando autenticación &lt;a href="http://msdn2.microsoft.com/en-us/library/ms731049.aspx"&gt;MemberShip&lt;/a&gt;&lt;/strong&gt;: Pues como si se tratara de un site en &lt;strong&gt;ASP.NET&lt;/strong&gt; podemos utilizar la misma funcionalidad. De entrada se me ocurre como ideal si se va a consumir por Internet y/o se va a utilizar la misma autenticación de nuestra site web o Intranet. Sin embargo, debemos indicar en el comportamiento del servicio (ServiceBehaviors\Behavior\ServiceCredentials) del archivo de configuración el tag siguiente:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:85%;"&gt;[userNameAuthentication="MembershipProvider" membershipProviderName="SqlMembershipProvider"]&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;En este punto los valores que debemos pasar como &lt;strong&gt;User&lt;/strong&gt; y &lt;strong&gt;Password&lt;/strong&gt; són los que tenemos asignados dentro de &lt;strong&gt;Membership&lt;/strong&gt;. Un buen documento que profundiza más es &lt;a href="http://ctorre.spaces.live.com/blog/cns!AA05835C7C30816F!239.entry"&gt;el siguiente&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;* &lt;strong&gt;Otro escenario&lt;/strong&gt;, quizás algo menos útil [&lt;em&gt;aparentemente, opinión personal&lt;/em&gt;], pero mucho más flexible es mediante la &lt;strong&gt;autenticación parametrizada o customizada&lt;/strong&gt;. Esto es, añadiendo una clase a nuestro &lt;em&gt;Proyecto Servicio&lt;/em&gt;, que herede de &lt;a href="http://msdn2.microsoft.com/en-us/library/system.identitymodel.selectors.usernamepasswordvalidator.aspx"&gt;&lt;strong&gt;UserNamePasswordValidator&lt;/strong&gt; &lt;/a&gt;y sobreescribiendo (&lt;em&gt;override&lt;/em&gt;) el método &lt;strong&gt;Validate&lt;/strong&gt;, cuyos parámetros son &lt;strong&gt;user&lt;/strong&gt; y &lt;strong&gt;password&lt;/strong&gt; del tipo &lt;em&gt;string&lt;/em&gt;, podremos manipularlos de la forma que queramos. Para ello el tag a añadir es:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;&lt;span style="font-size:85%;"&gt;[usernameauthentication="Custom" membershipProviderName="mypoject.myservice.CustomUserNameValidator, Project1"]&lt;/span&gt;&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Dónde indicamos la clase que manejará la autenticación (&lt;strong&gt;CustomUserNameValidator&lt;/strong&gt;), que hereda de &lt;strong&gt;UserNamePasswordValidator&lt;/strong&gt;, y que está en el ensamblado (proyecto) &lt;em&gt;&lt;strong&gt;Project1&lt;/strong&gt;&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;Ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;public class&lt;/span&gt; CustomUserNameValidator : UserNamePasswordValidator {&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;public override void&lt;/span&gt; Validate(string userName, string password) {&lt;br /&gt;if (userName != "miusuario" password != "mipwd") {&lt;br /&gt;throw new SecurityTokenException("Usuario/Contraseña incorrecta");&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8964517421557723616-2188691806889830501?l=wcefe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wcefe.blogspot.com/feeds/2188691806889830501/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8964517421557723616&amp;postID=2188691806889830501' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8964517421557723616/posts/default/2188691806889830501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8964517421557723616/posts/default/2188691806889830501'/><link rel='alternate' type='text/html' href='http://wcefe.blogspot.com/2007/03/escenarios-de-seguridad-en-wcf-nivel-de.html' title='Escenarios de seguridad en WCF: A nivel de Mensaje'/><author><name>José Miguel Torres</name><uri>http://www.blogger.com/profile/00332291893267131192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://upload.wikimedia.org/wikipedia/commons/thumb/c/cb/Humphrey_Bogart_by_Karsh_%28Library_and_Archives_Canada%29.jpg/300px-Humphrey_Bogart_by_Karsh_%28Library_and_Archives_Canada%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8964517421557723616.post-3008461692365731126</id><published>2007-03-06T05:07:00.000-08:00</published><updated>2007-03-06T05:28:50.693-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FaultException'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><category scheme='http://www.blogger.com/atom/ns#' term='SDK'/><title type='text'>Excepciones con FaultException</title><content type='html'>Cuando planteas la creación de un sistema bajo &lt;strong&gt;&lt;span style="color:#000099;"&gt;Windows Communication Foundation&lt;/span&gt;&lt;/strong&gt;, una capítulo entero, lo inviertes en la estrategia de manejo de excepciones. No resulta complejo entender que una excepción se transmite como  una "avería" dentro de SOAP.&lt;br /&gt;&lt;br /&gt;Durante la captación de información previa a tomar una decisión me encontré con enlaces interesantes, como &lt;a href="http://geeks.ms/blogs/rcorral/archive/2006/12/20/excepciones-en-wpf.aspx"&gt;este&lt;/a&gt; de, como no, &lt;a href="http://geeks.ms/blogs/rcorral/"&gt;Rodrigo Corral&lt;/a&gt;, o varios documentos explicativos muy útiles como &lt;a href="http://www.15seconds.com/issue/070125.htm"&gt;éste &lt;/a&gt;o &lt;a href="http://www.drp.co.za/Media/Papers/tabid/76/Default.aspx"&gt;éste&lt;/a&gt;, pero sin embargo, desde un punto de vista muy elemental. Los ejemplos del SDK de Windows son, también, de ayuda aunque pasan, también, de escenarios elementales a escenarios muy complejos (o al menos eso me ha parecido a mí).&lt;br /&gt;&lt;br /&gt;Una de las batallas más arduas en la que me he visto envuelto a sido una excepción, muy simpática, pero que me ha llevado de cabeza &lt;strong&gt;&lt;em&gt;FaultException was unhandled by usercode&lt;/em&gt;&lt;/strong&gt;. En una solución, he puesto todos los proyectos, desde la definición del servidor hasta la implementación del mismo desde el Cliente. Cuando se generaba una excepción en el servicio, ésta no era controlada por try...catch desde el cliente; bueno, a ver, si que lo hacía pero al segundo intento. Esto es, se produce un error en servidor, se para la ejecución, vuelvo a ejecutar con F5 y el cliente obtenía la excepción como era de esperar.&lt;br /&gt;&lt;br /&gt;Por si os pasa alguna vez, me han ayudado mucho estos dos enlaces de los foros de MSDN. En concreto &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=995622&amp;SiteID=1"&gt;éste&lt;/a&gt;. (el otro es &lt;a href="https://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1252995&amp;amp;SiteID=1"&gt;éste&lt;/a&gt;). Sinceramente no me acaba de convencer, pero es lo que hay, almenos por el momento hasta que alguien diga exactamente el por qué.&lt;br /&gt;&lt;br /&gt;Ahora me toca probar la capacidad del &lt;strong&gt;Enterprise Library&lt;/strong&gt; en el control de errores, ya os informo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8964517421557723616-3008461692365731126?l=wcefe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wcefe.blogspot.com/feeds/3008461692365731126/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8964517421557723616&amp;postID=3008461692365731126' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8964517421557723616/posts/default/3008461692365731126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8964517421557723616/posts/default/3008461692365731126'/><link rel='alternate' type='text/html' href='http://wcefe.blogspot.com/2007/03/excepciones-con-faultexception.html' title='Excepciones con FaultException'/><author><name>José Miguel Torres</name><uri>http://www.blogger.com/profile/00332291893267131192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://upload.wikimedia.org/wikipedia/commons/thumb/c/cb/Humphrey_Bogart_by_Karsh_%28Library_and_Archives_Canada%29.jpg/300px-Humphrey_Bogart_by_Karsh_%28Library_and_Archives_Canada%29.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8964517421557723616.post-545849614954480205</id><published>2007-03-05T04:48:00.000-08:00</published><updated>2007-03-08T04:49:10.575-08:00</updated><title type='text'>Technorati</title><content type='html'>&lt;a href="http://technorati.com/claim/92ubhzm8p" rel="me"&gt;Technorati Profile&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8964517421557723616-545849614954480205?l=wcefe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wcefe.blogspot.com/feeds/545849614954480205/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8964517421557723616&amp;postID=545849614954480205' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8964517421557723616/posts/default/545849614954480205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8964517421557723616/posts/default/545849614954480205'/><link rel='alternate' type='text/html' href='http://wcefe.blogspot.com/2007/03/technorati.html' title='Technorati'/><author><name>José Miguel Torres</name><uri>http://www.blogger.com/profile/00332291893267131192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://upload.wikimedia.org/wikipedia/commons/thumb/c/cb/Humphrey_Bogart_by_Karsh_%28Library_and_Archives_Canada%29.jpg/300px-Humphrey_Bogart_by_Karsh_%28Library_and_Archives_Canada%29.jpg'/></author><thr:total>0</thr:total></entry></feed>
