Social Icons

jueves, 8 de septiembre de 2011

Web Part Proveedor de Filtro con un árbol Silverlight en un ModalDialog

Empecé con esto hace un par de días... No quería hacerlo, porque sabría que iba a ser doloroso... pero me obligaron... Y entonces pensé que sería un post perfecto para el blog por lo de painful.

Lo que queríamos conseguir era filtrar elementos en un List View Web Part por Entidad. En nuestra solución tenemos una jerarquía de entidades por lo que pensamos que sería buena idea que el web part mostrase la jerarquía como un árbol.
Bien, así que necesitamos un web part con un TreeView que sea capaz de mandar la entidad seleccionada como filtro a un LVWP. Fantástico. Lo hice... Y no le gustó a nadie. Lo querían en Silverlight y no solo eso, lo querían en una ventana pop up. Sip, me cogieron, nunca había hecho nada parecido pero, ¿Quién dijo miedo?

Es un montón de código, la mayor parte feo así que solo postearé la parte interesante (básicamente la parte relacionada con la comunicación entre las páginas y el Silverlight) y las URLs de donde cogí las ideas.
Lo primero es poner a funcionar un Filter Provider Web Part. Para ello seguí las instrucciones de aquí. Primero lo intenté con un IWebPartRow, pero no era lo que yo quería así que cambié a ITransformableFilterValues. Esta parte es bastante simple así que no comentaré nada más.
La segunda parte es crear una ventana emergente. Después de googlear si googlear te parece un palabro raro deberías escucharme decir overridar o rollupear un rato me enconté con este post, que me pareció un buen sitio para empezar. Mi código en el web part terminó así:

        protected override void OnLoad(EventArgs e)
        {
            if (Page.IsPostBack)
            {
                if (!string.IsNullOrEmpty(GetFormValue("HiddenEntityName")))
                {
                    Page.Session["SelectedEntityName"] = Page.Request.Form["HiddenEntityName"];
                    Page.Session["SelectedEntityID"] = Page.Request.Form["HiddenEntityID"];

                    RenderHeader();

                    //SelectedEntityText.Text = string.Format("{0}  ", Page.Request.Form["HiddenEntityName"], Page.Request.Form["HiddenEntityID"]);
                }
                else
                    RenderHeader();
            }

            string CurrentWeb = SPContext.Current.Web.Url;
            string height = "500";
            string width = "500";
            string page = "/_layouts/stratex/EntityTree.aspx";

            // use next line for direct with  between  and  
            string scrp = @"
                            ";

            Type t = this.GetType();
            if (!Page.ClientScript.IsClientScriptBlockRegistered(t, "bindWebserviceToAutocomplete"))
                Page.ClientScript.RegisterClientScriptBlock(t, "bindWebserviceToAutocomplete", scrp);
        }
Tuve problemas trayéndome los valores del ModalDialog. No era capaz de encontrar los ID ni los Titles de los controles porque son creados dinámicamente. El truco que usé fue crear dos campos ocultos en el CreateChildControls:
        protected override void CreateChildControls()
        {
            base.CreateChildControls();

            ...

            Page.ClientScript.RegisterHiddenField("HiddenEntityName", "");
            Page.ClientScript.RegisterHiddenField("HiddenEntityID", "");

            ...
        }
Oye Chan, ¿Te has dado cuenta que podrías usar solo la sesión y olvidarte de los HiddenFields? No preguntes, te lo advierto…
La próxima parte es crear la página aspx para el modal dialog. La guardé en un directorio que me creé en _layouts. El código de la página quedó así:
<%@ Page Language="C#" Inherits="StratExFramework.EntityTree,StratExFramework,Version=2.2.0.0,Culture=neutral,PublicKeyToken=311246df7412ca98" %>

<html>
<head>
<title>Select Entity for filtering</title>
<script type='text/javascript'>
    function PassParameterAndClose(EntityName, EntityID) {

        window.returnValue = new Array( EntityName, EntityID) ;

        var version = parseFloat(navigator.appVersion.split('MSIE')[1]);
        if (version >= 7) 
            { window.open('', '_parent', ''); }
        else
            { window.opener = self; }

        window.close();
    }
