Respuestas a Dudas surgidas en el Developer Day 07

Hola a todos, aquí iremos poniendo las preguntas y respuestas que surgieron en el Dev Day 07. Iré añadiéndolas poco a poco, según tengamos las respuestas. Mil gracias a los ponentes por su colaboración en resolver las dudas 😉

Por favor, para preguntas nuevas utilizad los foros de MSDN  http://forums.microsoft.com/msdn-es/default.aspx?siteid=11

La semana que viene modernizaremos un poco los foros para que haya lugares para más tecnologías 😉   De modo que esperad por favor a la semana que viene para dar de alta las preguntas, porque puede que haya un sitio más adecuado que los que hay ahora para postear. Cuando la respuesta conlleva opinión pongo el autor para que tengáis la referencia 

Programación en entornos de servidor

– Para uso asíncrono. Mientras se espera el regreso asíncrono, se puede navegar por otras páginas?
Eso sería implementar asincronia en el lado del cliente, lo que proponíamos en esta sesión era hacerlo en el servidor para no dejar los hilos bloqueados, pero el cliente sí quedaba bloqueado. Para hacer lo que preguntas sería necesario utilizar AJAX.

– Cómo se llama la herramienta con la que simuláis la concurrencia de usuarios en una aplicación web?
Viene con la edición Test de Visual Studio: “Visual Studio Team Test edition”.

– La limitación de 25 threads por procesadores web ¿afecta también a aplicaciones basadas exclusivamente en webservices?
Si, aunque puede modificarse en la cláusula processModel del machine.config, no está recomendado.

– Cómo se pueden introducir datos en formularios web para las pruebas de carga? Pueden obtenerse de fuentes de datos externas?
Si, Visual Studio Team Tester soporta coger colecciones de datos desde ficheros o BD e insertarlos en los campos de un formulario web.

– Si en una prueba de carga se tocan registros de BBDD, ¿cómo se eliminan estos cambios?
Hay que controlar qué se modifica para deshacerlo después, vamos a mano.

Se puede estresar un servidor externo?
Si, incluso no Microsoft, con que sea HTML y Javascript basta

Team Foundation y metodologías

– ¿Qué clientes de TFS hay y posibilidades de integración disponibles para IDEs de desarrollo java? (intellij, eclipse)

 Existe el cliente de TeamPrise para eclipse, que esta totalmente integrado en el mundo del desarrollo java. Así de memoria es el único existente, creo recordar para este entorno de desarrollo.  (Miguel Jimenez)

AJAX

– El panel, si se mueve en la web, ¿se mantiene esa nueva posición en otra sesión de otro usuario?

La funcionalidad está implementada con DravOverlayExtender de los últimos Futures de Ajax. Este control usa el servicio de perfiles de ASP.NET 2.0 para almacenar la posición del panel. El perfil (profile) es por usuario, por lo que la posición del panel es distinta para cada usuario y se guarda de forma independiente.

– ¿Existe algún modo de implementar el control upload en un update panel?

Un control upload sirve para subir ficheros al servidor. Por qué querer meterlo en un UpdatePanel? Puedes ampliar la pregunta en los foros? 🙂

– ¿Qué impacto tiene AJAX en los motores de búsqueda?

No entendemos la pregunta, la puedes ampliar en los foros? 🙂

– Y si usamos master pages con controles, ¿Cómo configuro AJAX?

Una opción es poner el ScriptManager en la master page. Más info: http://ajax.asp.net/docs/tutorials/UsingUpdatePanelMasterPages.aspx En los controles que requieran AJAX puedes poner un ScriptManagerProxy, de modo que si hay un scriptManager en la master, perfecto, y si no lo hay se añadirá porque el control requiere

 

LINQ

1. No entiendo porqué la select está al final en LINQ ¿porqué no respeta la sintaxis SQL?

Piensa en la sentencia SELECT de SQL, por ejemplo:

SELECT Nombre, Apellidos FROM Amigos WHERE Sexo = ‘M’ AND EstadoCivil = ‘S’ AND Edad <= 25

Después de teclear SELECT, el entorno de desarrollo no podrá darte ayuda de ningún tipo con relación a los campos que quieres seleccionar, porque aún no sabe con qué tabla(s) vas a trabajar (lo cual se indica en la cláusula FROM).

Con la sintaxis que propone LINQ:

from f in db.Amigos where f.Sexo == ‘M’ and f.EstadoCivil = ‘S’ and f.Edad <= 25 select new { f.Nombre, f.Apellidos };

se resuelve ese problema.

Esta decisión ha sido motivo de amplias discusiones dentro de los equipos de desarrollo de MS. De hecho, en la Presentación Preliminar de Mayo de 2006, en VB.NET el Select se ponía delante. Ahora ambos lenguajes utilizan el Select al final.

2. ¿Qué es eso del var en C# 3.0? ¿Acaso el lenguaje va a dejar de ser estáticamente tipado?

La sentencia var en C# 3.0 hará que el compilador infiera o deduzca el tipo de la variable en función del tipo de la expresión que se coloque del lado derecho de la asignación (var solo se podrá utilizar junto con una expresión de inicialización). Por ejemplo, en:

var s = “Hola”;

El compilador determinará que el tipo de la variable s es string. No es object, ni Variant como en VB6, ni una variable “amorfa” como en Javascript, ni nada por el estilo. La aparición de var no implica que C# deje de ser un lenguaje con fuerte control de tipos ni mucho menos. Simplemente el lenguaje nos facilita la vida, no obligándonos a indicar el tipo de la variable y encargándose él de deducirlo. Por supuesto, no se debe abusar de esta característica, porque puede llevar a que nuestro código se haga menos legible.

3. Si no sabes el tipo de algo, ¿cómo sabes con qué propiedades y métodos lo manejas?

Esta pregunta tiene relación con la anterior. Dado que C# es un lenguaje estáticamente tipado, el compilador (y el entorno, que se apoya en él) siempre sabe el tipo de cualquier variable o expresión, ya sea porque se lo decimos nosotros o porque él lo deduce (como ocurre cuando usamos var para declarar una variable). Suponiendo que hemos definido la variable ‘s’ de la pregunta anterior, cuando tecleemos ‘s.’ dentro del editor nos aparecerá la lista de propiedades, métodos y eventos de la clase string. Y si se trata de una variable de un tipo anónimo (generado internamente por el compilador), la ayuda Intellisense nos dirá qué propiedades, métodos y eventos tenemos a nuestra disposición.

4. ¿Qué rendimiento presenta LINQ respecto a la consulta directa usando el DOM para XML o sentencias SQL para BBDD?

Aunque no he hecho pruebas de rendimiento específicas, pienso que el rendimiento de LINQ to XML (por ejemplo, en búsquedas XPath) debe ser muy cercano al que podemos obtener hoy con el DOM. En el caso de LINQ to SQL, la diferencia podría ser algo mayor. Yo y otros compañeros hemos detectado en ocasiones que las sentencias SQL generadas por LINQ to SQL (utiliza la propiedad Log del objeto de conexión para enviar las sentencias a la consola o un fichero y así poder examinarlas) son menos eficientes de lo que podría obtenerse escribiendo la sentencia “a mano”. Es lo que ocurre cada vez que dejamos de hacer algo manualmente y comenzamos a apoyarnos en una herramienta genérica. En defensa de LINQ to SQL hay que decir que:

a) Estamos trabajando aún con una versión pre-beta, que sin lugar a dudas mejorará mucho antes de la salida del producto final.

b) En cualquier caso, se seguirá investigando a ese respecto para futuras versionesJ.

c) El contexto de datos tiene una propiedad Connection que da acceso a la conexión ADO.NET subyacente, a la que podremos recurrir en caso de que necesitemos obtener un rendimiento superior al que nos dé LINQ to SQL.

Como en todo, es cuestión de sopesar las ventajas contra los inconvenientes de una tecnología, y ver si es conveniente o no utilizarla. Para mí personalmente las ventajas (mayor expresividad y claridad del lenguaje, verificación del código en tiempo de compilación (al no tener que escribir las sentencias SQL como cadenas dentro de la aplicación), ayuda Intellisense para las consultas integradas, mayor potencia en las API de actualización, etc.) superan a los inconvenientes en la mayoría de las situaciones en las que me encuentro habitualmente durante mi trabajo. (Octavio)

5. Ahora mismo tengo un AMD 3200+ con 1gb de RAM y vs05 corre a tirones ¿qué necesitaré para ORCAS?

Para que funcione la CTP de marzo, la página de descarga recomienda un Pentium III+ con 1 GB de memoria libre (lo que queda después de la carga del sistema operativo y los servicios). Mi experiencia personal me dice que 2 GB es lo óptimo. Los requisitos finales que se necesitará para ejecutar la versión definitiva de Orcas deberán ser algo menores.

En cualquier caso, no está de más repetir la recomendación de siempre: ¡no instalar esta CTP en un PC de trabajo! (Octavio)

6. ¿Hay LINQ to AS400?

La versión final de Orcas incorporará únicamente proveedores de LINQ to SQL para SQL Server 2000 y 2005. No obstante, ya hay otros fabricante trabajando muy cerca de Microsoft para producir los correspondientes proveedores (no tengo la menor idea de si IBM está entre ellos).

7. ¿Mejora Windows Mobile con Orcas?

Tendremos soporte para el nuevo CF y por otro lado Windows Mobile 6 incorporará múltiples ventajas con respecto a la versión actual, aunque los desarrolladores no seremos los más beneficiados. La principal ventaja será que .NET CF vendrá incorporado ya en ROM, como puede leerse en la entrevista al Product Manager de Windows Mobile 6, en la dotNetManía de este mes (www.dotnetmania.com)

Publicado por

Un comentario sobre “Respuestas a Dudas surgidas en el Developer Day 07”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *