Archive for programación

Datasets ¿Sí o no?

Los Datasets forman parte de ADO.NET. Una librería de acceso a datos que se usa en el framework. Desde la versión 2.0 del framework tomaron si cabe más protagonismo debido al nuevo enfoque. Se completaron con los TableAdapters, clases concebidas para trabajar en conjunto y que exponen una serie de consultas de casi cualquier tipo que pueden ser diseñadas de manera muy cómoda a través del Visual Studio.

Los puntos a favor son muchísimos, seguro que muchos fuera de mi conocimiento por falta de uso. Nos limitamos a utilizarlos a través de un Access o SQL Server pero van más allá. Queda ya para la historia su capacidad de integrar mediante un mismo modelo de programación el acceso a tantos orígenes de datos distintos, además de permitirnos trabajar en nuestra aplicación directamente y de manera desconectada con variables debidamente tipadas. Esencial también y punto estrella para mí, el haber ofrecido de manera transparente y casi desconocida para muchos programadores la parametrización de las consultas SQL evitando de esta manera infinidad de errores de Inyección SQL y comodidad extrema a la hora de pasar parámetros a la query (¿acaso alguien recuerda ya pasar una fecha al formato SQL correcto?).

Hago incapié en la seguridad y en la inyección SQL por la peligrosidad de este tipo de fallos de los que tan solo el programador se puede proteger (no hay política directa de seguridad que tu compañía de hosting te pueda ofrecer). Especialmente peligroso en motores potentes como SQL Server, Oracle, etc. que son capaces de ejecutar varios comandos en una misma sentencia simplemente separando por punto y coma. Un atacante hábil en una consulta mal parametrizada puede manipular la SQL completándola y añadiendo detrás la query más dañina que se le ocurra. No os costará nada encontrar muchísima literatura sobre el tema y algunos casos famosos.

Por desgracia, todas estas ventajas no son gratis o baratas desde el punto de vista de la eficiencia. Los Datasets son objetos complejos que no solo representan tablas si no que además representan relaciones entre tablas. Esto que no deja de ser ideal en muchos escenarios supone que al realizar operaciones sobre el DataSet es necesario comprobar que las restricciones de integridad referencial se cumplen, con el coste computacional asociado.

He visto en muchos proyectos además, la manía de arrastrar tantas tablas como se pueda. En muchas ocasiones no hace más que provocar una caida de rendimiento en varios aspectos. En primer lugar en tiempo de ejecución. Un DataSet mal dimensionado es más lento al cargarse y mucho más lento al operar sobre él. Además, en el trabajo del día a día del programador, manejar uno de estos a través del Visual Studio puede ser una odisea.

Desde un punto de vista transaccional y si no proponemos una estructura mejor cada operación con un TableAdapter inicializa una nueva conexión. Ello nos limita a la hora de utilizar transacciones, ya sea a nivel del motor de base de datos, o a un nivel superior utilizando clases como TransactionScope del framework. Sobra decir que cada vez cuesta más encontrar aplicaciones donde se pueda pasar sin entender una infinidad de operaciones de manera atómica y más en un entorno tan distribuido como el actual.

Para terminar, desde el punto de vista de la interoperabilidad. Probablemente te interese esta parte si te estás iniciando en WCF o tecnologías similares. El hecho de que un Dataset se serialice automáticamente como XML no quiere decir que todas las aplicaciones sean capaces de interpretarlo. De hecho, será difícil de ver si la aplicación consumidora del servicio no es .NET. El schema del DataSet es complicado de procesar y en la mayoría de los casos tremendamente pesado en comparación con serializar una clase formada por tipos básicos, definidos por el programador o con una serialización personalizada.

Comentarios

Cómo enviar correo SMTP autenticado con PHP

Despues de recibir varias dudas vuestras de como enviar un correo autenticado desde PHP, os hemos pegado un fragmento de codigo simple para realizar el envio. Como muy bien nos indica nuestro amigo Pablo Enjuto mas abajo, aqui teneis un enlace a las clases phpmailer.php y smtp.php que se importan en el codigo. 

http://sourceforge.net/project/showfiles.php?group_id=26031

Elegid la version que mas se adecue a vuestro Php y listo, es muy sencillo de utilizar y esperamos que os sea de mucha utilidad.

 

require(‘class.phpmailer.php’);
require(‘class.smtp.php’);

$nombre = $_POST["nombre"];
$telefono = $_POST["telefono"];

$mail = new PHPMailer();

$body = “Hola es una prueba”;
$body .=”ojalá funcione”;

$mail->IsSMTP(); 

/* Sustituye (ServidorDeCorreoSMTP)  por el host de tu servidor de correo SMTP*/
$mail->Host = “ServidorDeCorreoSMTP”;

/* Sustituye  ( CuentaDeEnvio )  por la cuenta desde la que deseas enviar por ejem. prueba@domitienda.com  */

$mail->From = “CuentaDeEnvio”;

$mail->FromName = “Domitienda”;

$mail->Subject = “prueba de envio”;

$mail->AltBody = “prueba”; 

$mail->MsgHTML($body);

/* Sustituye  (CuentaDestino )  por la cuenta a la que deseas enviar por ejem. admin@domitienda.com  */
$mail->AddAddress(“CuentaDestino”, “Domitienda”);

$mail->SMTPAuth = true;

/* Sustituye (CuentaDeEnvio )  por la misma cuenta que usaste en la parte superior en este caso  prueba@domitienda.com  y sustituye (ContraseñaDeEnvio)  por la contraseña que tenga dicha cuenta */

$mail->Username = “CuentaDeEnvio”;
$mail->Password = “ContraseñaDeEnvio”; 

if(!$mail->Send()) {
echo “Mailer Error: ” . $mail->ErrorInfo;
} else {
echo “Message sent!”;
}
 

Saludos.

Comments (4)

MSChart Controls instalado en domitienda.com

Recientemente hemos instalado en los servidores de domitienda las extensiones mschart del Service Pack 1 de ASP .NET 3.5

 

Estos controles te permiten crear gráficas dinámicamente de una forma sencilla  y que dan un resultado muy vistoso tal y como podeis ver en las imagenes de ejemplo:

mschart1

 

mschart2

 

Entre las distinas opciones de gráfica se incluyen las típicas de barras, rangos, lineas, tartas hasta otras más potentes como de Acumulación, Distribución o Splines en 3D!

Todas las gráficas son compatibles con AJAX y puedes ser declaradas de forma estática o dinámica enlazandolas con un DataSource.

Otro punto fuerte de este control es que el restultado que el motor de .Net genera es una imagen png o jpg por lo que el navegador lo reconocerá como una etiqueta < img> cacheandola y haciendo que se cargue mucho más rápido las proximas veces que se refresque la web.

Si quereis probarlo tan solo teneis que instalaros el Add-on para el Visual Studio 2008, descargaros los ejemplos y la documentación y empezar a programar!

Comentarios

Soporte para jQuery proximamente en VS2008

jQuery es una de las mejores librerias de Javascript que existen. Con tan solo unas pocas lineas de código puedes hacer verdaderas virguerías! 

Pues bien, hace poco leí una noticia donde anuncianban que una próxima revisión de Visual Studio 2008 vendría con jQuery instalado por defecto, Intellisense, soporte e integración para el Ajax Toolkit y compilación!!

 

 

Vamos, que ya no tendremos escusa para hacer cosas con Javascript porque “queda feo en el código”.

El hecho de que Microsoft empiece a dar soporte nativo a librerias externas me llena de alegría ya que hasta ahora solo se limitaban a copiar la funcionalidad de ciertos proyectos Open-Source y cambiarlo de nombre, ¿Qué significa este cambio en la política de Microsoft? ¿Qué será lo próximo que veremos en VS2008?

¡Estaremos muy atentos!

Para todo aquel que no sepa que es jQuery o quiera saber más os recomiendo que visiteis su sitio web que esta lleno de documentación y ejemplos.

Comentarios

Actualizando parcialmente nuestras páginas en ASP.Net

Ya hemos comentado anteriormente cómo publicar nuestras páginas ASP.Net en Domitienda a través del asistente que nos ofrece Visual Studio. Sin embargo, este proceso automatizado nos obliga a subir la web entera en cada ocasión en lugar de poder actualizar tan solo la parte que haya cambiado.

Antes de realizar este proceso, es necesario averiguar en que modo está compilada ya que existen dos modos en los Web Sites de Visual Studio 2005. Esto lo podemos averiguar en el menú Build > Publicar sitio web. Para poder cumplir nuestro objetivo y actualizar solo la parte que hemos cambiado de la página web deberá estar activada la opción “Utilizar nomenclatura fija y ensamblados de una sola página“. Si no teníamos esta opción activa será necesario volver a subir la web entera una vez mas.

Una vez realizado esto, procederemos a publicar nuestra web (Build > Publicar sitio web de nuevo) pero especificaremos una carpeta local en lugar de un FTP. De este modo la web entera se generará en la carpeta indicada de nuestro equipo. Hay varios tipos de archivos:

  • Páginas ASPX. Tendremos que subir manualmente a través de un cliente FTP como FileZilla tan solo aquellas que hayamos modificado.
  • Archivos DLL. Se encuentran dentro de la carpeta BIN y veremos que aunque con una nomenclatura algo extraña, tenemos uno por cada página. Subiremos solo aquellos que hayamos modificado. Si tenemos clases, datasets, o cualquier elemento con código externo a las páginas en nuestro proyecto y realizamos alguna modificación en ellos deberemos volver a subir el archivo App_Code.dll
  • Web.config y PreCompiledApp.config: Configuran aspectos de la página y tan solo será necesario volver a subirlos en caso  de realizar algún cambio en ellos.


Archivos generados en la publicación

Archivos generados en la publicación



Recordad que esto funcionará correctamente si tenemos la opción “Utilizar nomenclatura fija y ensamblados de una sola página” activa y evidentemente habiendo subido una primera vez la web entera con este modo activado. De este modo evitamos estar “machacando” la web en cada ocasión, con el consiguiente ahorro de tiempo y disminución de problemas.

Un saludo a todos!

Comments (2)

Propagar Title de la Master a todas las páginas en ASP .Net

Hoy un pequeño pero útil truco de programación.

Si usais páginas Master en vuestras aplicaciones web ASP .NET y quereis que todas las páginas tengan el mismo Title y, como yo, estais cansados de tener que escribir en cada pagina el título aqui teneis la solución.

 

En el código asp de la página Master añadimos al tag "head" el runat="server" para que podamos modificarlo desde el código fuente:

ASP:
  1.  <head runat="server">

Y, en el Load de la Página Master sobreescribimos el atributo Title para que se propague en todas las páginas que usen esa Master

ASP:
  1. protected void Page_Load(object sender, EventArgs e)
  2. {
  3. this.Page.Title = "domiblog. El blog de Domitienda";
  4. }

¡Espero que os sea tan útil como a mi!

Saludos desde el otro lado de la pantalla!

Comentarios

Disponible para descargar el Service Pack 1 de Visual Studio 2008 y Framework 3.5

Nuestro amigo el Guille nos cuenta en su web que ya están listos para su descarga el primer Service Pack para el Framework 3.5 de ASP .NET y Visual Studio 2008.

En esta dirección puedes ver un listado de los cambios de esta nueva versión. Básicamente se ha agregado compatibilidad con Sql Server 2008, algunos componentes como el Shape y DataRepeater y se han solucionado un porrón de problemas.

¡Y Recuerda! En domitienda.com ofrecemos hosting para ASP .NET 3.5 desde 4.95€ al mes

Comentarios

Como subir ficheros de gran tamaño en ASP .Net

Estos días hemos tenido un par de consultas sobre un problema al subir ficheros mediante el componente File Upload de Asp .Net.

Y es que el framework "capa" las conexiones http pesadas (como, por ejemplo, cuando intentas subir ficheros de más de 1 Mega) por lo que da un error estrepitoso de Timeout.

¿Que podemos hacer para solucionar esto?

¡Fácil! Primero modificamos nuestro web.config permitiendo conexiones Http más pesadas:

  • Añadir esto al tag <system.web>
XML:
  1. <httpruntime executionTimeout="1200"
  2. maxRequestLength="102400"
  3. useFullyQualifiedRedirectUrl="false"
  4. minFreeThreads="8"
  5. minLocalRequestFreeThreads="4"
  6. appRequestQueueLimit="100" />

Esto aumenta el tamaño máximo de paquetes Http así como el tiempo de espera a nivel de nuestra aplicación web.

Por otro lado, por mucho que modifiquemos nuestro web.config, si hay restricciones en el servidor no nos funcionará.

Para ello tenemos que crearos un Inventario Dedicado (pool de asp .net privado para el dominio) en el que aumentaremos también estas parámetros.
Para modificar esto último es necesario que tengas acceso directo al servidor por lo que lo tendremos que hacer nosotros manualmente.

Con esto bastaría... y recuerda, ¡tienes que darle permisos de escritura a la carpeta donde quieres subir!

Un saludo!!

Comentarios

Descargar Visual Studio 2008 Express en Español

Ya está disponible para descarga la versión en Español de Visual Studio Express 2008.

Desde esta dirección: http://www.microsoft.com/express/download/default.aspx podeis descargaros las versiones gratuitas (Express) de cada uno de los lenguajes de programación (c#,j#, c++...) independientemente o bien una ISO de 3GB con todo el Visual Studio 2008 completo.

Recordad, para bajaros la versión en español teneis que escoger el idioma en el desplegable ya que por defecto sale en inglés ;-)

En domitienda.com estamos trabajando duro para poder ofreceros cuanto antes soporte para el framework 3.5. Esperamos poder tenerlo funcionando para finales de este mes... de todos modos cuando este listo os avisaremos desde el blog asi que estad atentos!!

Comments (1)

Publicar Aplicaciones Web en Asp .net 2.0

Muchas son las dudas de los nuevos programadores web al respecto de que hacer con su aplicación una vez terminada, ¿copio los ficheros en algun sitio ftp? ¿me llevo el proyecto entero? ¿como lo hago?

Visual Studio nos brinda una estupenda opción para lanzar nuestra aplicación a Internet: "Publicar Sitio Web" .

Primero de todo necesitamos un sitio web donde poder alojar nuestro proyecto. Con el Páquete Básico de Domitienda.com nos valdría para empezar ya que soporta Asp .net y Bases de Datos Sql Server 2005.

Una vez tenemos nuestros sitio web creado y conocemos nuestra información de acceso ftp nos vamos al Visual Studio, cargamos nuestro proyecto y nos vamos a Build > Publicar Sitio Web

publicar1.png

Una vez hecho esto veremos una pantalla en la que nos solicitarán que introduzcamos la ruta donde queremos dejar nuestra web publicada. Por defecto nos aparece una ruta local que debemos cambiar por una ftp.

Para ello pulsamos el boton de "Examinar" que aparece a la derecha de la ruta y seguimos las instrucciones de la siguiente imagen:

publicar2.png

- Servidor: Ip / Nombre de tu servidor ftp. En domitienda.com el formato es ftp.[tu dominio.com]

- Directorio: Carpeta dentro del ftp donde quieres publicar tu sitio web. En domitienda.com la raiz web es la carpeta httpdocs

- Nombre de Usuario y Contraseña: Los que creaste desde el Panel de Control Plesk

Pulsamos "Aceptar" y vamos que la ruta ha cambiado para dar lugar a una ruta ftp hacia el servidor web.

Volvemos a pulsar "Aceptar", se nos compila la aplicación y comenzará el proceso de Publicación.

¿Que hace exactamente la publicación?

Al publicar una aplicación web el propio Visual Studio detecta las dependencias de librerias que has usado en tu aplicación web , las compila y las sube automáticamente a la carpeta bin de tu sitio web.

Además empaqueta todo el Server Side Code (los .cs /.vb) en una dll para evitar que nadie tenga acceso al código fuente de manera directa.

Este es sin duda el método más seguro de subir una aplicación web en un servidor web ya que el mismo se encarga de dejar todos los ficheros en su sitio, compilarlo y prepararlo para su ejecución.

Comments (17)

« Noticias Anteriores Página siguiente »

Add to Technorati Favorites