Crystal Reports for Visual Studio 2010 – Service Pack 3

 

Estamos de enhorabuena. Mi odiado y a la vez amado Crystal Reports lanzó un nuevo SP, el nº 3, el pasado mes.

Os paso una lista de las correcciones, así como el link desde el que os lo podéis instalar.

 

  • Unable to expand groups using the Plus sign in the group tree
  • Cannot SetFocus on Crystal Report windows Form Viewer
  • Attempt to redirect an iFrame via a hyperlink causes a new browser window to open
  • A boolean NOT is added at the beginning of a record selection formula when the report is loaded by the Crystal Reports .NET SDK
  • Parameter DefaultValue does not return a count from the Parameter collection
  • Custom hyperlinks do not work in CrystalReportViewer for Visual Studio .NET
  • ConvertNullFieldToDefault and ConvertOtherNullsToDefault do not exist in .NET ReportObject collection
  • Date (0,0,0) is removed from SQL statement when report is executed in Visual Studio 2008 or Visual Studio 2010 application
  • Adding a new group sort changed all sorts to be the same direction
  • Enhancement: DoubleClick event on Report Object does not return any values
  • Crystal Repors web viewer for .NET does not maintain text object’s Character Spacing
  • HTML export missing page footers
  • Unable to perform groups in MS Excel, after Crystal Reports is exported to MS Excel format
  • When selecting a value from the group tree in the .NET web form viewer the incorrect field is highlighted in the report
  • Clicking on a group name in a Crystal report within the ASP.NET Crystal Report Viewer does not open a new tab containing group specific data
  • Crystal Reports don’t print correctly when the Clamp Page Footer option is set
  • Error 1402 when installing Crystal Reports for Visual Studio 2010 runtime via the msi file
  • Error: Failed to export the report – when exporting to PDF file format
  • MS SQL Server 2005 and 2008 Synonyms do not show fields in Database Explorer
  • Cannot change formula text at runtime, application throws an exception when the report is previewed

 

http://scn.sap.com/docs/DOC-26441

Sonrisa

Anuncios

Lamentable comportamiento de un ¿técnico? de ONO en Castellón.

 

Sé que esta entrada no tiene nada que ver con mi blog, pero creo que debo ponerla.

Tras problemas de micro-cortes en internet y reinicios del router aleatorios, viene un técnico de ONO a mi casa. El técnico realmente trabaja para una subcontrata en C/República Argentina.

Enumero a continuación los puntos que me parecieron “sospechosos” para un técnico que me indica que tiene 10 años de experiencia (“dime de lo que presumes y te diré de lo que careces”).

1. El técnico con 10 años de experiencia se conecta a mi router mediante cable al puerto ethernet. Se autentica y tras ver que falla, me pregunta si he cambiado la clave. Le digo que por supuesto que he cambiado la clave de acceso para el usuario de configuración del router de la red interna. Este técnico me dice que “NO debería cambiarla, ya que los técnicos remotos no podrán conectarse”. Ante mi perplejidad, le explico que los técnicos remotos acceden “desde fuera de la red interna” y tienen su propia autenticación, independiente de la de la red interna, y que de hecho, ya se habían conectado en varias ocasiones.

Este técnico no parece conocer las diferencias entre acceder al router desde la red externa o interna.

2. El técnico con 10 años de experiencia me explica que como mi conexión a internet es 50/5Mb, debería configurar mi red inalámbrica a 54 Mbps, ya que es absurdo hacerlo a 300 Mbps.

Este técnico parece NO saber para qué sirve un router. A pesar de mis explicaciones (intento explicárselo sin éxito), no parece comprender que el router además de facilitarme el acceso a internet a 50/5 Mb, también enruta los paquetes de la red interna, y que si me baja la velocidad, toda la red interna se va a resentir. Para este técnico los router 802.11n, no tienen sentido, es más, desconoce la diferencia entre 802.11n y 802.11g. Para este técnico los puertos Gigabit del router también deben ser absurdos, ya que parece que todo depende de mi conexión a internet.

El técnico a pesar de mis indicaciones y decirle que todos mis equipos soportan 802.11n y que la configuración debe ser 300Mbps, lo cambia sin permiso y lo deja configurado a 145Mbps. ¡No quiero pensar lo que hubiera hecho este técnico si mi conexión a internet fuera de 6Mb y el router permitiera modificar este parámetro a dicha velocidad!.

Además, y a pesar de indicarle que los canales menos saturados en la finca son el 1 y el 13, me pone el 6, uno de los más saturados para la banda 2,4 GHz. Supongo que tampoco entiende de saturación de canales.

3. El técnico con 10 años de experiencia me indica que el reinicio del router se puede deber a que consumo mucho. Le explico que efectivamente mi consumo es alto debido a que tengo el servicio de Canal+ y accedo a contenidos de su canal Yomvi.

También le digo, que en los últimos 3 días no he accedido a este servicio, ya que por indicaciones de otro técnico, desconecté todos los dispositivos externos conectados a los puertos Ethernet del router, y los cortes se han realizado igualmente.

Posteriormente otro técnico del servicio de atención telefónica me indica que, a pesar de que mi consumo es alto, no tiene unos niveles tales, que puedan producir esta avería.

4. Al técnico con 10 años de experiencia, le indico que los cortes son aleatorios, pero matizo que son micro-cortes, por ello, se entiende que no siempre son detectados. Le informo que hay días que se corta cada 5 minutos, otros cada hora y otros puede que tres veces en todo el día. Pero repito, eso son los cortes que yo detecto porque interrumpen mi trabajo, no quiere decir que se produzcan más.

Le explico también que tras cada corte examino el log del router y siempre hay un “TCP- or UDP- based Port Scan” desde el DNS de ONO (62.42.63.52:53) y que a veces el router se ha reiniciado y otras no, para ello le muestro como en el log aparece claramente que el “tiempo de sistema activo” se ha reiniciado a cero.

Para este técnico estos logs no sirven para nada, ya que prácticamente no me hace caso y ni tan siquiera se molesta en examinarlos.

5. El técnico con 10 años de experiencia tras conectarse al router por el puerto Ethernet y hacer las comprobaciones pertinentes (quizás las mismas que ya habían realizado sus compañeros de modo remoto) me indica que está todo correcto y que no hay nada mal.

Le digo que si está todo bien, pero el router se reinicia, qué solución me va a dar, y el me replica que a él no se le ha cortado.

Yo me pregunto que, si este técnico me está diciendo (aunque sea de modo equivocado) que el router se reinicia porque el consumo es elevado, ¿por qué no me ha pedido que genere tráfico en la red para intentar reproducir el problema?

Durante su estancia en mi casa, desde las 10:05 a las 10:23 del día 25/05/12 (cerca de 20 minutos), todos los ordenadores estaban suspendidos y sin generar tráfico, ya que yo estaba atendiendo al técnico. Cualquier técnico, sin necesidad de tener 10 años de experiencia, sabe que para reproducir un error y más si este es aleatorio, al menos hay que intentar reproducir el escenario en que produce esta avería.

Este técnico con 10 años de experiencia lo desconoce.

6. Como solución final y tras simplemente indicarme que todo está bien, me ofrece su número móvil para llamarle en cuanto se produzca el error, de modo que pueda examinar el problema en ese momento.

El técnico rellena el parte y me lo entrega para firmar, en el primer punto ha indicado “avería SOLUCIONADA”. Perplejo, le digo que no creo que la avería esté solucionada, ante lo cual, me arrebata el parte de las manos y se va precipitadamente y de malos modos.

Le pido el móvil y el parte, y me indica que si los problemas continúan que llame directamente a ONO.

Este técnico se va sin darme su número móvil, y lo que es más grave, sin darme copia del parte, y dejando la avería tal cual estaba.

7. Inmediatamente llamo a ONO para poner una reclamación contra este técnico (reclamación 28759229).

8. Por la tarde, acudo a ONO Castellón para explicar el tema, y que me digan el nombre o código del técnico y para que me den copia del parte, y ante mi sorpresa, me indican que la avería nº 28744207, ha sido cerrada como solucionada, y además, me informan de que el supervisor de la subcontrata que lleva la parte de averías en Castellón (C/República Argentina) no ha sido informado por este técnico del lamentable suceso, y que simplemente le ha dicho que todo estaba correcto.

