Como configurar diferentes URIs por entorno para los servicios en Silverlight 4

por Admin el 2/26/2011 5:31:00 AM

Extraido del blog de Tim Heuer, añado a continuación la traducción del texto con su solución para resolver el problema de establecer diferentes URIs por entorno para los servicios en Silverlight utilizando compilación condicional, de forma que no haya que tocar el fichero ServiceReferences.ClientConfig antes  o después de compilar para un entorno diferente al de desarrollo.

En primer lugar, deben incluirse en el fichero ServiceReferences.ClientConfig las diferentes URIs por entorno:

[code]

 <configuration>

     <system.serviceModel>

         <bindings>

             <customBinding>

                 <binding name="CustomBinding_HelloWorldService">

                     <binaryMessageEncoding />

                     <httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />

                 </binding>

                 <binding name="StagingServiceBinding">

                     <binaryMessageEncoding />

                     <httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />

                 </binding>

                 <binding name="ProductionServiceBinding">

                     <binaryMessageEncoding />

                     <httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />

                 </binding>

             </customBinding>

         </bindings>

         <client>

             <endpoint address="http://localhost:40473/HelloWorldService.svc"

                 binding="customBinding" bindingConfiguration="CustomBinding_HelloWorldService"

                 contract="HelloServices.HelloWorldService" name="CustomBinding_HelloWorldService" />

             <endpoint address="http://localhost:40848/HelloWorldService.svc"

                 binding="customBinding" bindingConfiguration="StagingServiceBinding"

                 contract="HelloServices.HelloWorldService" name="StagingServiceBinding" />

             <endpoint address="http://localhost:40849/HelloWorldService.svc"

                 binding="customBinding" bindingConfiguration="ProductionServiceBinding"

                 contract="HelloServices.HelloWorldService" name="ProductionServiceBinding" />

         </client>

     </system.serviceModel>

 </configuration>

[/code]
Para usar cualquiera de las configuraciones distinta de la configuración por defecto, debemos usar el constructor que acepta como parametro el nombre del endpoint:


HelloWorldServiceClient client = class="kwrd">new HelloWorldServiceClient(class="str">"StagingServiceBinding");


Por ultimo, para elegir el endpoint por entorno, podemos definir constantes del compilador para cada perfil de compilación, y utilizar el constructor de la siguiente manera:


"lnum1" class="lnum"> 1: class="kwrd">string _endpointName = class="str">"RelativeBinding"; "lnum2" class="lnum"> 2:  "lnum3" class="lnum"> 3: class="preproc">#if PRODUCTION "lnum4" class="lnum"> 4: _endpointName = class="str">"ProductionServiceBinding"; "lnum5" class="lnum"> 5: class="preproc">#endif "lnum6" class="lnum"> 6:  "lnum7" class="lnum"> 7: class="preproc">#if STAGING "lnum8" class="lnum"> 8: _endpointName = class="str">"StagingServiceBinding"; "lnum9" class="lnum"> 9: class="preproc">#endif "lnum10" class="lnum"> 10:  "lnum11" class="lnum"> 11: HelloWorldServiceClient client = class="kwrd">new HelloWorldServiceClient(_endpointName);

 

Tags:

Silverlight

Rutas relativas para las referencias de servicios en Silverlight 4

por Admin el 2/26/2011 5:23:00 AM

El archivo ServiceReferences.clientconfig donde se indican las URIs de los servicios a usar por la aplicación Silverlight se "compilan" (realmente el archivo xap es un zip que incluye este fichero, y que se puede modificar) dentro del archivo xap, y no tienen un procedimiento "de fabrica" para distinguir entornos de desarrollo / pre / producción. En el caso de que el servicio web este ubicado en la misma aplicacion web que el modulo Silverlight, es posible usar una ruta relativa en el fichero de configuración para el servicio, con lo que evitamos el problema de tener que cambiar las URIs por entorno. Por ejemplo:

   1: <endpoint address="../HelloWorldService.svc"
   2:                 binding="customBinding" bindingConfiguration="RelativeBinding"
   3:                 contract="HelloServices.HelloWorldService" name="RelativeBinding" />

Visto en el blog de Tim Heuer

Como crear una lista generica de tipos anonimos

por Admin el 2/26/2011 5:00:00 AM

Visto en el blog de Kiril Osenkov, muy util para generar dinamicamente colecciones de tipos anonimos en framework 4.

 

  static void Main(string[] args)
{
var Customer = new { FirstName = "John", LastName = "Doe" };
var customerList = MakeList(Customer);

customerList.Add(new { FirstName = "Bill", LastName = "Smith" });
}

public static List<T> MakeList<T>(T itemOftype)
{
List<T> newList = new List<T>();
return newList;
}

WPF: Conversor de Boolean a Visibility para binding

por admin el 3/9/2010 5:17:00 PM

La clase System.Windows.Controls  expone un conversor de boolean a Visibility, muy util para hacer binding de la visibilidad de un elemento. Para utilizarlo, solo hay que declarar el conversor como recurso de la ventana / pagina / control:

<Window.Resources>

<BooleanToVisibilityConverter x:key="VisibilityOfBool" />

</Window.Resources>

y luego utilizarlo en el binding de la propiedad Visibility de cualquier control:

…………. Visibility="{Binding Path=Path al elemento boolean, Converter={StaticResource VisibilityOfBool}}” …………

Tags: ,

WPF

Aumentar el tamaño de disco de una máquina virtual Windows XP de VMWare

por admin el 3/5/2010 5:46:32 PM

El otro día me vi en la necesidad de aumentar el tamaño del disco de una maquina virtual de VMWare conteniendo un  Windows XP , ya que el disco tenía 4 gigas y no daba para instalar el Service Pack 1 de Visual Studio 2008. Aquí dejo los pasos que seguí por si a alguien le vienen bien:

  1. Apagar el sistema operativo. Dejamos la maquina virtual apagada
  2. Desde el directorio de VMWare, ejecutamos vmware-vdiskmanager.exe -x 20GB “ruta al disco virtual.vmdk”. La opción –x indica “expandir”, y el parámetro 20GB indica el nuevo tamaño del disco
  3. Una vez que el proceso termina (tarda un rato), tenemos que añadir el nuevo espacio disponible al disco. Para ello vamos a necesitar una segunda maquina virtual de XP.
  4. Antes de arrancar la segunda maquina, añadimos a su configuración el disco de la primera, de forma que aparezca como disco secundario.
  5. Arrancamos la segunda maquina y una vez iniciada, abrimos una ventana con CMD
  6. Ejecutamos la aplicacion diskpart
  7. Desde el prompt de diskpart ejecutamos “list volume
  8. Nos aparecerá la lista de unidades del sistema. Comprobamos cual es la unidad que queremos aumentar (el disco de la primera maquina) en la lista, y ejecutamos “select volume=x” donde x es el numero que nos aparece en la lista para este disco.
  9. Ejecutamos “extend
  10. Una vez terminado, salimos de diskpart y apagamos la segunda maquina.
  11. En VMWare, quitamos el disco de la segunda maquina y arrancamos la primera.
  12. Y voila, ya tenemos el disco aumentado.

Tags:

VMWare

Lanzamiento de APOD Desktop v1.0

por admin el 10/26/2009 5:50:22 PM

Erupcion Solar - APOD Con un poco de retraso sobre mis previsiones, hoy lanzo APOD Desktop versión 1.0. El programa que pone la Astronomical Picture of the Day en tu escritorio trae algunas novedades:

  • Salvapantallas con las imágenes descargadas
  • Configurador sencillo
  • Posibilidad de sobreimprimir el texto que acompaña a la imagen en el escritorio (usuarios de Windows XP)
  • Posibilidad de rotar las imágenes en el propio escritorio

… y algunas mejoras más. Puedes descargar la versión 1.0 desde la página de APOD Desktop (una vez en la página, pincha en el icono de descarga o en el enlace de la parte inferior de la pantalla). Espero tus comentarios, dudas o sugerencias. ¡Que lo disfrutes!

NOTA: esta versión no es compatible con la beta 0.5. Si tenías instalada la beta, lee atentamente las instrucciones en la página de APOD Desktop para desinstalarla.

Tags:

Freeware

APOD Desktop 1.0 listo para ser liberado

por admin el 10/12/2009 6:40:28 AM

6074

Tras la buena acogida de APOD Desktop, el programa que pone la imagen del día en tu escritorio, he seguido trabajando en mis ratos libres para mejorarlo y añadirle funciones, y me alegro de comunicaros que en breve estará disponible la versión 1.0 del programa. Esta nueva versión incluye mejoras como: capacidad de no solo poner la imagen del dia como fondo, sino de ir rotando en el escritorio todas las imágenes disponibles, posibilidad de sobreimprimir el texto en el escritorio, un salvapantallas con todas las imágenes y un programa para configurar fácilmente el comportamiento de todo el conjunto.