</script>
</head>
<body></body>
</html>
También me creé una clase de code behind como puedes ver en la primera línea del aspx... :
    public class EntityTree : WebPartPage
    {
        string CurrentWeb;
        string SelectedEntityID;

        protected void Page_Load(object sender, System.EventArgs e)
        {
            CurrentWeb = Request.Params["CurrentWeb"];
            SelectedEntityID = Request.Params["SelectedEntityID"];
        }

        protected override void CreateChildControls()
        {
            base.CreateChildControls();

            string Source = CurrentWeb + "/Lists/XAPLibrary/SilverlightEntityTreeSelector.xap";
            string SilverlightHeight = "515";
            string SilverlightWidth = "500";

            LiteralControl obj = new LiteralControl();
            obj.Text = "<object id='silverlightHost' style='height: " + SilverlightHeight + "; width: " + SilverlightWidth + @"; margin: 0; padding: 0;' data='data:application/x-silverlight-2,' type='application/x-silverlight-2'>
                            <param name='Source' value='" + Source + @"' />
                            <param name='MinRuntimeVersion' value='3.0.40624.0' />
                            <param name='Background' value='#FFFFFFFF' />
                            <param name='initParams' value='" +
                                string.Format("{0}={1}", "site", HttpUtility.UrlEncode(CurrentWeb)) +
                                string.Format(", {0}={1}", "selectedentityid", HttpUtility.UrlEncode(SelectedEntityID)) +
                                @"' />
                            </object>";
            this.Controls.Add(obj);
        }

        public override void VerifyRenderingInServerForm(Control control)
        {
            return;
        }
    }
Lo que hago aquí es coger los parámetros del entorno en donde se ejecuta el web part y pasárselos al Silverlight. Uso el CurrentWeb para decirle a los web services del Silverlight cual es el contexto y el SelectedEntityID para resaltar la entidad que fue seleccionada la última vez que se abrió la ventana modal. Este es el código del Silverlight.
namespace SilverlightEntityTreeSelector
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();

            Tree.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(Tree_PropertyChanged);

            Tree.Show(string.Empty);
        }

        void Tree_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
        {
            if (e.PropertyName == "SelectedEntityID")
                HtmlPage.Window.Invoke("PassParameterAndClose", Tree.SelectedEntityName, Tree.SelectedEntityID);
            else if (e.PropertyName == "TreeLoaded")
                if (Application.Current.Resources.Contains("selectedentityid"))
                    if (!string.IsNullOrEmpty(Application.Current.Resources["selectedentityid"] as string))
                        Tree.ChangeSelectedItemTo(Application.Current.Resources["selectedentityid"] as string);
        }
    }
}

Ya tenemos todos los componentes.
Esto funciona de la siguiente manera: Seleccionas una entidad en el árbol de Silverlight, luego el Silverlight llama a la función javascript de la ventana modal y que pasa los parámetros al web part padre y cierra el popup. Finalmente el web part manda el filtro al List View WebPar.
Si usas este código te faltarán algunos métodos, pero lo que quería compartir aquí es el método que he seguido para conseguirlo básicamente porque no quiero tener que volver a pensarlo si alguna vez me vuelven a pedir que haga algo parecido en el futuro.



Me encantaría enseñaros algunas fotos, pero los web parts no han sido retocados por las hábiles manos de Adam, nuestro diseñador, y se os podrían salir los ojos de las órbitas.
Publicar un comentario

jueves, 18 de agosto de 2011

Creando una aplicación Windows Forms en SharePoint 2010

En mi tónica habitual, creo que me he tropezado con cada posible problema antes de conseguir ejecutar mi aplicación.

Lo que en MOSS2007 era todo risas y alegría se ha convertido en SharePoint 2010 en una tarea que me llevó por lo menos una hora… Y tuve suerte porque en mi tónica habitual, otra vez he llegado bastante tarde a 2010 y la mayoría de los problemas han sido ya resueltos y comentados en los foros…

Bueno, contaré la experiencia, así no se me olvidan los pasos necesarios la próxima vez con un poco de suerte.

Añadí la Microsoft.SharePoint.dll como siempre a las referencias y empecé a teclear. Escribí mi aplicación de tres lineas (sólo quería una aplicación para ayudarme a programar otra cosa) y le di a F5.

“The type or namespace name 'SharePoint' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?)”

Bien, no se me había olvidado nada, el problema era que tienes que apuntar la solución al .Net Framework 3.5…

image

Esa fue fácil. Había un par de sitios en donde puedes encontrar esa información. Vale, F5 otra vez.

“The Web application at http://localhost could not be found. Verify that you have typed the URL correctly. If the URL should be serving existing content, the system administrator may need to add a new request URL mapping to the intended application”


- ¡Oh venga ya! ¡Está ahí! ¿Por qué no lo encuentras? + Porque no me has apuntado a 64 bits y no estoy funcionando en modo nativo. - Ups, perdona. + No pasa nada, solo tienes que leer mis mensajes de error que te indicarán perfectamente lo que tienes que hacer.
image

Esta fue un poco más difícil de encontrar, pero después de cambiar eso, le di felizmente a F5 otra vez y… ¡Sorpresa!

“The Web application at http://localhost could not be found. Verify that you have typed the URL correctly. If the URL should be serving existing content, the system administrator may need to add a new request URL mapping to the intended application”


Si, el mismo error otra vez… Y ya no encontraba más información en internet… ¿Y si es un problema de permisos?
image

Arranqué el Visual Studio como administrador y funcionó. ¡Por fin!
Publicar un comentario

viernes, 5 de agosto de 2011

Ocultando las Scrollbars en los web parts de SharePoint 2010

Después de desplegar la primera versión alpha de nuestra solución en SharePoint 2010 noté que los web parts Silverlight estaban enmarcados en unas antiestéticas barras de scroll. Me di cuenta también que si cambiaba la altura y anchura a automático desaparecían, pero claro, entonces mi web part no tenía la talla que yo quería...

Leí este post: http://blog.benfox.info/?p=11 y, como probablemente hayas adivinado, me tiré de cabeza a la solución fea.

Había un problema, que el código javascript estaba en una foto… mal… y entonces pensé “Voy a demostrarles a todos que puedo ser tan cazurro en SharePoint 2010 como siempre lo he sido en SharePoint 2007” ¿Por qué no crear un post sobre esto?
<script type="text/javascript">

 function HideScrollBars()
 {
 document.getElementById('WebPartWPQ2').style.overflowX = "hidden";
 document.getElementById('WebPartWPQ2').style.overflowY = "hidden";

 document.getElementById('WebPartWPQ3').style.overflowX = "hidden";
 document.getElementById('WebPartWPQ3').style.overflowY = "hidden";
 }

_spBodyOnLoadFunctionNames.push("HideScrollBars")</script>
Y después de pelearme por lo menos 15 minutos con el Content Editor Web Part me las arreglé por fin para esconder las barras de scroll verticales y horizontales en mis web parts.

Ahora puedo mandar orgulloso una foto del sitio con la Vista de SharePoint 2010.

--- Actualización --- he cambiado el codigo de los web parts y ahora no es necesaria la guarreria del javascript.

Publicar un comentario

lunes, 11 de julio de 2011

Error HTTP 500 (No authority could be contacted for authentication.) en SharePoint

Después de restaurar mi máquina virtual de desarrollo en una red diferente la de mi casa estaba recibiendo un error 500 al intentar conectar. La cosa era curiosa porque podía ver el sitio desde el server, pero no desde mi máquina física y sí, había comprobado que las IPs estuviesen bien. Lo primero que hice fue configurar el IE9 para que me enseñase los errores HTTP como a mi me gusta verlos de la manera "unfriendly”.

Para hacerlo fui a Tools –> Internet Options –> Advanced, y allí en el arbol debajo de Browsing Browsing desmarqué la opción de “Show friendly HTTP error messages”.

Después de eso pude ver que el problema que estaba teniendo conectando desde fuera era “No authority could be contacted for authentication.”. Aquí vi que la manera más simple de arreglar el problema era sacar el servidor del dominio y voverlo a meter.

Y funcionó... Por fin...
Publicar un comentario

viernes, 8 de julio de 2011

Escondiendo los List View web parts cuando están vacíos

Hoy me han pedido que esconda los List View web parts de la solución cuando están vacíos... No me gusta el javascript, pero era obviamente la solución más simple, así que le pregunté a Google y me mandó a este post.

Copié el código en un web part Editor de Contenido y funcionó más o menos, pero cuando intenté esconder también las cabeceras de las columnas y añadir un mensaje solo funcionaba para dos de los tres web parts que tenía en la página cosas veredes asi que después de buscar un ratito más en Google lo cambié a:

<script type="text/javascript">
 function HideEmptyWebParts()
 {
   var itemsfound = new Array;
   var elements = document.getElementsByTagName('*');
   for(var i=0;i<elements.length;i++)
   {
      if(elements[i].className == 'ms-vb')
      {
         itemsfound.push(elements[i]);
      }
   }
  
   for (var i=0;i<itemsfound.length;i++)
   {
       if (itemsfound[i].innerHTML.indexOf("There are no items to show in this view of the")>-1)
       {
                itemsfound[i].parentNode.parentNode.parentNode.parentNode.innerHTML="<div class='ms-vb'>Not enough data to produce a dashboard.</div>";
         
       }
   }
 }

_spBodyOnLoadFunctionNames.push("HideEmptyWebParts")
 
</script>

Y entonces sí que empezó a funcionar como esperaba.
Publicar un comentario

viernes, 1 de julio de 2011

Depurando aplicaciones en el teléfono después de actualizar a “Mango”

Acabo de actualizar el teléfono a Windows Phone 7.1 codename “Mango”. No puedo decir mucho porque no he tenido tiempo de probarlo, pero sí que puedo decir que es más rápido.

Algunas de las nuevas funcionalidades no estan implementadas y tienen un cartelito de “Coming soon!” pero no es esto lo que quiero contar hoy.

