Montaremos un sistema para poder redireccionar una aplicación a un destino u otro dependiendo de los parámetros de un archivo xml.
Tenemos una aplicación que está en constantemente en evolución y crecimiento. Este implica numerosas actualizaciones y para que estas sean trasparentes al usuario se ha montado este sistema.
Pasos previos
El icono de acceso a la aplicación Hermes se distribuirá mediante un script de inicio de sesión a nivel de usuario por medio de Active Directory.
Se crearán dos recursos compartidos. En este ejemplo, usaremos como repositorio NetApp y daremos los permisos de acceso a los grupos de usuarios pertinentes.
Archivo de parámetros
Creamos un archivo xml donde residirán los parámetros que formarán el path destino de la aplicación, el xml será:
<?xml version="1.0" encoding="UTF-8"?> <parametros> <!--Nombre o dirección IP del servidor que contiene el ejecutable --> <servidor>SERVIDOR</servidor> <!--Path del recurso compartido sin servidor, ni contrabarra inicial ni final--> <!--La variable = nodo activo se representa con $$--> <recursoCompartido>Aplicacion_nodo$$</recursoCompartido> <!--Nombre del ejecutable --> <nombreEjecutable>ElFosoDelSarlacc.exe</nombreEjecutable> <!--Nodo Activo, indicar el nodo activo con la letra del nodo (A, B) --> <nodoActivo>A</nodoActivo> </parametros>
Aplicación Hermes
La aplicación está realizada con MS Visual Basic 2010.
Al ejecutar Hermes leerá el archivo xml de parámetros. Este archivo hemos de ubicarlo den el mismo directorio que el propio ejecutable.
Una vez finalizada la lectura de los parámetros montara el path de destino y ejecutará la aplicación destino cerrándose Hemes.
El código de la aplicación es:
Imports System.Xml
Imports System
Imports System.Diagnostics
Imports System.Threading
Module Hermes
Sub Main()
Console.Title = "Hermes, clusterizando aplicaciones"
ejecutarAplicacion()
End Sub
Public Sub ejecutarAplicacion()
Dim path As New ProcessStartInfo(lecturaPath().ToString)
Dim ejecutar As New Process
Try
ejecutar.StartInfo = path
ejecutar.Start()
Catch ex As Exception
Console.WriteLine(ex.ToString())
End Try
End Sub
Private Function lecturaPath()
Try
Dim m_xmld As XmlDocument
Dim m_nodelist As XmlNodeList
Dim m_node As XmlNode
Dim servidor As String, recursoCompartido As String, nombreEjecutable As String, nodoActivo As String
Dim path As String
'Crear XML Ddocument
m_xmld = New XmlDocument()
'Cargar el fichero XML
m_xmld.Load(".\HermesParametros.xml")
'Lectura de parametros del XML
' SERVIDOR
m_nodelist = m_xmld.SelectNodes("/parametros/servidor")
For Each m_node In m_nodelist
servidor = m_node.ChildNodes.Item(0).InnerText
Next
' RECURSO COMPARTIDO
m_nodelist = m_xmld.SelectNodes("/parametros/recursoCompartido")
For Each m_node In m_nodelist
recursoCompartido = m_node.ChildNodes.Item(0).InnerText
Next
' EJECUTABLE
m_nodelist = m_xmld.SelectNodes("/parametros/nombreEjecutable")
For Each m_node In m_nodelist
nombreEjecutable = m_node.ChildNodes.Item(0).InnerText
Next
' NODO ACTIVO
m_nodelist = m_xmld.SelectNodes("/parametros/nodoActivo")
For Each m_node In m_nodelist
nodoActivo = m_node.ChildNodes.Item(0).InnerText
Next
'Montar el path
path = "\\" & servidor & "\" & recursoCompartido & "\" & nombreEjecutable
'Sustituir la variable $$ por el valor del nodoActivo
path = path.Replace("$$", nodoActivo.ToString)
Return path
Catch ex As Exception
Console.Write(ex.ToString())
End Try
End Function

No hay comentarios:
Publicar un comentario