{"id":1151,"date":"2023-05-25T19:26:25","date_gmt":"2023-05-25T17:26:25","guid":{"rendered":"https:\/\/intsight.com\/?p=1151"},"modified":"2024-03-12T14:36:25","modified_gmt":"2024-03-12T13:36:25","slug":"blazor","status":"publish","type":"post","link":"https:\/\/intsight.com\/index.php\/2023\/05\/25\/blazor\/","title":{"rendered":"Blazor"},"content":{"rendered":"<p><span style=\"font-variant:small-caps; font-size: 105%;\">Empec\u00e9 mis experimentos<\/span> con <a href=\"https:\/\/dotnet.microsoft.com\/en-us\/apps\/aspnet\/web-apps\/blazor\" rel=\"noopener\" target=\"_blank\">Blazor<\/a> en los lejanos tiempos de .NET 5. Hace un par de a\u00f1os, quiero decir.<\/p>\n<p>Con un poco de contexto me explicar\u00e9 mejor: prefiero una buena \u00abaplicaci\u00f3n de escritorio\u00bb antes que cualquier p\u00e1gina web. Puede ser porque el tipo de proyectos en los que he invertido m\u00e1s tiempo han sido siempre aplicaciones con <em>alta densidad de informaci\u00f3n<\/em>, como las llaman ahora. Pero tambi\u00e9n porque he podido comparar la productividad de equipos trabajando para la web y para aplicaciones de escritorio de toda la vida. La p\u00e9rdida de productividad, seg\u00fan mi experiencia personal, se agrava cuando es Angular la herramienta de front-end. Conozco TypeScript en profundidad, y he hecho proyectos con Angular y con Svelte. <a href=\"https:\/\/svelte.dev\/\" target=\"_blank\" rel=\"noopener\">Svelte<\/a> es much\u00edsimo m\u00e1s productivo, e infinitamente menos pesado luego en producci\u00f3n. Pero la industria tiene cierta fijaci\u00f3n con el pu\u00f1etero Angular.<\/p>\n<p>Las primeras pruebas con Blazor las hice con la idea de usarlo para crear prototipos r\u00e1pidos. Funcion\u00f3 de maravillas. Pero no estaba muy puesto en Bootstrap por entonces, y el dise\u00f1o visual de los ejemplos de Microsoft era, y sigue siendo, abominable. Me preocupaba, adem\u00e1s, la falta de controles de terceros. El cliente, por ejemplo, estaba empe\u00f1ado en usar un <a href=\"https:\/\/charts.carbondesignsystem.com\/svelte\/?path=\/story\/simple-charts-radar--radar\" rel=\"noopener\" target=\"_blank\">gr\u00e1fico de radar<\/a> en la p\u00e1gina principal del proyecto&#8230; y los componentes que manej\u00e1bamos no tra\u00edan el dichoso gr\u00e1fico. Al final, el front-end termin\u00f3 haci\u00e9ndose en React, pero el prototipo de Blazor sigue existiendo y us\u00e1ndose internamente, porque en varios aspectos, es m\u00e1s r\u00e1pido y potente.<\/p>\n<blockquote style=\"font-size:85%\"><p>Una de las lecciones m\u00e1s importantes de mi carrera como desarrollador, es que si te toca crear una librer\u00eda, un servidor o algo que normalmente no tenga una interfaz de usuario&#8230; es mejor que te crees una interfaz propia, aunque no te la paguen ni te la agradezcan. Es tu seguro de vida para que no te culpen si el front-end o la aplicaci\u00f3n hecha por otros es lenta. La vida es dura.<\/p><\/blockquote>\n<p>Ahora mismo, acabo de terminar un proyecto grande con Blazor y ASP.NET. Bueno, realmente el prototipo, porque los \u00absabios\u00bb de la \u00abindustria\u00bb siguen obcecados con Angular y Spring Boot, y ahora habr\u00e1 que rehacerlo todo. Blazor es ya una herramienta de desarrollo madura. Yo he aprendido un poco m\u00e1s de CSS y HTML (desastres ambos, en mi opini\u00f3n) y la parte de la fealdad ya est\u00e1 m\u00e1s o menos superada. Los componentes de terceros han evolucionado tambi\u00e9n. Y hay mejores libros y blogs sobre c\u00f3mo funciona Blazor, que no siempre es lo que aparenta. La velocidad de desarrollo sigue siendo incomparable. He terminado la funcionalidad necesaria del proyecto en un mes. Calculamos que rehacerlo todo en Angular nos costar\u00e1 tres veces m\u00e1s tiempo. La estimaci\u00f3n de tiempo no es m\u00eda: mi papel ha sido rebajarla, porque al fin y al cabo, ya sabemos c\u00f3mo hacer todo.<\/p>\n<p>Me siento un poco como <a href=\"https:\/\/en.wikipedia.org\/wiki\/Sisyphus\" rel=\"noopener\" target=\"_blank\">S\u00edsifo<\/a>. Pero uno termina por acostumbrarse a estas cosas.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Empec\u00e9 mis experimentos con Blazor en los lejanos tiempos de .NET 5. Hace un par de a\u00f1os, quiero decir. Con un poco de contexto me explicar\u00e9 mejor: prefiero una buena \u00abaplicaci\u00f3n de escritorio\u00bb antes que cualquier p\u00e1gina web. Puede ser porque el tipo de proyectos en los que he invertido m\u00e1s tiempo han sido siempre [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1150,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[4],"tags":[65,70,72,71],"class_list":["post-1151","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-c","tag-net","tag-blazor","tag-spa","tag-webassembly"],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/intsight.com\/wp-content\/uploads\/2023\/05\/blazor.png?fit=350%2C350&ssl=1","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/intsight.com\/index.php\/wp-json\/wp\/v2\/posts\/1151","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/intsight.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/intsight.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/intsight.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/intsight.com\/index.php\/wp-json\/wp\/v2\/comments?post=1151"}],"version-history":[{"count":18,"href":"https:\/\/intsight.com\/index.php\/wp-json\/wp\/v2\/posts\/1151\/revisions"}],"predecessor-version":[{"id":1711,"href":"https:\/\/intsight.com\/index.php\/wp-json\/wp\/v2\/posts\/1151\/revisions\/1711"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/intsight.com\/index.php\/wp-json\/wp\/v2\/media\/1150"}],"wp:attachment":[{"href":"https:\/\/intsight.com\/index.php\/wp-json\/wp\/v2\/media?parent=1151"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/intsight.com\/index.php\/wp-json\/wp\/v2\/categories?post=1151"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/intsight.com\/index.php\/wp-json\/wp\/v2\/tags?post=1151"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}