Arrastrar y soltar (drap y drop) en visual basic.net

Hola a todos, hoy desarrollaremos una práctica sobre arrastrar y soltar (drap y drop), esto se debe a que no solo es importante conocer cada vez más sobre programación (Claro que es muy importante, y primordial), sino también por comprender un poco que nuestros productos van enfocados al uso de usuarios finales(clientes u otros) y estos usuarios se clasifican en dos, los usuarios del teclado que les encanta escribir mucho, y los usuarios del mouse, que prefieren solo hacer operaciones  básicas como nuestro caso, de arrastrar y soltar objetos, además digamos algo ¿a quién no le gusta trabajar con el mouse?.

Una vista previa de lo que sera nuestra Practica:



Información técnica sobre la aplicación:




Esta desarrollada con visual basic.NET 2004 y framework 4.0, y pues se enfoca al uso de drap y drop, para obtener más información sobre: drap y drop, consultar un poco en internet, encontraran mucha ayuda, ya que para nuestro fin, solo realizamos practicas que ustedes puedan descargar y aplicar, y también decir que hay un formulario principal que acopla el arrastrar y soltar de texto, imágenes y archivos, y un formulario para cada uno de estos procedimientos, para que sea estudiado y comprendido mejor.

Algo de código fuente, arrastrar imagenes:

  1 Public Class ArrasrarImgs
  2     Private img As Image
  3     Private imglocalizacion As Point
  4  
  5     Private Sub ArrasrarImgs_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Me.DragDrop
  6         If e.Data.GetDataPresent(DataFormats.FileDrop) Then
  7             ' Assign the file names to a string array, in 
  8             ' case the user has selected multiple files.
  9             Dim files As String() = CType(e.Data.GetData(DataFormats.FileDrop), String())
 10             Try 
 11                 ' Assign the first image to the 'picture' variable.
 12                 Me.img = Image.FromFile(files(0))
 13                 ' Set the picture location equal to the drop point.
 14  
 15                 Me.Foto2.Image = Me.img
 16                 ' Me.imglocalizacion = Me.PointToClient(New Point(e.X, e.Y))
 17             Catch ex As Exception
 18                 MessageBox.Show(ex.Message) 
 19                 Return 
 20             End Try
 21         End If
 22  
 23         ' Handle Bitmap data. 
 24         If e.Data.GetDataPresent(DataFormats.Bitmap) Then
 25             Try 
 26                 ' Create an Image and assign it to the picture variable.
 27                 Me.img = CType(e.Data.GetData(DataFormats.Bitmap), Image)
 28                 ' Set the picture location equal to the drop point.
 29                 Me.imglocalizacion = Me.PointToClient(New Point(e.X, e.Y))
 30             Catch ex As Exception
 31                 MessageBox.Show(ex.Message) 
 32                 Return 
 33             End Try
 34         End If
 35  
 36         ' Force the form to be redrawn with the image.
 37         Me.Invalidate() 
 38     End Sub
 39  
 40     Private Sub ArrasrarImgs_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Me.DragEnter
 41         If e.Data.GetDataPresent(DataFormats.Bitmap) _
 42       Or e.Data.GetDataPresent(DataFormats.FileDrop) Then
 43             e.Effect = DragDropEffects.Copy 
 44         Else 
 45             e.Effect = DragDropEffects.None 
 46         End If
 47     End Sub
 48  
 49  
 50     Private Sub ArrasrarImgs_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 51         Me.AllowDrop = True
 52     End Sub
 53  
 54  
 55     Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
 56         MyBase.OnPaint(e) 
 57  
 58          
 59         If (Me.img IsNot Nothing) And _
 60           Not (Me.imglocalizacion.Equals(Point.Empty)) Then
 61             e.Graphics.DrawImage(Me.img, Me.imglocalizacion)
 62         End If
 63     End Sub
 64  
 65  
 66 End Class

código fuente, arrastrar texto:

  1 Public Class FormrArrastrarTexto
  2     Private MouseIsDown As Boolean = False
  3     'establecer la propiedad AllowDrop de la caja2 como true
  4  
  5  
  6     Private Sub CajaConfirmacion_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles CajaConfirmacion.DragDrop
  7         CajaConfirmacion.Text = e.Data.GetData(DataFormats.Text) 
  8     End Sub
  9  
 10     Private Sub CajaConfirmacion_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles CajaConfirmacion.DragEnter
 11         ' Check the format of the data being dropped.
 12  
 13         If (e.Data.GetDataPresent(DataFormats.Text)) Then
 14             ' Display the copy cursor. 
 15             e.Effect = DragDropEffects.Copy 
 16         Else 
 17             ' Display the no-drop cursor.
 18             e.Effect = DragDropEffects.Copy 
 19         End If
 20     End Sub
 21  
 22  
 23     Private Sub CajaCorreo_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles CajaCorreo.MouseDown
 24  
 25         'primero que todo activo este flag o alerta que me avisa que se hizo clcik en la caja
 26         MouseIsDown = True 
 27     End Sub
 28  
 29     Private Sub CajaCorreo_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles CajaCorreo.MouseMove
 30         'si se hizo click en la caja y el usuario 
 31         'mueve el mouse mientras el puntero está sobre la caja
 32         If MouseIsDown Then
 33             'inicio la operacion de arrastar y colocar
 34             CajaCorreo.DoDragDrop(CajaCorreo.Text, DragDropEffects.Copy) 
 35         End If
 36         MouseIsDown = False 
 37  
 38     End Sub
 39  
 40 End Class
 41 


código fuente, arrastrar Archivos:




  1 Public Class arrastrarARchivos
  2  
  3  
  4     Private Sub arrastrarARchivos_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  5         Me.AllowDrop = True
  6         Me.Caja1.AllowDrop = True
  7     End Sub
  8  
  9     Private Sub Caja1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Caja1.DragDrop
 10        If e.Data.GetDataPresent(DataFormats.FileDrop) Then
 11             Dim MyFiles() As String
 12             Dim i As Integer
 13  
 14             ' Assign the files to an array.
 15             MyFiles = e.Data.GetData(DataFormats.FileDrop) 
 16             ' Loop through the array and add the files to the list.
 17  
 18  
 19  
 20             If MyFiles.Length > 0 Then
 21  
 22                 Me.Caja1.Multiline = True
 23                 Me.Caja1.ScrollBars = ScrollBars.Both
 24                 For i = 0 To MyFiles.Length - 1 
 25                     ' ListBox1.Items.Add(MyFiles(i))
 26                     Caja1.Text = Caja1.Text & MyFiles(i) & vbNewLine 
 27                 Next 
 28             Else 
 29                 Caja1.Text = MyFiles(0) 
 30             End If
 31              
 32         End If
 33     End Sub
 34  
 35     Private Sub Caja1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Caja1.DragEnter
 36         If e.Data.GetDataPresent(DataFormats.FileDrop) Then
 37             e.Effect = DragDropEffects.All 
 38         End If
 39     End Sub
 40  
 41     Private Sub Caja1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Caja1.TextChanged
 42  
 43     End Sub
 44 End Class
 45 











No siendo mas espero les halla agradado esta practica y pues no se les olvide sigan pendiente del blog.

Algoritmo:Convertir número décimal a hexadecimal en Java

Hola…   En este post quiero os  regalar un algoritmo (de mi autoría) que he realizado en pseudocódigo a lápiz y papel, pero se los regalaré en un lenguaje en el cuál aún no estoy acostumbrado a programar, Java.
El Algoritmo es fácil y sencillo, espero te sirva de ayuda:
método (ó función):    firstHex(int dec): Recibe como parámetro un numero décimal menor que 16. Sirve para convertir los numeros del 10 al 15 a su equivalente en Hexadecimal (A,B,C,D,E ó F).  Si es un numero menor que 10 devuelve el mismo número.
1 public String firstHex(int dec) {
  2         String numeroHex=""; 
  3         if(dec<16) {
  4             switch(dec) { 
  5                     case 10:
  6                     numeroHex="A"; 
  7                     break; 
  8                     case 11:
  9                     numeroHex="B"; 
 10                     break; 
 11                     case 12:
 12                     numeroHex="C"; 
 13                     break; 
 14                     case 13:
 15                     numeroHex="D"; 
 16                     break; 
 17                     case 14:
 18                     numeroHex="E"; 
 19                     break; 
 20                     case 15:
 21                     numeroHex="F"; 
 22                     break; 
 23                     default: 
 24                     numeroHex=Integer.toString(dec); 
 25                     break; 
 26                 } 
 27             return numeroHex; 
 28         } else { 
 29         return "false";
 30         } 
 31     }
método (ó función):   toHex(int dec): Recibe como parámetro un numero décimal cualquiera (menor, igual o mayor que 16).  Su función es de convertir totalmente el número en Hexadecimal.  Hace uso defirstHex(int dec).




  1 public String toHex(int dec) {
  2         int cociente=16, residuo=0;
  3         String numeroHex="", numeroHex1="";
  4         if(dec<16)
  5          {
  6              numeroHex=firstHex(dec);
  7          } else 
  8            {
  9              do 
 10               {
 11                cociente=dec/16;
 12                residuo=dec%16;
 13                dec=cociente;
 14                numeroHex1=firstHex(residuo);
 15                numeroHex=numeroHex1+numeroHex;
 16                dec=cociente;         
 17               } while (dec&gt;=16);
 18         numeroHex1=firstHex(dec);
 19         numeroHex=numeroHex1+numeroHex;
 20         }
 21         return numeroHex;
 22     }

Por ultimo sólo es llamar el método (o función) toHex(int dec). Ejemplo:  Queremos convertir el número 349.



  1 String numeroHexadecimal;
  2 numeroHexadecimal=toHex(349);

Empezando con Silverlight





El presente video más que una explicación o enseñar cómo crear algo es una muestra de cómo es la forma de trabajo de Silverlight. y como con poco trabajo se pueden logran resultados elegantes y profesionales, y mas allá de eso, si no solo hablamos de apariencia, sino de funcionalidad, pues decir que los resultados son excelentes.






Lo utilizado para crear aplicaciones en Silverlight es manejar el XAML, lenguaje de etiquetado basado en el estándar XML, también como se comento en el video, trabajamos con Expression Blend 4 y Microsoft Visual Studio 2010. Esta es la primera aplicación que realizo, solo estoy comenzando aprender esta nueva tecnología pero cuando me encuentre mas avanzado en mis estudios estare compartiendo tutoriales interesantes y además colgando proyectos para que lso interesados puedan descargar.


Este es el XAML del proyecto:

  1 <UserControl
  2     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4     xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  5     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
  6     xmlns:dataInput="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.Input" x:Class="SilverlightPractica1.MainPage"
  7     mc:Ignorable="d" d:DesignWidth="380" Background="#FF451515" Width="400" Height="380">
  8     <UserControl.Resources>
  9         <Storyboard x:Name="animacionIzquierda">
 10             <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)" Storyboard.TargetName="Anim1">
 11                 <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
 12                 <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="-127"/> 
 13                 <EasingDoubleKeyFrame KeyTime="0:0:0.98" Value="-342.057"/> 
 14                 <EasingDoubleKeyFrame KeyTime="0:0:1.46" Value="1.784"/>
 15             </DoubleAnimationUsingKeyFrames>
 16             <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)" Storyboard.TargetName="Anim3">
 17                 <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
 18                 <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="-127"/> 
 19                 <EasingDoubleKeyFrame KeyTime="0:0:0.98" Value="-342.057"/> 
 20                 <EasingDoubleKeyFrame KeyTime="0:0:1.46" Value="1.784"/>
 21             </DoubleAnimationUsingKeyFrames>
 22             <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)" Storyboard.TargetName="Anim2">
 23                 <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
 24                 <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="-175"/> 
 25                 <EasingDoubleKeyFrame KeyTime="0:0:0.96" Value="173.757"/>
 26                 <EasingDoubleKeyFrame KeyTime="0:0:1.08" Value="135.757"/>
 27                 <EasingDoubleKeyFrame KeyTime="0:0:1.24" Value="109.775"/>
 28                 <EasingDoubleKeyFrame KeyTime="0:0:1.42" Value="55.414"/>
 29                 <EasingDoubleKeyFrame KeyTime="0:0:1.5" Value="0.414"/>
 30                 <EasingDoubleKeyFrame KeyTime="0:0:1.72" Value="0.414"/>
 31             </DoubleAnimationUsingKeyFrames>
 32             <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)" Storyboard.TargetName="Anim2">
 33                 <EasingDoubleKeyFrame KeyTime="0:0:1.42" Value="0"/>
 34                 <EasingDoubleKeyFrame KeyTime="0:0:1.5" Value="1086.156"/>
 35                 <EasingDoubleKeyFrame KeyTime="0:0:1.72" Value="1790.737"/>
 36             </DoubleAnimationUsingKeyFrames>
 37         </Storyboard>
 38     </UserControl.Resources>
 39  
 40     <Grid x:Name="LayoutRoot" >
 41         <Grid.Background>
 42             <LinearGradientBrush EndPoint="-0.757,0.051" StartPoint="0.338,0.891">
 43                 <LinearGradientBrush.RelativeTransform>
 44                     <TransformGroup>
 45                         <ScaleTransform CenterY="0.5" CenterX="0.5"/>
 46                         <SkewTransform CenterY="0.5" CenterX="0.5"/>
 47                         <RotateTransform CenterY="0.5" CenterX="0.5"/>
 48                         <TranslateTransform X="0.562" Y="0.359"/>
 49                     </TransformGroup>
 50                 </LinearGradientBrush.RelativeTransform>
 51                 <GradientStop Color="Black"/>
 52                 <GradientStop Color="#FF20B45F" Offset="1"/>
 53                 <GradientStop Color="#FF09341B" Offset="0.401"/>
 54                 <GradientStop Color="#FF136F3A" Offset="0.763"/>
 55             </LinearGradientBrush>
 56         </Grid.Background>
 57         <dataInput:Label Height="30" Margin="89,8,73,0" VerticalAlignment="Top" Foreground="#FFEDF9F6" BorderBrush="#FF9FE4E9" Content="Validacion de Usuario" FontSize="21.333" FontFamily="Harrington" FontWeight="Bold"/>
 58         <dataInput:Label Height="30" Margin="37,70,0,0" VerticalAlignment="Top" Foreground="#FFEDF9F6" BorderBrush="#FF9FE4E9" Content="Nombre:" FontSize="21.333" FontFamily="Harrington" HorizontalAlignment="Left" Width="99"/>
 59         <dataInput:Label Margin="37,118,0,137" Foreground="#FFEDF9F6" BorderBrush="#FF9FE4E9" Content="Contraseña:" FontSize="21.333" FontFamily="Harrington" HorizontalAlignment="Left" Width="114"/>
 60         <PasswordBox x:Name="CajaPasword" Margin="167,167,53,184" FontSize="18.667" ToolTipService.ToolTip="Escriba Su Contraseña">
 61             <PasswordBox.Foreground>
 62                 <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
 63                     <GradientStop Color="Black" Offset="0"/>
 64                     <GradientStop Color="#FF208079" Offset="1"/>
 65                 </LinearGradientBrush>
 66             </PasswordBox.Foreground>
 67             <PasswordBox.Background>
 68                 <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
 69                     <GradientStop Color="Black" Offset="0"/>
 70                     <GradientStop Color="White" Offset="0.388"/>
 71                 </LinearGradientBrush>
 72             </PasswordBox.Background>
 73         </PasswordBox>
 74         <TextBox x:Name="CajaNombre" Height="30" Margin="167,70,53,0" TextWrapping="Wrap" VerticalAlignment="Top" FontFamily="Ravie" FontSize="13.333" ToolTipService.ToolTip="Escriba su Nombre de Usuario" Text="felix hernandez">
 75             <TextBox.Background>
 76                 <LinearGradientBrush EndPoint="0.5,1" MappingMode="RelativeToBoundingBox" StartPoint="0.5,0">
 77                     <GradientStop Color="Black"/>
 78                     <GradientStop Color="#FFF9EDED" Offset="0.349"/>
 79                 </LinearGradientBrush>
 80             </TextBox.Background>
 81             <TextBox.Foreground>
 82                 <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
 83                     <GradientStop Color="Black" Offset="0"/>
 84                     <GradientStop Color="#FF208079" Offset="1"/>
 85                 </LinearGradientBrush>
 86             </TextBox.Foreground>
 87         </TextBox>
 88         <Button x:Name="BotonEntrar" Content="Validar" Height="32" Margin="37,0,0,69" VerticalAlignment="Bottom" FontFamily="Ravie" Background="#FF1794FD" HorizontalAlignment="Left" Width="131">
 89             <Button.Foreground>
 90                 <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
 91                     <GradientStop Color="Black" Offset="0"/>
 92                     <GradientStop Color="#FF208079" Offset="1"/>
 93                 </LinearGradientBrush>
 94             </Button.Foreground>
 95         </Button>
 96         <Ellipse x:Name="Anim1" HorizontalAlignment="Left" Height="23" Margin="0,0,0,9" Stroke="Black" VerticalAlignment="Bottom" Width="23" RenderTransformOrigin="0.5,0.5">
 97             <Ellipse.RenderTransform>
 98                 <TransformGroup>
 99                     <ScaleTransform/>
100                     <SkewTransform/>
101                     <RotateTransform/>
102                     <TranslateTransform/>
103                 </TransformGroup>
104             </Ellipse.RenderTransform>
105             <Ellipse.Fill>
106                 <LinearGradientBrush EndPoint="0.5,1" MappingMode="RelativeToBoundingBox" StartPoint="0.5,0">
107                     <GradientStop Color="Black" Offset="1"/>
108                     <GradientStop Color="#FF78BC79" Offset="0.539"/>
109                 </LinearGradientBrush>
110             </Ellipse.Fill>
111         </Ellipse>
112         <Ellipse x:Name="Anim2" Height="23" Margin="180,0,177,9" Stroke="Black" VerticalAlignment="Bottom" RenderTransformOrigin="0.5,0.5" Width="23">
113             <Ellipse.RenderTransform>
114                 <TransformGroup>
115                     <ScaleTransform/>
116                     <SkewTransform/>
117                     <RotateTransform/>
118                     <TranslateTransform/>
119                 </TransformGroup>
120             </Ellipse.RenderTransform>
121             <Ellipse.Fill>
122                 <LinearGradientBrush EndPoint="0.5,1" MappingMode="RelativeToBoundingBox" StartPoint="0.5,0">
123                     <GradientStop Color="Black" Offset="1"/>
124                     <GradientStop Color="#FF78BC79" Offset="0.539"/>
125                 </LinearGradientBrush>
126             </Ellipse.Fill>
127         </Ellipse>
128         <Ellipse x:Name="Anim3" HorizontalAlignment="Right" Height="23" Margin="0,0,0,9" Stroke="Black" VerticalAlignment="Bottom" Width="23" RenderTransformOrigin="0.5,0.5">
129             <Ellipse.RenderTransform>
130                 <TransformGroup>
131                     <ScaleTransform/>
132                     <SkewTransform/>
133                     <RotateTransform/>
134                     <TranslateTransform/>
135                 </TransformGroup>
136             </Ellipse.RenderTransform>
137             <Ellipse.Fill>
138                 <LinearGradientBrush EndPoint="0.5,1" MappingMode="RelativeToBoundingBox" StartPoint="0.5,0">
139                     <GradientStop Color="Black" Offset="1"/>
140                     <GradientStop Color="#FF78BC79" Offset="0.539"/>
141                 </LinearGradientBrush>
142             </Ellipse.Fill>
143         </Ellipse>
144     </Grid>
145 </UserControl>
146 


Ahora, como siempre pueden Descargar el Proyecto para que jueguen un poco:



Tiempo sin escribir

Primero que todo quiero saludar a mis lectores, para mi es grato contar con sus visitas a mi blog.

Quiero informar algunos de los motivos por el cual tengo el blog olvidado como lo es el estar bastante enfermo durante un largo tiempo y antes de eso el estar finalizando semestre en la universidad que siempre me quita bastante tiempo, aun así aquí estoy recuperándome y con muchas ganas de escribir, y pues quería avisar que estoy aprendiendo WPF (Windows Presentation Foundation) y de lo cual espero compartir con ustedes lo que aprenda, quiero aprender ASP aunque será más luego y espero también poder compartirlo con ustedes, y pues sobre VB que ha sido lo más tratado en este blog no lo dejaremos a un lado, pues se espera profundizar más en este lenguaje de programación tan importante, siendo todo esto lo que tengo por decir espero que no hallan más inconvenientes para tener nuevo contenido que sea de alto interés en nuestro blog.

Windows Azure (Que?, como?, Cuando? & por que?)

Autor: Clipto



Tal ves muchos aun no escuchan hablar de esta nueva Tecnología (Plataforma) & es normal su lanzamiento es aun muy reciente, pero tras de leer e investigar un poco en Internet tratando de asimilar que era esto me dispongo a escribir este sencillo Documento que pretende dar una idea Básica pero General de esta nueva Tecnología.


Empecemos con algo de Historia acerca de la programación, recomendaría no volarse esta parte ya que como en una cola lo primero es lo mas importante y esto nos dará una base para entender de Que se trata todo este cuento y comprender las ventajas de esta tecnología que como dijo alguien: no es un capricho, y como digo yo: no es un lujo es toda una necesidad; Ahora entremos un poco en materia con algo de Historia.


Atentados del 11 de septiembre de 2001: Todos recordamos este ataque el cual lamentamos muchos ya que fue algo catastrófico, pero se preguntaran ¿Esto que tiene que ver?, en realidad es muy simple; si lo observamos desde un punto de vista tecnológico y aun mas nosotros ingenieros de sistemas conocemos la importancia y valor de los datos sabremos que estos atentados causaron la perdida de millones y millones de datos pues este lugar en su interior era un centro de datos, al incendiarse todos los equipos se perdieron los datos y no hubo manera alguna de recuperarlos lo que llevo a cantidades de compañías al fracaso y posteriormente a declararse en banca rota ya que su materia prima (Los datos) se había perdido no tenían como seguir adelante, como vemos esto nos esta aclarando mucho la mente, pero ahora pensemos que habrán dicho los clientes, proveedores etc. no es culpa de ellos que las compañías tuvieran los datos almacenados en ese lugar por lo que tomaron repercusiones legales contra las empresas. Estos acontecimientos llevaron a analistas a comprender que necesitaban soluciones, que necesitaban una forma de prevenir la perdida de datos ocasionados por problemas X o Y de cualquier índole, & es ahí donde Microsoft empieza a trabajar en el desarrollo de esta tecnología.



Aplicaciones en la Nube: Esta es por decirlo así la idea en que se basa la plataforma AZURE .
Un conjunto de soluciones para evitar problemas como los comentados anteriormente, es decir un plan de recuperación y protección de datos. Pero se preguntaran ¿Como? Muchos ya conocen lo que son servicios de hosting, pero recordemos un poco. Un hosting es un servidor dedicado donde almacenare información, generalmente utilizado para alojar archivos de código que son interpretado por los navegadores es decir “paginas web”
las aplicaciones en las nube desarrollan un concepto muy similar son aplicaciones que serán subidas a servidores y su funcionamiento sera desde la nube.


Hasta este punto ya respondemos los interrogantes al ¿Que?, ¿Cuando?, ¿Como? & ¿por que? Sobre la plataforma Azure, pero no podemos dejar solamente ahí, ya que se nos presentan miles de preguntas, ente esas: ¿es fiable?, ¿es estable el sistema?, ¿como funciona?, para resolver estos interrogantes entraremos un poco mas en materia sobre esta tecnología.






Windows Azure: Diré que este es el centro de datos de Microsoft, es decir los servidores donde estarán alojadas nuestras aplicaciones como alguien dijo: pensemos en ello como una granja de servidores trabajando para cumplir con el propósito de la nueva tecnología, ahora entraremos a ver las ventajas que este servicio implica: si tenemos nuestra aplicación corriendo en la nube piensen que los datos crecen cada ves mas rápido, si estuviéramos trabajando en equipos locales gastaríamos mucho en expansión de equipos para guardar todos los datos y garantizar que nuestra aplicación siga su curso normal, pero como ahora esta en la nube no debo preocuparme por estos detalles pues como se dijo en un principio son cantidades de servidores por lo cual si nuestra aplicación e información necesitan mas espacio esta se ira expandiendo a medida que esto ocurra. Como vemos nos ahorramos mucho dinero, pero veamos otra ventaja que conlleva el tener nuestras aplicaciones en la nube, pues un entorno siempre actualizado y seguro, pero ¿quien se encarga de ello? Esto funciona por abstracción no sabremos quien ni como pero este proceso sera realizado por el personal de Microsoft, si antes una compañía tenia que pagar por un experto en seguridad informática se esta ahorrando este capital pues ahora no hay uno si no muchos trabajando porque estos proceso de actualización y seguridad de nuestras aplicaciones sucedan y todo esto dentro del mismo servicio.



SQL Azure: Uno de los puntos central de esta nueva tecnología es SQL Azure, que como se puede deducir por su nombre es el encargado y responsable del trabajo con Bases de Datos en la nube, mencionare algo que me parece muy importante sobre su funcionamiento y es uno de sus componentes: “sincronizador de datos”, se preguntaran cual es su función, pues este empieza hacer su trabajo cuando laboramos con BD de acceso desconectado permitiendo la sincronizacion desde el DataSet hasta el origen de datos, pero porque me llamo tanto la atención este componente y porque hablo de el, pues es sencillo en esta nueva tecnología no es obligatorio que yo tenga mi aplicación en la nube puedo solo tener mi base de datos, y la aplicación estar en un equipo local, algo que muestra que esta tecnología ha sido laborada con muchos detalles tratando de no dejar puntos fuera de ella.

.NET Services: Quien es el encargado de la seguridad de este servicio?, sera optimo el rendimiento de mi aplicación?. Para aclarar estos aspectos que son muy importantes en servicios como estos debemos hablar de .NET Services que es quien esta velando por la seguridad de nuestro producto, como ejemplo tomemos las tareas administrativas, ¿al estar una aplicación en la nube cualquiera puede acceder a ella?, pues no: .NET Services se encarga del control de acceso a los servicios para poder realizar tareas de tipo administrativas o no administrativas. Y por rendimiento hablaremos de Computer Services; pues seria lógico pensar que tanto trafico hacia los servidores
haría lento el proceso de respuesta de ellos, por ende se haría lento nuestra aplicación, pues este componente se encarga de distribuir la carga de trabajo entre distintas maquinas, pero no solo es eso porque podría entonces distribuir entre servidores que ya están ocupando muchos trabajos y servicios, se trata entonces de distribuir los trabajos entre los servidores que posean menos trabajos y como ya conocemos que dos cabezas piensan mejor que una, podemos concluir dos o mas servidores trabajan mejor que uno por lo cual gozaremos de servicios de respuesta óptimos, pero ¿que pasaría si son nuestros equipos los que fallan?, no hay problema este servicio esta bien construido y pensado por lo que también podremos acceder desde cualquier dispositivo es decir podríamos acceder desde los celulares entre otros lo que garantizaría que nuestra productividad no se vería afectada.


Bueno ya tenia mas de un año sin escribir un documento, pero espero este sea de provecho para muchos, y decir que nosotros los Ing. de Sistemas y profesionales TI, somos los encargados y responsables de llevar estas nuevas tecnologías a nuestra sociedad porque la tecnología avanza cada vez mas rápido, y quien no este en la vanguardia de estas nuevas tecnologías representarían perdidas de rendimiento y optimizacion en gran medida a una empresa dejándolo fuera de la competencia laboral.

Descargar el Documento en PDF





http://www.4shared.com/document/SFv39Vw7/azure2.html