Entiendo que el supervisor no ha visto el parte de reparación, en el cual no aparece mi firma de conformidad. Y es más, espero que este experto técnico no haya falsificado mi firma, ya que como me han indicado en ONO y los servicios jurídicos, el problema entonces puede ser MUY GRAVE, tanto para el técnico, como para la subcontrata de ONO Castellón en C/República Argentina, y finalmente para ONO.

En resumen, en ONO Castellón han tenido que abrir una avería nueva (nº 28767828), y con ello debo volver a esperar otras 24/48 horas a que me den una solución.

Cuando reciba la visita de este nuevo técnico, lo primero que haré será pedirle la tarjeta de identificación, para tomar nota de sus datos. Y en segundo lugar, me identificaré como Ingeniero Informático, de este modo, espero poder ahorrarme el escuchar barbaridades propias del más absoluto desconocimiento, principalmente sería de agradecer que un técnico que lleva 10 años dando soporte, además de cambiar routers, conociera para que sirve este dispositivo.

El lunes como no puede ser de otro modo, si finalmente consigo la copia del parte (algo me dice que no será posible), pondré la correspondiente reclamación a este técnico en ONO Castellón Avda. Hermanos Bou, ONO Valencia en C/Jacinto Benavente y en Servicio Territorial de Consumo de Castellón.

Me parece lamentable el trato recibido, la falta de profesionalidad y sobre todo, el comportamiento (tipo pataleta infantil) de este técnico, que se va sin arreglar la avería, insinúa que la avería me la he inventado, y se va sin darme copia del parte.

Triste

Could not load file or assembly ‘log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821’ or one of its dependencies.

 

Madre mía, madre mía, las horas perdidas en semejante tontería.

Si publicas con ClickOnce y si tu proyecto utiliza Crystal Reports y si se te ocurre añadirle log4net (http://logging.apache.org/log4net/) en su última versión la 2.11, y si compilas para “ANY CPU”, prepárate!!

Cuando no te falla la instalación en 32bits, te falla en 64, y viceversa.

Empezarás a obtener distintos errores, el más común, el del título, pero a medida que vayas haciendo pruebas para solucionarlo, te pueden aparecer otros durante la instalación de tu aplicación, como el “log4net ya existe”, que si “no hay espacio en disco”, etc, etc.

Solución (que es lo importante):

Añade a tu proyecto la versión 2.11, pero asegúrate de no hacerlo desde NuGet. Ves a la web y descárgate los binarios, eso sí, CON LA FIRMA VIEJA!!

Si publicas ahora, verás que te funcionará bien en 64bits, pero en 32, te dará el mensaje del título.

El último paso es indicar en los “Applications files…” que excluya el fichero “log4net.dll”.

De este modo, nuestra aplicación siempre cogerá la dll desde el GAC, ya sea en 32 o 64, eso sí, cogerá la 2.10, que es la que mete Crystal.

Empresarialmente cabreado, intelectualmente emocionado.

Si no me gustara evolucionar y formarme a diario, no hubiera elegido como mi profesión, la de informático. Pero para mi, el verdadero informático es el que crea, el que con sus deditos, unas teclas y un monitor, no solo es capaz de escribir una líneas que emocionen, como sucede en la literatura, si no que además, esas líneas se conviertan en herramientas que hagan nuestras vidas más sencillas, ayudándonos en el trabajo o en nuestras labores diarias.

Pero hemos llegado a un punto en que la tecnología avanza tan rápido, que es imposible estar al día de todo. Intelectualmente me encanta que cada 3 ó 4 años, todo de un giro radical, y aparezcan nuevos entornos, nuevos frameworks, nuevos lenguajes, e incluso se pongan de moda patrones de diseño que habíamos guardado en el armario.

Estos cambios nos obligan a reciclarnos constantemente y a comprar y comprar literatura, generalmente en inglés, porque si esperamos que se traduzca, ya estará anticuada.

Intelectualmente esto es genial, pero empresarialmente, es algo difícil de manejar. Es cierto que se abren nuevos mercados y nuevas posibilidades de negocio, pero cuando has apostado por una tecnología, y al cabo de un lustro, tu desarrollo cae en el pozo del olvido, porque M$ ha decidido abandonar la tecnología, supone tirar el código o reciclarlo, y esto es difícil de asumir.

¿Por qué cuento todo esto? Pues muy sencillo, finalmente hoy, me han confirmado en el Windows Tour de Valencia, que Silverlight es abandonado por M$, y en 10 años dejará de dársele soporte. Luego más allá de algún patch, ya no habrá nada nuevo.

Ahora nos venden que M$ solo pensó en SL como un plugin para que las aplicaciones corrieran en cualquier dispositivo, pero todos sabemos que también se pensó como herramienta para aplicaciones LOB, y si no, que me digan para que se molestaron con WCF Ria Services.

Esta es la parte negativa o cabreante, pero que entiendo y comprendo. Por ello, no quiero volver a caer en trampas de este tipo, y por ello, he decidido migrar todos mis desarrollos a HTML5, css y JQuery, eso sí, apoyado por ASP.NET y MVC 3, 4, 5 o el que sea.

No voy a migrar mis desarrollos a Metro, simplemente porque, empresarialmente me es imposible asumir una tecnología que quizás en otro lustro, sea abandonada por otra, que será radicalmente mejor.

Pero ojo, no quiero decir que no vaya a desarrollar para Metro. Primero crearé aplicaciones de consumo, más o menos “chorras” que quizás me hagan ganar un dinerillo, y cuando el tema esté más claro, estudiaremos el tema.

Por tanto, mi consejo es que, aunque HTML5 no esté terminado, aunque tengamos los problemas de interfaz dependiendo del navegador, aunque el desarrollo va a ser mucho más lento, aunque no consigamos la usabilidad desktop, etc, etc…, en contrapartida ganaremos en una aplicación multiplataforma, y sabremos que su muerte, está muy lejana.

Y ya cambiando de tercio, ¿por qué estoy entusiasmado?. Con W8 nace un nuevo W95, la gente va a “flipar” con este nuevo interfaz de “ladrillos”. Pero lo mejor es que ahora nos toca aprender WIn RT y aprovechar las funcionalidades del estilo Metro. Los contratos, los ladrillos, las notificaciones, el “share”…

http://msdn.microsoft.com/en-US/windows/apps/br229516.aspx

http://msdn.microsoft.com/library/windows/apps/hh779072

Del genial evento, me quedo con una idea: “el usuario busca en la oficina las bonitas apps que usa en su casa, si nuestra aplicación es oscura y horrible, nos echarán de la oficina”. Por tanto, hay que empezar a saber decir que “NO” al usuario, educarle, y diseñar pantallas para él, de modo que no se pierda entre botones y ventanas escondidas.

Así que habrá que empezar a invertir en diseñadores de interfaces.

Y para finalizar, una palabra: “OPPORTUNITY”.

Windows es utilizado por 1.300M de usuarios, Windows 7 es usado por 500M de usuarios. Las máquinas que corren W7 podrán correr W8 sin problemas o incluso mejor. Para W8 se esperan una ventas de 160M de unidades para el primer año, de las cuales, 3M serán en España.

Nunca un desarrollador ha tenido unas expectativas de ese calibre. La oportunidad es ÚNICA. ¿A qué me refiero? Pues al Marketplace de W8. Se estima que en su salida al mercado, no habrá más de un centenar de aplicaciones en castellano. ¿Te imaginas la visibilidad de tus aplicaciones de consumo?

En fin, mañana voy al Windows Camps de Valencia, ya os contaré. De momento, sigo emocionado.

Guiño

Desenvolupament d’aplicacions basades en l’Android

 

Aunque está lejos del tema de central de mi blog, mi universidad (UOC – Universitat Oberta de Catalunya) ha liberado los apuntes de la asignatura “Tecnologia i desenvolupament en dispositius mòbils”, así que os dejo la introducción, así como el link al módulo al que hago referencia en el título.

Seguro que os gustará, aunque personalmente, prefiero Windows Phone Guiño

“Aquest mòdul presenta una introducció al desenvolupament d’aplicacions
mòbils basades en l’Android. Per a estudiar la plataforma Android ens centrarem
en el tipus d’aplicacions natives, i així podrem veure amb més detall les
peculiaritats per a aquest cas particular, i de passada tindrem una visió més
clara del desenvolupament d’aplicacions natives.

L’Android va néixer com una novetat amb molt futur però ha passat de ser una
gran promesa a un dels grans de la indústria. Amb molts dispositius, i creixent
sense parar, és una tecnologia que sens dubte s’ha de tenir en compte. A més,
ha estat construïda amb unes bases molt sòlides, i ha intentat no tancar la
porta a cap opció de desenvolupament ni arquitectura, la qual cosa és molt
útil per a poder aprendre els desenvolupaments mòbils.
Farem un recorregut sobre les diferents fases de desenvolupament d’una aplicació
mòbil aplicades al cas de l’Android.

Primer veurem una petita introducció a la història i les peculiaritats de la tecnologia,
passant per les raons que fan avui dia de l’Android un dels grans candidats
a ser dominador mundial.

Després veurem amb més detall les eines que conformen tot l’ecosistema, veient
en detall l’arquitectura de les aplicacions i el cicle de vida típic que tenen.
A continuació ens centrarem en les diferents funcionalitats que ens ofereix la
tecnologia per a accedir al maquinari dels dispositius, passant per la construcció
d’interfícies d’usuari, i arribant al desament de dades o les comunicacions.
Aprofitant aquest apartat veurem les opcions que ens ofereix la plataforma per
a poder posar a prova i millorar la nostra aplicació.

Finalment tocarem tots els temes relacionats amb les fases de distribució de
l’aplicació. Veurem com es pot arribar a publicar una aplicació per a ser comprada
pels usuaris, i el seguiment posterior, i també com podem aprofitar les
eines que ofereix l’Android per a fer negoci no solament amb la venda directa.

Amb això tindrem una visió global de la tecnologia, suficient per a poder començar
un nou projecte d’Android sabent exactament quines opcions hi ha
en cada apartat o bé sabent on podem trobar la informació.

Finalment, hi ha alguns temes que no quedaran coberts en aquest mòdul, per
diverses raons:

• No es veurà cap tutorial, i per tant no hi haurà la descripció de com cal fer
pas per pas un desenvolupament. Per a això es proporcionaran recursos
existents fora del mòdul i específicament dissenyats per a això.

• No es presentarà una guia de referència exhaustiva del desenvolupament
en l’Android, ja que per a això hi ha les referències oficials, que són molt
més àmplies i actualitzades. Malgrat tot, s’expliquen casos concrets per a
comprendre’l millor.

• Es pressuposen bases de programació i de patrons de disseny de programari
(software), ja que això ja ho ha assumit l’estudiant gràcies a altres assignatures.”

Diferencias MVC y WebForms.

1.1 MVC.

Podríamos definir MVC como un patrón arquitectural que describe una forma de desarrollar aplicaciones software separando los componentes en tres grupos (o capas):

•El Modelo que contiene una representación de los datos que maneja el sistema, su lógica de negocio, y sus mecanismos de persistencia.

•La Vista, o interfaz de usuario, que compone la información que se envía al cliente y los mecanismos interacción con éste.

•El Controlador, que actúa como intermediario entre el Modelo y la Vista, gestionando el flujo de información entre ellos y las transformaciones para adaptar los datos a las necesidades de cada uno.

MVC son las siglas de Modelo-Vista-Controlador, y se trata de un modelo muy maduro y que ha demostrado su validez a lo largo de los años en todo tipo de aplicaciones, y sobre multitud de lenguajes y plataformas de desarrollo.

1.2 Ventajas MVC.

· Clara separación de responsabilidades entre interfaz, lógica de negocio y de control, que además provoca parte de las ventajas siguientes.

· Produce un código más limpio y estructurado, independizando totalmente la interfaz de la lógica de navegación y, por supuesto, de la de negocio.

· Facilidad para la realización de pruebas unitarias de los componentes, así como de aplicar desarrollo guiado por pruebas (TDD) y técnicas avanzadas de mocking.

· Simplicidad en el desarrollo y mantenimiento de los sistemas: el conjunto de convenciones en cuanto a la estructura de proyectos y de nombrado y disposición de elementos facilita el desarrollo una vez son asimiladas.

· Reutilización de los componentes.

· Facilidad para desarrollar prototipos rápidos.

· Sencillez para crear distintas representaciones de los mismos datos.

· Los sistemas son muy eficientes, y a la postre más escalables.

· Fácilmente se puede utilizar DI (dependency injection): es una técnica que permite realizar aplicaciones cuyos componentes se encuentran muy desacoplados entre sí, lo que flexibiliza el diseño y, por ejemplo, facilita la realización de pruebas unitarias.

· Se trata de un patrón muy fácilmente implementable y que nos puede aportar muchos beneficios.

· Integración sencilla del framework MVC con soluciones basadas en cliente, como jQuery y su interminable colección de plugins, en los que podemos encontrar elementos de interfaz para prácticamente cualquier necesidad.

· Las direcciones amigables, es un beneficio directo del uso del framework de Microsoft, estrictamente hablando no es mérito de la plataforma MVC, sino del juego de clases presentes en el espacio de nombres System.Web.Routing, incluidas en .NET , con las ventajas que ello conlleva (SEO, REST, claridad en direcciones, etc.).

· La ausencia de automatismos y persistencia de estado aligera en gran medida el peso y complejidad de las páginas, lo cual redunda en el rendimiento del sistema.

· Existen multitud de frameworks MVC para ASP.Net, como MonoRail, Maverick.Net, FubuMVC y muchos otros.

· Es un framework con licencia MS-PL (Microsoft Public License), por tanto es libre, y permite su uso en aplicaciones comerciales.

· Flexibilidad de la arquitectura de ASP.NET MVC framework en la utilización de motores de vistas distintos al estándar.

1.3 Inconvenientes MVC.

· Tener que ceñirse a una estructura predefinida, lo que a veces puede incrementar la complejidad del proyecto. De hecho, hay problemas que son más difíciles de resolver.

· Al principio cuesta cierto esfuerzo adaptarse a esta filosofía, sobre todo a desarrolladores acostumbrados a otros modelos más cercanos al escritorio, como Winforms.

· La distribución de componentes obliga a crear y mantener un mayor número de ficheros.

· En general requiere de más código que WebForms.

· Existe un número ingente de componentes y controles reutilizables disponibles para Webforms. Dado que no son compatibles con el framework MVC, se parte de una situación de clara desventaja frente a estos, aunque esto está ya cambiando y seguro que con el tiempo mejorará.

· Requiere un conocimiento más profundo del entorno web y sus tecnologías subyacentes, puesto que a la vez que ofrece un control mucho más riguroso sobre los datos que se envían y reciben desde el cliente, exige una mayor responsabilidad por parte del desarrollador, ya que deberá encargarse él mismo de mantener el estado entre peticiones, maquetar las vistas, crear las hojas de estilo apropiadas, e incluso los scripts.

1.4 Ventajas WebForms.

· La tecnología de formularios web permite el desarrollo rápido de aplicaciones (RAD) a través de diseñadores visuales con los que es posible componer una página compleja y definir el comportamiento del interfaz a golpe de ratón, puesto que el framework se encarga de realizar parte del trabajo duro, como el mantenimiento del estado entre peticiones, convertir propiedades de controles en código HTML y CSS, o incluso generar scripts que realicen determinadas tareas en cliente.

· Es posible crear aplicaciones para Internet sin tener apenas idea de las particularidades inherentes al desarrollo web, lo que permite que muchos programadores procedentes del mundo del escritorio puedan ser productivos muy rápidamente, aunque sea a costa de generar páginas mucho más pesadas y con un código de marcado complejo.

· Si el equipo de desarrollo tiene ya experiencia creando aplicaciones con WinForms y no posee grandes conocimientos sobre programación web de más bajo nivel ni experiencia previa trabajando con el patrón MVC, esta tecnología va a permitir una mayor productividad del equipo.

· La última versión del framework ya permite direcciones amigables.

1.5 Inconvenientes WebForms.

· Problemas en la separación de código e interfaz.

· Dificultad para realización de pruebas unitarias.

· Podemos decir, que todas las ventajas de MVC, no se producen en WebForms, con todos los inconvenientes que esto conlleva.

· Puede producir comportamientos extraños cuando intentamos intervenir en el ciclo de vida de las páginas, por ejemplo para la carga y descarga de controles dinámicos.

· No hay control sobre el código HTML generado si se utilizan controles de servidor, por lo que a veces, es difícil conseguir el resultado deseado.

· Las páginas son mucho más pesadas debido al viewstate.

1.6 Principales diferencias.

MVC es radicalmente distinto al uso de formularios web, algunas de las principales características que destacaría son:

· No existe el postback.

· No hay viewstate.

· No hay eventos.

· El diseñador visual deja de tener sentido.

· No hay controles de servidor, al menos en la forma en que los conocemos en WebForms.

· No es necesario utilizar los archivos code-behind de las páginas .aspx.

· Las páginas no siguen complejos ciclos de vida, el proceso de una petición es infinitamente más simple que en WebForms.

· Control total del código de marcado generado.

· Podemos sustituir componentes internos del framework para adaptarlo a nuestras preferencias.

· Se integra con Ajax de forma natural, sin artificios como los UpdatePanels y similares.

· Favorece la introducción de buenas prácticas como la inversión de control o inyección de dependencias.

· Diferencias entre code-behind y MVC controllers: aparentemente hay similitudes entre ambos, ya que estos contienen la lógica de la aplicación, sin embargo la página aspx no se puede separar del code-behind, ambas trabajan unidas para implementar la lógica de la aplicación y la lógica de presentación, pero en MVC es diferente, hay una clara separación entre la vista (UI) y los controladores, que son una representación abstracta de la interacción con el usuario. Esto permite un código más simple, por lo que la aplicación es más fácil de entender y mantener.

1.7 Experiencia personal.

Particularmente, tras realizar ambas web, las mayores diferencias que he encontrado ya se han comentado con anterioridad, pero enfatizaría la facilidad que proporciona WebForms, seguramente por su proximidad a WinForms, el uso de controles de servidor implica no tener que hacerlo prácticamente todo manual, como en MVC. La cantidad de código de la primera, refiriéndome solo a la capa de presentación, es casi la mitad que en MVC. Sin embargo, en ésta, al controlar exactamente el código HTML generado, no he tenido tantos problemas a la hora de presentar los datos en la página. La validación sin embargo, me ha parecido más simple en MVC gracias al uso de metadata en la definición de las clases.

2. Conclusiones.

Desde el nacimiento de la World Wide Web hasta la actualidad, hay un verdadero abismo tecnológico y conceptual. No solo se ha evolucionado en la parte visual que utiliza el usuario, sino en la parte que no se ve. ASP.NET permite crear aplicaciones web de un modo muy productivo, proporcionando una visión moderna, interactiva y escalable de la red. Las mejoras ofrecidas por Visual Studio 2010, ASP.NET 4.0 y en general todas las funcionalidades que permite el framework 4, permiten desarrollar una web de calidad en poco tiempo.

Visual Studio 2010 me ha permitido desarrollar la aplicación desde las primeras fases, integrándose perfectamente con todas las herramientas de Microsoft para facilitar el trabajo.

A pesar de las facilidades que proporciona WebForms, pienso que para una aplicación de una determinada envergadura, la mejor opción es MVC, por todas las ventajas y pocas desventajas, que ya se han comentado. A pesar de que tiene una mayor curva de aprendizaje que WebForms y de que la productividad es menor en un primer momento, a la larga, MVC será más fácil de entender y mantener. Pienso que es el patrón con más futuro a corto plazo y medio plazo, aunque WebForms no desaparecerá, por su simplicidad.