Como empezar con MongoDB, Node.js, Express y Jade en Visual Studio

mongo_visual_studio
Estándar

Renovarse o morir.

Esa es la frase lapidaria que cualquier buen programador lleva grabada en su cerebro desde que empieza a trabajar en esta selva de lenguajes, bases de datos, frameworks y demás “fauna”.

Durante muchos años mis labores principales no eran de programación, prácticamente menos Access (y VBA) mis labores profesionales habían sido siempre de gestión de sistemas (servidores, comunicaciones, bases de datos, etc). Pero llego mi “evolución” profesional en el año 2006, cuando gracias a mis conocimientos de Access y VBA entre en una empresa en la que de verdad comencé mi carrera de amor-odio con la programación, concretamente en entorno web con ASP clásico.

Alguno ya empezará a mirar ojiplatico las palabras “ASP Clásico”, pero si, la web de mi nueva empresa estaba programada en ese lenguaje prácticamente calcado a Visual Basic…pero funcionaba, y bastante bien además. Al no provenir de la casta de los “programadores” universitarios, en muchos temas soy bastante menos extremista en cuanto a que cosas son importantes a la hora de crear código (patrones, POO, como usar variables, constantes y demás de forma “correcta”, etc)…yo soy mas pragmático, y muchos dirán “sucio”….que se le va a hacer. Admito que mi preocupación, quizás por mi pasado de Sistemas, es que el programa funcione bien, ¿Que se puede hacer ademas bonito?, seguramente, pero alguien que no entró en ese ámbito laboral desde el principio, bastante tiene con que las cosas funcionen bien. Esto me da una serie de ventajas como he dicho…soy mucho mas flexible a la hora de considerar nuevas situaciones y soluciones a los problemas diarios, y entre ellos se encuentran las evoluciones de mis desarrollos actuales.

Actualmente sigo manteniendo aplicaciones con ASP Clásico, pero mis ultimos backends ya se programan en C# (siempre sobre SQL Server). El hecho es que para vivir como freelance del desarrollo web te encuentras con muchos ámbitos distintos, y el que cada vez mas esta poniéndose en cabeza de las aplicaciones online, es el tema del BigData. Para el que no lo sepa, el “BigData” no es un monstruo de las montañas….es un concepto que engloba distintos tipos de motores de bases de datos especializadas en manejar grandes cantidades de información.

¿Porque existe el BigData?

El análisis de datos es fundamental para las estrategias de negocio actuales, incluso aunque el negocio no sea online. Este análisis siempre esta basado en consultar distintas variables en las bases de datos para extraer información relevante de los clientes, el problema es que en el caso de empresas con cientos de miles o millones de clientes/usuarios, las bases de datos relacionales (SQL Server, Oracle, MySQL, etc) empiezan a tener problemas cuando las consultas requieren manejar cientos de miles o millones de registros, precisamente por la arquitectura en la que se guarda la informacion. Para solucionar este problema desde distintas posiciones han surgido bases de datos NoSQL (Not Only SQL) que intentan solucionar esta problemática usando estrategias distintas para almacenar los datos, y hacer que la consulta y extracción de información sea mucho mas efectiva a los niveles que no llegan las relacionales.

MongoDB

De todas las bases de datos NoSQL mas conocidas hice un estudio de su implantación, uso, y complejidad de aprendizaje para empezar a trabajar con alguna de ellas, siendo Mongo la seleccionada. El argumento definitivo es que tiene mucha mas cuota de mercado que el resto de opciones, lo que la hace mas útil de cara a mis objetivos profesionales.

En lugar de guardar los datos en tablas como se hace en las base de datos relacionales, MongoDB guarda estructuras de datos en documentos parecidos a JSON con un esquema dinámico (MongoDB utiliza una especificación llamada BSON), haciendo que la integración de los datos en ciertas aplicaciones sea más fácil y rápida.

Para instalar MongoDB solo es necesario ir a su web Descargar MongoDB y seguir estos pasos:

  1. Instalar
  2. Crear una carpeta c:\data\db (es la ruta por defecto, buceando en la documentación se puede modificar)
  3. Ejecutar el servicio “mongod.exe”, en mi caso la ruta es la siguiente: C:\Program Files\MongoDB\Server\3.2\bin  (sin la carpeta donde guardar la base de datos el servicio no arrancará)

Para facilitar un poco las cosas podemos descargarnos una aplicación GUI para gestionar/ver las bases de datos, en mi caso he optado por MongoBooster el cual tiene una version free no-commercial.

Node.js, Express y Jade

Para sacarle todo el jugo a MongoDB había que elegir una plataforma donde empezar el camino y que mejor que hacer un 2×1, aprendiendo ademas de Mongo, otras tecnologías que ya son una realidad en el mundo del desarrollo web. ¿Porque elegir Node, Express y Jade?…. por comodidad, ya que existen plantillas prediseñadas para Visual Studio, así de simple.

Después de instalar Node.js para Windows  toca instalar Node para Visual Studio , que nos permite elegir nuevas plantillas al iniciar un nuevo proyecto, todas basadas en Node.js, Express (framework de Node), a la que se suma Jade (framework de plantillas HTML que funciona con Express). Node para Visual Studio requiere Visual Studio 2015 (puede ser la versión Community que es gratuita)

Concretamente mi primer “proyecto” de pruebas tiene estos 3 elementos, os dejo un pantallazo para que veais la ruta para seleccionar estas plantillas:

node visual studio

Una vez abierto el nuevo proyecto podemos ver la estructura de carpetas.

express

Para iniciar nuestras pruebas lo haremos insertando registros en Mongo y mostrándolos a través de una de las paginas de la web resultante. El modelo Node/Express es MVC, por lo que el código se divide en varios archivos para que todo funcione correctamente y sea mantenible.

Antes de empezar con el código necesitaremos instalar el modulo Mongoose a través de npm. Mongoose es un módulo adicional que podemos encontrarlo en el repositorio de npm y que nos permite realizar la conexión entre Node.js y MongoDB de una manera mas sencilla. En Visual Studio tenemos una manera sencilla de instalar cualquier modulo, haciendo clic en la carpeta npm del proyecto y seleccionando “Install New npm Packages”….saldra una pantalla donde buscar el modulo y ejecutar la instalación de manera automática. Sino siempre se puede usar la consola npm con esta orden: npm install mongoose

Empecemos con el código

Nuestro objetivo es guardar y mostrar datos de películas a través de la pagina “/movies” en nuestro proyecto.

En la carpeta /routes crearemos un js llamado movies.js en el que introduciremos el siguiente código, si os fijáis es bastante sencillo de leer:

  1. Definimos la conexión con MongoDB,
  2. Definimos un esquema de datos con el que vamos a trabajar
  3. Abrimos la conexión e instanciamos el “modelo” sobre el que vamos a interactuar contra los registros (colecciones), con la siguiente estructura (El primer argumento es el nombre en singular de la colección y el segundo el esquema). Mongoose buscara automáticamente  el plural del nombre del modelo….raro, mucho, pero es así.
  4. Una vez recojamos la petición desde el navegador buscamos registros.
  5. En el caso de que la tabla ya tenga algún registro insertamos uno nuevo y volvemos a buscar, cargando los resultados en una variable que usaremos en jade para mostrar el listado de películas.

Sobre el esquema y modelo tenéis mas información en la documentación de Mongoose 

var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');

//1
mongoose.connect("mongodb://localhost/local");
var db = mongoose.connection;

//2
var movieSchema = mongoose.Schema({
 name: String,
 released: Boolean,
 watched: Boolean
});

//3
var MovieModel = mongoose.model('movie', movieSchema);
db.on('error', console.error.bind(console, "connection error"));
db.once('open', function () {
 console.log("moviesDb is open...");

});


router.get('/', function (req, res) { 
 //4

 MovieModel.find().exec(function (error, results) {
 if (results.length === 0) {

 } else {
 //5
 MovieModel.create({ name: "Pixels", released: true, watched: false });
 console.log("Movie created...");
 }
 });
 MovieModel.find().exec(function (error, results) {
 if (results.length != 0) {
 res.render('movies', { movies: results }); 
 } 
 });
 
 
});


Con esto tenemos terminada la parte de datos, ahora crearemos la vista movies.jade en la carpeta /views en la que introduciremos el siguiente código:

extends layout

block content
 h1 Movies
 a(href="/addmovie") Add Movie
 ul
    each movie, i in movies
       li 
          a(href="/movie/#{movie.name}") #{movie.name}

Para más información sobre la sintaxis de Jade tenéis este enlace. Básicamente, como podéis ver, definimos objetos HTML pero de una manera mucho mas sencilla, incluyendo ademas funciones y operadores de tratamiento de datos.

  1. En el ejemplo extendemos la plantilla principal “layout” que contiene el codigo común.
  2. Abrimos un bloque “content”
  3. Definimos un h1 con el texto “Movies”
  4. Definimos un enlace a /addmovie con el texto “Add Movie”
  5. Abrimos un objeto ul
  6. Recorremos el objeto movies que traemos desde movies.js y por cada registro abrimos un <li> con el enlace al nombre de la pelicula.

En principio con este código ya tenemos la parte de la vista de datos, ahora tenemos que configurar el archivo de la aplicación app.js para que las llamadas a la url /movies se gestionen de manera correcta, añadiendo estas lineas

var routes = require('./routes/index');
var movies = require('./routes/movies');

var app = express();
.... 
....
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', routes);
app.use('/movies', movies);

Con estas modificaciones ya deberíamos de poder lanzar el debug contra Google Chrome para probar nuestro código y ver como funciona. En principio solo con este codigo hemos probado 2 operaciones importantes contra MongoDB, búsqueda e inserción de registros.

En próximos artúculos seguiremos actualizando el proyecto con mas operaciones emulando la actividad normal de una web.

¿Que te ha parecido el post? Deja tus comentarios.

Mejoras de VBA en Office 2016

VBA 2016
Estándar

 

Office 2016 para Windows

Las nuevas características del modelo de objetos de VBA

Varias aplicaciones de escritorio de Office tienen nuevas características que se exponen en el modelo de objetos de VBA. Éstos son algunos de los aspectos más destacados:

  • Excel tiene un nuevo conjunto de datos de importación que se basan en la tecnología Power Query y que le permiten a los usuarios consultar la información en archivos, bases de datos, sitios Azure, y otras fuentes, para combinar consultas. Para apoyar esta función, Excel expone las nuevas consultas y objetos WorkbookQuery y sus propiedades y métodos asociados. Excel expone varios métodos nuevos en el objeto WorksheetFunction para permitir la predicción de funciones estadísticas. Por último, hay una serie de nuevos objetos relacionados con el vigente modelo de objetos, tales como los ModelFormatBoolean y ModelFormatCurrency, y muchas propiedades nuevas en cada uno de estos nuevos objetos.
  • Outloook ha añadido un nuevo objeto PreviewPane y una nueva propiedad WordEditor de ese objeto, que permiten el acceso al cuerpo del mensaje que está cargado en el panel de vista previa. Esta propiedad tiene la intención de dejar que Windows-Eyes y otros lectores de pantalla tengan acceso al cuerpo de un mensaje en el panel de vista previa.
  • Project añade nuevos objetos Engagement y EngagementComment, métodos asociados y propiedades para permitir el acceso mediante programación a los compromisos programados en un proyecto.
  • Visio ha añadido nueva OM para permitir la gestión de los derechos (IRM) de los documentos de Visio.

 

Office 2016 para Mac

Desde el lanzamiento de Office 2016 para Mac en julio, los usuarios de Mac OS X de todo el mundo han sido capaces de tomar ventaja de las nuevas características y mejoras esperadas desde el lanzamiento de 2011. Al mismo tiempo, algunos de los usuarios también han enviado comentarios solicitando nuevas mejoras en el soporte de VBA, particularmente sobre VBA Add-Ins.

En respuesta a esta información, vemos como se mejora aún más el soporte a Office en Mac sobre VBA Add-Ins . En concreto, se añade la personalización de la cinta de Office a través de XML de la cinta, y la realización de otras mejoras a Word, Excel y PowerPoint para Mac para que coincida con sus versiones de escritorio de Windows.

Personalización de Ribbons con XML

Con la última actualización  de Office en Mac, podrás personalizar al máximo el ribbons a través de Word, Excel y PowerPoint para Mac usando XML.

Así es como ribbons de Word en Mac aparece con una pestaña personalizada . la personalización de la cinta de la cinta a través de XML

Si ha personalizado el ribbons de Office para Windows, encontrará la experiencia en Mac muy similares. Sin embargo, hay algunas diferencias importantes, como se describen en la siguiente tabla.

La comparación de funcionalidad de personalización de la cinta de Office 2016 para Mac y Windows

Siga los pasos a continuación para activar o desactivar en Word, Excel y PowerPoint usando el terminal de Mac.

Para activar ribbons XML:

  1. Abrir terminal.
  2. Escriba este comando:
    “defaults write com.microsoft.office EnableRibbonXmlDeveloperMode -bool YES”
  3. Reiniciar la aplicación.

Para desactivar ribbons XML:

  1. Abrir terminal.
  2. Escriba este comando:
    “defaults write com.microsoft.office EnableRibbonXmlDeveloperMode -bool NO”
  3. Reiniciar la aplicación.

A principios de 2016, la personalización de ribbons XML será habilitado de forma predeterminada para todos los clientes.

Preguntas frecuentes

¿Cómo puedo editar Ribbon XML ?

Puede editar ribbons XML utilizando herramienta Editor de la interfaz de usuario personalizada , que sigue estando disponible sólo en Windows.

¿Estos cambios pueden ser instalados como parte del proceso de actualización automática?

Sí. Estos cambios serán instalados a todos los clientes que utilizan Microsoft Auto Updater.

¿Es la estructura del archivo XML la misma que la de Office para Windows?

Sí, Office 2016 para Mac lee las personalizaciones de customUI.xml y CustomUI14.xml.

¿El ribbon XML de Office 2016 para Mac cargara el XML de ambos archivos, customUI.xml y CustomUI14.xml?

Sí, y al igual que el comportamiento en Office para Windows, CustomUI14.xml se dará preferencia sobre customUI.xml.

¿El ribbon XML de Office 2016 para Mac aceptara archivos PNG que se cargan en la interfaz de usuario personalizada del documento como imágenes de control?

Sí.

Editor de Visual Basic

 

Para continuar las mejoras en Visual Basic, en Office 2016 para Mac, hemos añadido las siguientes características para el Editor de Visual Basic:

  • Posibilidad de añadir módulos dentro del Project ViewerPosibilidad de añadir módulos dentro del Project Viewer
  • Posibilidad de añadir referencias de biblioteca utilizando un cuadro de diálogoPosibilidad de añadir referencias de biblioteca utilizando un cuadro de diálogo
  • Capacidad para utilizar las teclas de acceso directo para la depuración en Editor de Visual Basic, como Comando + Shift + I para el Paso a paso ,Comando + Shift + O para Step Over .

Nuevos Comandos

Se han añadido dos nuevos comandos al modelo de objetos de Visual Basic para Mac:GrantAccessToMultipleFiles y AppleScriptTask .

También se agrega un nuevo condicional, “MAC_OFFICE_VERSION”. (Ver Nuevos comandos de documentación más adelante en este artículo.)

Dado que Office 2016 para Mac es sandboxed, los usuarios son preguntados para permitir el acceso cada vez que se haga una solicitud de acceso a los archivos . GrantAccessToMultipleFiles es un comando que toma una matriz de punteros de archivos y ayuda a minimizar el número de estas indicaciones.

El sandboxing también rompe el comando existente MacScript que permite el uso de AppleScript en línea en Visual Basic. Aquí es donde AppleScriptTask puede ayudar. Los usuarios pueden almacenar un archivo de AppleScript en un lugar especificado en el disco y utilizar AppleScriptTask dentro de VB para invocarlo. La ubicación de estas secuencias de comandos se especifica por el sistema operativo y no puede ser alterado.

El condicional MAC_OFFICE_VERSION deja a las macros determinar qué versión de Office para Mac está ejecutando el usuario. Esto es muy útil en los casos en que se dispone de ciertos comandos (como los dos anteriores) sólo en una determinada versión, e invocando ellos en otra versión pueden dar lugar a errores.

Documentación nuevos comandos

AppleScriptTask

El comando AppleScriptTask ejecuta una secuencia de comandos AppleScript. Esto es similar al comando MacScript excepto que se ejecuta un archivo de AppleScript situado fuera de la aplicación de espacio aislado.

Por ejemplo:


Dim myScriptResult as String
myScriptResult = AppleScriptTask ("MyAppleScriptFile.applescript", "myapplescripthandler", "my parameter string") 

Dónde:

  • El archivo “MyAppleScriptFile.applescript” debe estar en ~ / Library / Application Scripts / [Identificación del lote] /. El applescript extensión no es obligatorio; .scpt también puede ser utilizado.
  • “Myapplescripthandler” es el nombre de un controlador de secuencia de comandos en el archivo “MyAppleScriptFile.applescript”
  • “Mi cadena de parámetros” es el único parámetro de entrada a la “myapplescripthandler” script handler
  • El AppleScript correspondiente para Excel estaría en un archivo llamado “MyAppleScriptFile.applescript” que se encuentra en Scripts ~ / Library / Application Support / com.microsoft.Excel /.

Nota Los identificadores de paquete para Mac Word, Excel y PowerPoint son:

  • com.microsoft.Word
  • com.microsoft.Excel
  • com.microsoft.Powerpoint

El siguiente es un ejemplo de un controlador.


on myapplescripthandler(paramString)

#do something with paramString 
return "You told me " & paramString 


end myapplescripthandler 

GrantAccessToMultipleFiles

De forma distinta a las macros de VB en Office para Mac 2011, las macros de VB en Office 2016 para Mac no tienen acceso a los archivos externos de manera predeterminada. Office 2016 para aplicaciones de Mac esta en modo sanbox y por lo tanto carecen de los permisos necesarios para acceder a archivos externos.

Los comandos del archivo de macro existentes se cambian al solicitar al usuario el acceso a archivos si la aplicación no tiene ya acceso a ellos. Esto significa que las macros que tienen acceso a archivos externos no pueden funcionar en modo desatendido; Van a necesitar la interacción del usuario para aprobar el acceso a archivos la primera vez que se hace referencia a cada archivo. Se pueden utilizar los GrantAccessToMultipleFiles comando para minimizar el número de mensajes y hacer que la experiencia sea mejor (véase más adelante).

GrantAccessToMultipleFiles

Este comando le permite introducir una serie de rutas de archivos y solicita al usuario permiso para acceder a ellos.


Boolean  GrantAccessToMultipleFiles(fileArray) 

Parameters 
fileArray  An array of POSIX file paths.

Return values
True   The user grants permission to the files. 
False  The user denies permission to the files. 

Nota Una vez que se otorgan los permisos, están almacenados con la aplicación y el usuario no tiene que dar permiso al archivo particular, nunca más.

Ejemplo:

Sub requestFileAccess()  
  
'Declare Variables  
    Dim fileAccessGranted As Boolean  
    Dim filePermissionCandidates 
  
 'Create an array with file paths for which permissions are needed  
    filePermissionCandidates = Array("/Users//Desktop/test1.txt", "/Users//Desktop/test2.txt") 
  
'Request access from user  
    fileAccessGranted = GrantAccessToMultipleFiles(filePermissionCandidates) 
'returns true if access granted, otherwise, false 
End Sub

MAC_OFFICE_VERSION

En Office 2016 para Mac, este nuevo condicional testea qué versión VB el usuario está ejecutando. El siguiente ejemplo muestra cómo usarlo en el código.

Sub VersionConditionals()

#If MAC_OFFICE_VERSION >= 15 Then
    Debug.Print "We are running on Mac 15+"
#Else
    Debug.Print "We are not running on Mac 15+"
#End If
#If Mac Then
    Debug.Print "We are running on a Mac"
#Else
    Debug.Print "We are not running on a Mac"
#End If
End Sub

Nota Los “#If Mac” se mantiene sin cambios condicionales de Office 2011 para Mac.

Novedades en Access 2016

Access 2016
Estándar

Tell me en Access 2016

Ahora los usuarios pueden crear formularios, consultas, informes y tablas fácilmente con la ayuda de la función TellMe integrado en la barra de búsqueda de aplicaciones. Puesto que esta función es el reemplazo moderno del antiguo asistente “Clippy”, se puede conseguir fácilmente la ayuda que necesita haciendo clic o pulsando el signo de interrogación y escribir su consulta en el cuadro de búsqueda en la esquina superior derecha de la aplicación.

Plantillas modernizadas en Access 2016

Acceso 2016 ha modernizado y simplificado las plantillas disponibles. Esto significa que ahora es más fácil para crear bases de datos y convertirlas en impresionantes aplicaciones personalizadas, sin necesidad de conocimientos en programación. Se puede acceder fácilmente a la página de plantillas y elegir el modelo adecuado con el que se desea trabajar desde la pantalla de inicio.

Tenga en cuenta que si ya se encuentra dentro de la aplicación y desea abrir una nueva plantilla, haga clic en la ficha Archivo en la esquina superior izquierda de la aplicación.

Temas en Access 2016

Si no está satisfecho con el color de la cinta en la parte superior de la aplicación Access, puede optar por cambiar a fondos gráficos blancos al igual que en la version 2013. Puede hacer clic en Archivo > Opciones > General y elegir el estilo que se adapte a sus necesidades.

Exportación de datos de Access 2016

Ahora tiene la posibilidad de exportar sin esfuerzo todos los datos a Microsoft Excel 2016. Esta característica es especialmente útil si usted tiene una gran cantidad de datos con enlaces desde varias fuentes diferentes. Excel creará una lista de los enlaces de datos y ordenara por tipo para usted para que bases de datos muy grandes sean mucho más fácil de manejar. Para acceder a la función de exportación, haga clic en la ficha Datos externos y, a continuación, haga clicen el botón Administrador de tablas vinculadas. Aparecerá una ventana emergente; seleccionar todos los enlaces correspondientes y haga clic en el botón Exportar a Excel a la derecha.

Tan pronto como SharePoint 2016 este publicado, tendrá la capacidad de exportar muchas de las características de Access a SharePoint 2016.

Formularios mas grandes

Ahora en Access 2016 las barras laterales y las ventanas emergentes pueden utilizar la relación de tamaño de la aplicación en su beneficio. Se puede ver más listas de tablas y nombres de consulta en la base de datos sin mucho movimiento en sentido vertical o en la navegación de pestañas.

Feedback y cambios

Dado que el nuevo paquete Office es colaborativo “en vivo” entre el conjunto de aplicaciones, la retroalimentación es importante y afecta el desarrollo de las características que se añadirán a la suite de Office en forma de cambios. Si desea ver mejoras en características, haga clic en la cara sonriente en la esquina superior derecha y explicar en detalle lo que le gustaría ver cambiado.

Pros y contras de Access como base de datos

statistics-access-2010 (1)
Estándar

Siempre se habla de la base de datos Access como la hermana pobre de SQL Server, y aunque, para entornos empresariales muy fuertes si recomiendo otro tipo de motor de SQL, en Pymes de menos tamaño o autonomos el uso de Access puede ser recomendable para empezar a gestionar la informacion del negocio a través de una base de datos relacional. Os cuento algunos pros y contras de Access.

Localización de los datos

En primer lugar, todos los datos estarian dentro de un solo archivo, que se mantiene por el propio Access. Esto permite una solución de copia de seguridad simple. También permitiría cargar o descargar las bases de datos de Access sobre la marcha y por ejemplo, combinar dos bases de datos en una sola.

Desarrollo en el propio IDE de Access (VBA)

Access es más que una base de datos. También cuenta con un entorno de programación completa que es fácil de aprender para los no desarrolladores (VBA). Estos programas también serían parte de la base de datos de Access y por lo tanto podría ser utilizado por un usuario local, mientras que si se usa en entorno web, la aplicación web también tiene acceso a los mismos datos.

Access es a menudo parte de proyectos heredados. Podría haber algo más que datos dentro del archivo de Access. También es posible que otras aplicaciones utilicen la misma base de datos para cualquier propósito. Tiene un rendimiento muy bueno, si sabes lo que estás haciendo.

Multiusuario limitado

El mayor inconveniente sería un entorno multi-hilo. Y el desarrollo web, básicamente, es un entorno de múltiples subprocesos. Hay un gran riesgo de bloquear registros ya que si un usuario está actualizando los datos , otros usuarios no pueden acceder a este. En un entorno multiusuario, también hay un mayor riesgo de corrupción de datos. Pero dado que las bases de datos Access tienden a ser razonablemente pequeñas y compactas, no es un gran problema para hacer copias de seguridad periódicas para evitar este tipo de problemas.

Precio

Access en sí mismo es gratuito. Sólo se paga por Access al comprar Office.

Mover la aplicación

Aún más interesante, si el sistema ya tiene la configuración ADO apropiada / o controladores ODBC instalados, y son muy comunes, a continuación, se puede implementar una aplicación que utiliza Acces simplemente copiando el ejecutable a una nueva ubicación.La aplicación puede crear una nueva base de datos sobre la marcha, llenarlo con los datos por defecto y ya está! Es muy fácil de usar, en comparación con otras alternativas.

Bases de Datos empresariales

Usted podría considerar trabajar con SQL Server o MySQL como alternativas, pero requieren una configuración adecuada y deberían estar alojadas en algún servidor, aunque SQL Server se puede utilizar de una manera similar a Access en la version Express. Si piensa un cambio de base de datos, sugiero un cambio a SQL Server, ya que es totalmente compatible con Access.

Trabajo en web

Puede mover el archivo Access a una ubicación central (equipo o servidor), construir una interfaz web (tal vez en la intranet de la empresa) en ASP.NET utilizando un proveedor de datos específico para Access. La conexión con la base de datos sería esencialmente conexión de un usuario Si usted está pensando una solución empresarial tendrá que desarrollar la aplicación de todos modos.

Si el uso incluye cientos de usuarios, es muy probable que se encuentre con una serie de problemas con Access, pero al menos tiene la mitad del problema abordado y sólo necesita cambiar el código del proveedor de datos en ASP.NET para adaptarse a una solucion empresarial como SQL Server.
 
 
Si estas interesado en mantener tus aplicaciones Access o piensas en una migración a SQL Server mira nuestros servicios profesionales desde Web4x4.es
david.moral@web4x4.es – 628 81 89 89
 
 

Como elegir un servidor/hosting para un negocio online

shellshock-bash-bug-affects-apache-web-server-software
Estándar

Llevo desarrollando aplicaciones y páginas web cerca de 10 años, primero como Analista-Programador, y luego siendo IT Manager en algunas empresas, actualmente ocupo esa posición en el ecommerce Portobellostreet.es, una de las tiendas online de muebles mas valoradas en España.

En el puesto de CTO o IT Manager una de las decisiones que debes de tomar y que resultan mas críticas para el negocio es el tipo de hosting en el que vas a desarrollar y poner en producción tu aplicacion y base de datos. Como primera aclaración comentar que un negocio online no tiene que ser un ecommerce, puede ser un buscador tipo Idealista, una app móvil como Parkfy o un servicio de consulta como el de Sepín Editorial Jurídica (del que forme parte hace algunos años).

Mis criterios para contratar un servidor siempre han sido estos:

  • flexibilidad de Sistema Operativo: yo trabajo casi todos los proyectos en entornos Microsoft y muchos ISP directamente solo trabajan con Linux
  • Control Remoto: Al contrario que en un simple hosting, necesito tener acceso a todas las funcionalidades del servidor, es por ello que el control remoto (ya sea para Windows o Linux) es imprescindible.
  • Caracteristicas vs Precio: Espacio en disco, RAM, Plesk, Coste de transferencia, etc.
  • Escalabilidad: Aquí esta una de las diferencias fundamentales que separan los distintos tipos de servidor.
  • Confianza en el proveedor: Cuanto mas se trabaja en este ámbito mas se conocen las empresas que prestan un buen servicio de atención al cliente y las que no.

Ahora explicare los tipos de servidor que conozco en base a la escalabilidad (se que existirán mas pero me ciño a mi propia experiencia, los comentarios están abiertos para añadir información extra)

Hosting: Un hosting no es mas que un espacio de almacenamiento web en el cual el precio varia según el espacio contratado, el tamaño de base de datos y los extras (marketing online, email, etc.). Este tipo de servicio es el más básico y personalmente solo lo contrataría si fuese una empresa que solo necesita una web corporativa y poco mas. Salvo excepciones las empresas que lo ofrecen, no disponen de la posibilidad de cambiar automáticamente las características, en caso de necesitar ampliar alguna de las especificaciones contratadas, normalmente porque ese hosting es uno mas de las decenas de compartimentos que ocupan en un servidor mas grande. Esto hace que no sea recomendable para una aplicación que pueda ir creciendo en numero de usuarios o requerimientos técnicos. La gestión se realiza desde un panel web dentro del sistema del proveedor del servicio y no se tiene acceso a la gestión del propio servidor.

VPS (del inglés virtual private server): Esto es el siguiente nivel al hosting, solo que en este caso ya tenemos acceso a un sistema operativo completo, no solo a un panel de control. Al contratarlo, al igual que el hosting, tenemos que decidir que tamaño de disco, RAM, SO, etc…queremos tener en el servidor, los proveedores suelen ofrecer “paquetes” ya configurados a un precio especifico. Este es el servidor que recomendaria a alguien que,por ejemplo, prestase servicios de desarrollo web, ya que permite configurar cuentas de usuario de hosting para pequeñas aplicaciones o ecommerce a un precio ajustado.

Además al tener acceso al propio SO, si alguna de esas aplicaciones necesita escalarse, se puede migrar de una manera mas sencilla a un servidor mas grande.

Como contrapartida tiene el mismo problema que el hosting, no es escalable, ni se pueden modificar las especificaciones contratadas, ademas de que la CPU y la RAM son compartidas con otras tantas VPS en un servidor mas grande con sistema de virtualizacion. Si necesitas ampliar, tu mismo tienes que hacer la migración.

Servidor dedicado: Como su propio nombre indica es una maquina fisica que tienes en exclusiva para tus aplicaciones y webs, con su SO, disco, RAM, etc en exclusividad para ti. Las ventajas de ese tipo de servidor son sobre todo la disponibilidad de los recursos del servidor, ya que no se comparten con ningún otro cliente de la empresa de hosting. Como desventaja tenemos que son escalables “a medias”, ya que se pueden ampliar algunos recursos (como RAM y disco duro) pero a un precio bastante prohibitivo en ocasiones.

Cloud: Los servidores cloud pueden ofrecer varios servicios, siendo el mas comunmente usado el de servidor web, aunque tambien los hay solo de almacenamiento o base de datos. Un servidor cloud es lo mismo que un VPS pero usando una tecnologia que permite hacerlo completamente escalable (CPU, RAM, disco, load balancing, VPN´s, etc). En los 2 últimos años los precios de la tecnología cloud se han estabilizado bastante, siendo bastante razonables para empresas que buscan flexibilidad y escalabilidad en su servicios web, aunque tienen el handicap de que al ser virtualizado puede sufrir los mismos problemas que un VPS, al compartir los recursos físicos de un servidor entre varios servidores virtuales.

Como IT Manager de Portobellostreet.es tome la decision hace 2 años de pasar todas las aplicaciones y servicios web públicos a Cloud, ya que necesitaba cierta flexibilidad debido al aumento de visitas y carga en la base de datos. En la oficina central el ERP tiene un servidor dedicado ya que tenemos separados los datos de la web y del ERP, de tal forma que aseguramos el funcionamiento del ERP aunque se produzca una caída de la web y viceversa. Para empresas con un negocio online potente que necesite de servicios web siempre recomendaría un servidor cloud, ya que la flexibilidad compensa el ratio de fallos que puedan ocurrir en la plataforma, ademas de permitir ciertas técnicas con el load balancing (varios servidores respondiendo a peticiones web o de base de datos)