Estoy haciendo las últimas pruebas del programa y probablemente la semana que viene estará disponible para todo el mundo. La única pega es que no va a ser compatible con la versión beta, por lo que se perderán las imágenes que se habían descargado hasta el momento. Aún así, tengo intención de colgar de la página “paquetes” mensuales con todas las imágenes disponibles hasta el momento, comenzando con las del mes de Octubre de 2009.

Más noticias en breve! 

Tags:

Freeware

APOD Desktop – La imagen astronómica del día en tu Escritorio

por admin el 9/21/2009 4:00:00 PM

image APOD es el acrónimo de “Astronomical Picture of the Day”, un servicio de la NASA creado en 1995 por Rober Nemiroff que publica, a través de su página web, una imagen astronómica comentada por un astrónomo profesional cada día. Las imágenes ofrecidas por este servicio son, sencillamente, impresionantes. Habitualmente las veo, junto con la traducción del comentario astronómico en la web observatorio.info

Cansado de mi fondo de pantalla habitual, decidí hacer un pequeño programa que se descargase cada día la APOD y la colocase como fondo. Hoy pongo a tu disposición este programa, APOD Desktop. Es una versión beta, que se limita a descargar la última imagen del APOD y colocarla como fondo de escritorio, terminando después. No tiene interfaz e usuario, por lo que no verás ninguna ventana en ningún momento. Una vez ejecutado el programa por primera vez, se arrancará automáticamente en cada inicio repitiendo el proceso.

La primera vez que se ejecuta descarga las últimas 20 imágenes más o menos, aunque sólo una se utiliza como fondo, por lo que puede tardar unos minutos en cambiar el fondo de pantalla. Esto es así porque pretendo seguir haciendo crecer el programa. Lo siguiente será un salvapantallas con todas las imágenes que se van descargando :).

APOD Desktop está desarrollado en c# 3.5, y utiliza el Client-Profile Framework para que los equipos si el Framework 3.5 no tengan que descargarlo completo. El instalador se encarga de todo ello. En próximos artículos, explicaré todo el proceso de creación de un instalador de este tipo.

Si descargas APOD Desktop, por favor deja tus comentarios, opiniones, problemas y sugerencias en el foro. Estaré encantado de leerte.

Tags:

Freeware

Recuperar una página web a través de http

por admin el 9/8/2009 10:21:02 PM

El namespace System.Net nos proporciona clases y métodos útiles para trabajar con la red. Este código (sin control de errores) muestra como recuperar una página web :

  string sURL="http://www.google.com";
  wrGETURL = (HttpWebRequest)HttpWebRequest.Create(sURL);
  wrGETURL.Proxy = WebProxy.GetDefaultProxy();
  wrGETURL.Method = "GET";
  wrGETURL.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;

  //Send request
  HttpWebResponse response = (HttpWebResponse)wrGETURL.GetResponse();


  //read stream
  objStream = response.GetResponseStream();
  StreamReader sr = new StreamReader(objStream, System.Text.Encoding.UTF8);
  string sReply = sr.ReadToEnd();
  sr.Close();

El contenido de la página recuperada estará disponible en la variable sReply. Este es el método básico que voy a utilizar en el Windows Process monitor para recuperar las páginas con información acerca de los procesos que se están ejecutando en la máquina.

¿Son seguros los procesos que se ejecutan en mi máquina?

por Admin el 9/5/2009 10:25:00 PM

Al hilo del post de ayer en el que veíamos como enumerar los procesos que se están ejecutando en la máquina, se me ha ocurrido que de vez en cuando  recorro esa lista a través del Administrador de Tareas y suelo consultar varias páginas de información de procesos para saber qué son y para qué sirven, y si tienen algún riesgo.

Ese pensamiento me ha llevado al siguiente, y es que estaría bien tener programa  que automáticamente consultase esas páginas y nos avisase si hay algún proceso reconocido como peligroso ejecutándose.  Y estaría muy bien si ese programa pudiese consultar varias páginas para tener la información más fiable posible.

Y de ese pensamiento ha surgido mi nuevo proyecto: el Monitor de Procesos de Windows o WPM por sus siglas en inglés (cuando programo suelo hacerlo en spanglish).

En los próximos días iré publicando mas detalles del programa que estoy empezando a esbozar y de los procedimientos que usará.

Por el momento la rutina para enumerar los procesos ya la tenemos :)

Tags:

Freeware