El caso es que después de actualizar no podía depurar las aplicaciones en el teléfono como antes. El emulador se lanzaba automáticamente (y esto me cascaba todas las máquinas vituales de vBox que tenía corriendo en el momento.

Después de un ratito mirando me di cuenta de que era más facil de lo que pensaba… Hay un dropdown ahí arriba para que elijas cómo quieres debugarÑ
image

Solo tienes que elegir Windows Phone Device y enmi caso desbloquear otra vez el teléfono con la Developer Phone Registration tool y a correr!
Publicar un comentario

martes, 24 de mayo de 2011

Caso de Estudio de Microsoft sobre la solución de Gestión de Riesgos basada en SharePoint de StratexSystems

Estoy muy contento de ver como StratexPoint ha ayudado a HML a mejorar su Gestión de Riesgos y a reducir sus pérdidas operacionales.

Hemos trabajado un montón en la solución este año y me es muy gratificante ver que nuestro trabajo tiene un impacto en el Mundo Real™. La mayoria de las veces se me olvida.
Publicar un comentario

viernes, 22 de abril de 2011

Stratex Systems está en la Nube

Acabo de recibir el link para unirme al programa beta de Office 365, lamentablemente otra vez no tengo tiempo hoy para probarlo como Dios manda, pero lo tendré el martes ojalá.

Os mantendré informados.

image

Un montón de licencias que asignar, un monton de software que probar...
Publicar un comentario

jueves, 21 de abril de 2011

Depurando aplicaciones de Windows Phone 7

Finalmente conseguí cargar y depurar mi aplicación en mi teléfono, pero no fue tan fácil...

Antes de nada encontré las instrucciones en esta página http://msdn.microsoft.com/en-us/library/ff941089(v=vs.92).aspx#BKMK_Register
 
Ahí dice que tienes que registrarte en el App Hub antes de poder hacer nada con tu móvil (y cuesta 100$) las palabras textuales son:

“You should register for membership as a Windows Phone developer before you begin creating applications because some development tasks, such as installing your application on a physical phone for testing, require App Hub membership”

Bien, esto significa que tienes que pagar 100$ antes de probar nada... paga antes, decide después. No puedo decir que me guste la filosofía.
 
Al final mi jefe se registró en el App Hub con su Live ID personal. Gran error. Sabíamos que podíamos tener hasta tres teléfonos de desarrollo, pero nadie nos dijo que todos ellos debían estar con la misma Live ID. Creíamos que se podrían invitar desarrolladores o algo así, pero no. Y no hay vuelta atrás no puedes cambiar tu suscripción a App Hub a otro Live ID... Tampoco estoy contento con esto.

¿Quieres saber cómo lo solucionamos? pues con una buena dosis de confianza por su parte.
 
Una vez que tienes registrada la Live ID al App Hub todo es fácil.

Conseguí desbloquear y registrar el teléfono usando la "Developer Phone Registration tool" http://msdn.microsoft.com/en-us/library/ff769508(VS.92).aspx… Bien, ¿y ahora que?

Pues ahora ya está todo preparado.
 
Si quieres ejecutar tu aplicación en tu móvil en cualquier momento tienes que desplegarla con la “Application Deployment” siguiendo las instrucciones de http://msdn.microsoft.com/en-us/library/gg588378(v=vs.92).aspx
 
O si prefieres puedes pulsar F5 en tu Visual Studio y poner la aplicación a correr en el teléfono y, finalmente... ¡Depurar!
Publicar un comentario

Creando un Expander en Silverlight para Windows Phone

Hace unos días estaba migrando una aplicación a WP7 y me di cuenta de que el control Expander no estaba... Me instalé entonces el Silverlight for Windows Phone Toolkit pero me di cuenta de que tampoco había Expander allí.

No se me ocurría ninguna manera nueva de representar la información sin expanders así que tuve que crear una versión simplificada para la ocasión. El control se compone de un Grid, un StackPanel y un TextBlock.

Está muy limitado y no se supone que con esto se vaya a poder sustituir al Expander de toda la vida, pero quizás pueda ayudar a alguien por ahí.

El código XAP es:
<Grid x:Name="LayoutRoot">
  <Border VerticalAlignment="Top" BorderBrush="#FF929EB0" BorderThickness="1" CornerRadius="2" Background="#FFE9E9E9" Margin="5,2">
            <Grid d:LayoutOverrides="Width">
    <Grid.RowDefinitions>
     <RowDefinition Height="Auto" MinHeight="20"/>
     <RowDefinition Height="Auto" MinHeight="5"/>
    </Grid.RowDefinitions>
    <TextBlock x:Name="Header" TextWrapping="Wrap" d:LayoutOverrides="Width" Foreground="#FF656565" Margin="15,2,0,0" VerticalAlignment="Top"/>
    <StackPanel x:Name="ChildrenPanel" VerticalAlignment="Top" d:LayoutOverrides="Width" Margin="0,2,0,0" Grid.Row="1"/>
   </Grid>
  </Border>
 </Grid>
El truco está en añadir un TextBlock en la cabecera del expander y suscribirse al evento MouseLeftButtonUp del TextBlock para controlar el plegado y desplegado. También he añadido una propiedad Folded para manejar el estado del expander desde afuera.

Si el expander está plegado añado los elementos al StackPanel, si está desplegado los quito. Suena muy simple, pero no era capaz de hacerlo funcionar. El StackPanel se quedaba del mismo tamaño, pero vacío, sin hijos... feísimo.

Después de pasar un rato intentando encoger el StackPanel a manija cambiando el parámetro Heigh encontré el problema.

Estaba intentando borrar todos los elementos del StackPanel a la vez con Children.Clear y eso estaba volviéndolo loco. La solución era borrar los elementos dentro de Children de uno en uno.

El código para la clase Expander es algo así:
public partial class Expander : UserControl
 {
        bool _Folded;
        public bool Folded
        {
            get { return _Folded; }
            set
            {
                _Folded = !value;
                ExpanderSwitch();
            }
        }
        List ChildrenList;


  public Expander()
  {
   // Required to initialize variables
   InitializeComponent();

            ChildrenList = new List();

            Header.MouseLeftButtonUp += new System.Windows.Input.MouseButtonEventHandler(UserActivity_MouseLeftButtonUp);
  }

        void UserActivity_MouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            ExpanderSwitch();
        }

        private void ExpanderSwitch()
        {
            if (Folded)
            {
                foreach (var child in ChildrenList)
                    ChildrenPanel.Children.Add(child);
            }
            else
            {
                if (ChildrenList.Count == 0)
                    foreach (var item in ChildrenPanel.Children)
                        ChildrenList.Add(item);

                while (ChildrenPanel.Children.Count > 0)
                    ChildrenPanel.Children.RemoveAt(0);
            }

            _Folded = !_Folded;
        }
 }
Y para usarlo solo tienes que añadir el control:
<Grid x:Name="LayoutRoot">
        <this:Expander x:Name="UserNews" />
    </Grid>
Y en el code behind puedes hacer algo como esto:
UserNews.Header.Text = GetHeader(News[0]);

            foreach (FrameworkNews news in News)
                UserNews.ChildrenPanel.Children.Add(new NewsDetail(news.Link, GetDetail(news), news.Where));

            UserNews.Folded = true;
Si tienes tiempo puedes añadir imágenes y animaciones al expander, y también un mejor "control del despliegue"... Yo no puedo dedicarle más tiempo, aunque me encantaría.... Una pena.
Publicar un comentario

viernes, 4 de febrero de 2011

Efímeras máquinas virtuales gratuitas en CloudShare

Esta última semana he estado buscando una forma de contratar IaaS Olé ya me se un acrónimo nuevo con el que torturar a la gente y lo he publicado por twitter, por cierto ahora tengo twitter y en twitter mi amigo Luis Ruiz me aconsejó que probara CloudShare. Yo, con el ajetreo del día a día no le hice mucho caso al principio... MAL.

En CloudShare te ofrecen la posibilidad de crear entornos virtuales gratis. Con software y licencias incluidos en el precio.

Tienen un montón de plantillas de máquinas básicas para que empieces a trabajar con tu máquina virtual en 10 minutos (contando el tiempo de registro).


Por el módico precio de nada de nada te prestan 3 procesadores, 120GB de HD y 6144MB de RAM más las licencias de la máquina que elijas.

Si decides pagar por la cuenta ProPlus 49$ puedes elegir plantillas más complejas como Sharepoint 2010
:
Sí, funciona aquí, pero no en Azure VM Role...

Cuando arrancas la máquina ya tienes disponible tu URL para poder acceder a ella, todo sorprendentemente sencillo. Puedes compartir tus m'aquinas con otros usuarios de CloudShare y además puedes guardar snapshots de tus máquinas y recuperarlos en caso de que las estropees...

El inconveniente de todo esto es que las máquinas se apagan a los 30 minutos de inactividad (y cuando las despiertas les ha cambiado la IP externa), pero aún así, es un entorno gratis y fantástico para hacer demos o testings.

Os aconsejo que lo probéis.

Y tampoco ofrecen VPN en la versión gratis, por si estabas pensando saltarte el límite de MegaVideo.
Publicar un comentario

martes, 1 de febrero de 2011

Ni SharePoint ni SQL Server funcionan en Azure VM Role

Como ya sabréis los que me leéis he estado intentando que me dejaran participar en la beta del Azure VM Role, pues bien, he conseguido una entrevista con los encargados de darme el acceso y me han hecho la pregunta más temida... ¿Y tu eso para que lo quieres?

Mi idea era montar una granja en la nube con SQL y SharePoint de manera que pudiese usar SSIS, nuestro cubo de BI, Reporting Services y SharePoint.

Bien, pues me han comentado que "De momento es imposible" al parecer hay problemas de conectividad entre las máquinas de VM Role y no funcionan correctamente ni SharePoint ni SQL Server.

Consejo que me dan, que lo monte todo en Office 365. Pero claro, primero de todo, es imposible pronunciar Office 365 en inglés y segundo, ¿qué pasa con mi cubo y mis reporting services si no puedo sacar web services del sandbox de Office 365? pues que no pueden funcionar, con lo que me quedaría con la mitad de mi solución funcionando y la otra tristemente olvidada en el último rincón de mi disco duro.

Solución que me dan... que me espere hasta el verano.

Voy a intentar que mi jefe me de 6 meses de vacaciones, pero si esto no funciona voy a tener que buscarme otro sitio en donde montar mi granja.

Ah y, por si alguien lo dudaba, al final no me han dado acceso al beta program.


Y los de Google mientras tanto  regalando portátiles para que la gente pruebe el Chrome OS...
Publicar un comentario

viernes, 28 de enero de 2011

Subiendo Máquinas a Azure VM Role

Dado que toda la tecnología que usamos en Stratex Systems es de Microsoft parece coherente que alojemos nuestras máquinas virtuales en Azure... ¡Beta!, tengo miedo. Como todavía hay poca información disponible sobre este tema voy a intentar escribir un poco sobre mi experiencia.

Lo primero que quiero deciros a los que estéis intentando probar el VM Role es que hace falta que os acepten en el beta program. Hay un montón de webs incluidas muchas de Microsoft que dan por hecho que solo con daros de alta ya sería suficiente para empezar a trabajar, pero no es cierto.

Para quien no sepa de qué va esto, se trata de un sistema de venta de IaaS (Infraestructura como Servicio) en donde tú subes tus discos duros de Hyper-V tras instalarles todo el software que necesitas y ellos se encargan de darles vida. Luego te cobran por espacio el almacenado, el número de procesadores y la cantidad de RAM que utilices (por hora).

Bien, no puedo hablar mucho más de este tema ya que todavía estoy esperando a que me aprueben la solicitud...



Ahora mismo me siento como un chaval de 15 años, mucha teoría y poca práctica.
Publicar un comentario