-
Notifications
You must be signed in to change notification settings - Fork 85
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
cabb487
commit 227a8e7
Showing
2 changed files
with
63 additions
and
36 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
227a8e7
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Switch to .Net 5 and C# 9
If you have lived under a rock, .Net 5 was presented last Tuesday in Net Conf. Some links to know more about it:
This release also introduces C#9 with a lot of cool new stuff:
I haven't had time to play with the new language features yes, but I've been preparing for this update since the last preview, so the
master
branch now depends on .Net 5, whilemasterCore3
will stay in the last version compatible with .Net Core 3.1Another wave of nullability warnings
The main changes where updating the code to the next wave of errors because of the new nullability annotations in .Net 5.0. Specially annoying was dealing with LINQ to XML constructors.
Switch to
System.Text.Json
Another big thing is that in .Net 5 the BinaryFormatter has been removed. Signum.React uses Json for most of the serialization, except for the Authentication Token (that contains the User serialized and encrypted to avoid database queries on every request) that used BinaryFormatter.
The solution was to generalize the Signum.React Json infrastructure to serialize and deserialize entities (
EntityJsonConverter
,MListJsonConverter
,LiteJsonConverter
, ...) to be able to work without a database and outside of a Web.API pipline.Also, now that I was on it, I migrated the converters from
Newtonsoft.Json
toSystem.Text.Json
. This new library is based inSpan<T>
so it has great performance. It was available since .Net Core 3.1 but was missing some important features preventing the migration.All in all, now the serialization infrastructure is in
Signum.Engine
, usesSystem.Text.Json
and can also be used to serialize arbitrary entities in a.json
file.How to update
Finally, I have a a big surprise to improve the developer experience when updating the framework: Signum.Upgrade
227a8e7
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hooray!
Excellent! 👏 👏
227a8e7
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Congratz!!
227a8e7
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@rezanos thanks :)
@fmelendezherize great to see new faces, are you using Signum Framework from Venezuela?
227a8e7
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
227a8e7
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Congratulation, Awesome job!
227a8e7
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
227a8e7
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Te respondo en español Olmo, estoy usando Signum en mi aplicacion administrativa probablemente desde que la crearon hace cuanto ya? 10 años, tal vez un poco menos. El punto es que he estado usando una version antigua de la libreria y solo la parte de Data (Entities - Engine). Ahora que NET 5 fue liberada, hago un repaso y estoy tratando de estar mas activo, con lo que han trabajado durante todos estos años. Si, estamos operando desde Venezuela, estamos a la orden. Saludos
227a8e7
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Increible :) siempre hace ilusión conocer gente que lo usa! Y desde hace tanto tiempo!
En que UI estáis? Windows, Web o React? Y de que fecha es la version del Framework?
227a8e7
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Es una aplicacion administrativa para Desktop WPF. Comenzo en aquellos entonces con .net framework 2.0? si mal no recuerdo. He tratado de actualizarlo a las versiones de framework mayores como la 3.5 y la 4.6 pero ahorita que salto a Core, pues espere un poco. Con Net 5 no hay forma de no migrar hacia alla porque todo el ecosistema lo hara.

Hasta la tercera version del sistema usamos esa version de Signum.Entities del 2011 y ahora usamos una version del 2016. Te iba a preguntar que politica usaron para la version de las librerias porque noto que la nueva dice 1.0
227a8e7
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Signum Framework se distribuye como código fuente, no como librería. Eso hace que tenga muy poca fricción hacer mejoras en el Framework directamente mientras cambias la aplicación y permite que haya una evolución constante del framework especialmente para cosas pequenyas.
Calculo que al menos el 50% de los cambios del framework son ese tipo de mejoras incrementales hechas por mí o por otros colaboradores, mientras que el otro 50% son grandes avances técnicos o nuevas funcionalidades que a menudo suelo hacer en mi tiempo libre. .
En la practica eso significa que prácticamente siempre estés en una versión 'no oficial' y al no haber una publicación (Codigo -> DLL), dar un número de versión es muy artificial.
La versión es el commit del submodulo. Estás usando Git y Git-submodulos? no recuerdo exactamente cuando empezamos a usarlo pero sería alrededor de 2011 o 2012.
Una vez acabado Signum.React eliminamos Signum.Web para evitar duplicidades, y al portar a .Net Core 2.0 eliminamos Signum.Windows porque realmente había pocos (ningún?) cliente que los estaba usando y llevaba tiempo un poco abandonado.
Desde .Net Core 3.0 hay soporte para WinForms y WPF, así que técnicamente podría devolverse a la vida y hacer una migración más sencilla para ti y algún otro proyecto que aún usa Signum.Windows, pero posiblemente volvería a quedar en un cierto estado de abandono si no hay clientes que pidan aplicaciones para Windows.
Como de posible ves una migración a Signum.React? Tienes tú o tu equipo ciertos conocimientos de web ? (Javascript, Typescript, React, etc...)
227a8e7
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hola Olmo, bueno precisamente ese es el punto que estabamos usando Signum, en la era pre-github y pues no habia iniciado trabajo de migracion porque me habia sido muy estable, y recuerda que la tenia limitada solo a la parte de repositorios y data. Se que han hecho un gran esfuerzo añadiendo muchas otras utilidades y precisamente planeo ponerme al dia con Signum.
Por lo pronto te respondo que la aplicacion se va a mantener Desktop - WPF no tenemos pensado hacer migracion a app web. Pero si tengo en mente crear aplicaciones nueva que depende de mis librerias principales por eso ando considerando mas bien hacerlo en Blazor que esta cada vez mas maduro (que opinion tienes al respecto?).
Lo que si quiero hacer ademas es migrar al menos todas mis librerias base de mi aplicacion adiministrativa a la ultima version de Signum en NET 5, que consejo me pudieras dar para migrar de .net framework 4.* a NET 5? (mis librerias, Signum ya lo compile a NET 5 sin problemas).
Saludos
227a8e7
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Han habido muchos cambios desde .Net Framework 4.7 pero la mayoría en React o cambios internos. Que recuerde los cambios más importantes en Entities y Engine son nullable reference types y AutoExpressionField. Pides ver más detalles en el changelog https://github.com/signumsoftware/framework#changelog
Por otro lado .Net core tiene 2-3 años de antigüedad, pero tu tienes una aplicación bastante más antigua. No se en que estado estará el código, por ejemplo a nivel de convenciones (DN->Entity,Embedded,Model o Mixin) attributos como EntityKind o PropertyValidation con nameof.
Finalmente, piensa que usar Signum Framework como un ORM tiene sentido para aplicación o módulos que van a ser usados por el público en general, pero para una aplicación de negocio interna, te estás perdiendo MUCHO si no usas la interfaz de usuario o los módulos de Extensions.
Igual antes de hacer la migración merece la pena bajarte southwind o clonarte una aplicación nueva para ver las capacidades del buscador, charting, autorización, etc... y decidir luego si la mejor estrategia es evolución o revolución