SharePoint 2010 y Azure: Integración con el Windows Azure Data Market (I)!

Otro gran punto de integración entre SharePoint 2010 y Windows Azure es a través del Windows Azure Data Market de manera que podemos acceder a datos publicados utilizando artefactos de SharePoint como pueden ser WebParts o conectores de BCS. En este primer post os voy a mostrar como podemos usar Bing Translator, que ya está incluido en el Windows Azure Data Market, para poder realizar traducciones en una WebPart. Comencemos:

image image image

Partimos del ejemplo de uso de Microsoft Translator que pasa por descargarse el proxy C# disponible en la página de detalle de Microsoft Translator en el Data Market. A partir de aquí, ya estamos listos para codificar de acuerdo a los siguientes pasos:

  • Agregar referencia a System.Data.Services.Client puesto que los datos del Data Market los consultaremos a través de servicios REST.
  • Añadir directivas using a System.Data.Services.Client, System.Net y el espacio de nombres del proxy que nos hemos bajado (Microsoft en este caso).
  • Especificar la cuenta y clave de uso del Azure Data Market.
  • Evitar el infame error: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel, date una vuelta por este enlace para saber de que estamos hablando. Como veis, en mi caso y dado que esto son pruebas uso SharePointManager para saltarme problemas de certificados y dar por válidos los certificados usados por el Azurre Data Market. Si quieres específicamente confiar únicamente en los certificados del Windows Azure Data Market, basta con cambiar que se confía en todos los certificados (valor true) por certificate.Subject.Contains("datamarket").
  • Creamos una instancia del objeto TranslatorContainer definido en el proxy y que nos permite realizar la consulta de traducción.
  • Especificamos la url del servicio de Microsoft Translator y las credenciales de acceso al Windows Azure Data Market.
  • A partir de aquí especificamos que queremos traducir, el idioma de destino y el de origen…realizamos la traducción y procesamos los resultados.
   1: try

   2: {

   3:     this.txtTranslation.Text = "";

   4:     // tUri del Servicio 

   5:     Uri uServiceRootUri =

   6:                    new Uri(

   7:                        "https://api.datamarket.azure.com/Bing/MicrosoftTranslator/");

   8:  

   9:     //  Claves de acceso

  10:     string sAccountUser = "TuCuenta";

  11:     string sAccountKey = "TuClave";

  12:  

  13:     // Objeto Translator Container

  14:     ServicePointManager.ServerCertificateValidationCallback =

  15:         ((MySender, certificate, chain, sslPolicyErrors) => true); 

  16:     TranslatorContainer tc = 

  17:         new TranslatorContainer(uServiceRootUri);

  18:  

  19:     // Credenciales de acceso 

  20:     tc.Credentials = 

  21:         new NetworkCredential(sAccountUser,sAccountKey); 

  22:  

  23:     //*****************************************

  24:     //A traducir

  25:     //*****************************************

  26:  

  27:     // Generamos la consulta 

  28:     var translationQuery = 

  29:         tc.Translate(this.txtWordToTranslate.Text,"en","es");

  30:  

  31:     // Ejecutamos la consulta

  32:     var translationResults = translationQuery.Execute();

  33:  

  34:     // Procesamos los resultados

  35:     if (translationResults!=null)

  36:     {

  37:         foreach (var item in translationResults)

  38:         {

  39:             this.txtTranslation.Text += item.Text;

  40:         }

  41:     }                

  42:  

  43: }

  44: catch (Exception ex)

  45: {

  46:  

  47:     this.lblError.Text = "Error: " +

  48:         ex.Message;

  49: }

Y finalmente la prueba del algodón:

image

Otros posts sobre la integración de SharePoint y Azure: