Acabamos de pasar por una pequeña sesión de experimentación para tratar de ver cuánto trabajo llevaría nuestra biblioteca de clases .NET, o al menos partes de ella, a Silverlight para que podamos reutilizar la lógica de negocios entre los dos mundos, Me pregunto si otros tienen experiencia con este tipo de cosas.¿Viabilidad de código compartido entre .NET y Silverlight?
Las cosas me di cuenta, de la parte superior de mi cabeza:
- Un montón de atributos que faltan (navegables (falso), por ejemplo)
- Las porciones de la falta de interfaces, o presentes, pero vacías (ICloneable es oculto, ITypedList falta)
- diferencias de reflexión (necesidades alcanzables que todo sea público)
- Algunas diferencias de clase de base (sin componente?)
Entonces, me pregunto, ¿es realmente posible para mí considerar esto como una posibilidad?
Obtuve el código inicial en ejecución, pero solo tuve que comentar una gran parte de la funcionalidad básica, sobre todo en las listas de manejo ya que están basadas en ITypedList y algunas clases base. Aparentemente tengo que cambiar a ObservableCollection en Silverlight, por lo que es necesario cambiar todo el código base para poder enfrentarlo.
La clase real de prueba de negocios que he creado es 99.5% idéntica a la que habría hecho para .NET, solo algunos cambios menores que también se podrían usar fácilmente en .NET, simplemente no como lo hubiera hecho antes de mirar a Silverlight. En otras palabras, parece factible compartir la lógica comercial, siempre que pueda compatibilizar las clases base.
Así que estoy claro, lo que estoy diciendo es que básicamente tendría dos archivos de proyecto, uno para .NET y otro para Silverlight, pero el código fuente de C# sería el mismo, compartido entre los dos.
¿Alguien tiene alguna experiencia con esto? ¿Algún consejo o guía?
¿Valdrá la pena? Ciertamente merece más atención.
Ok, bien, entonces no has encontrado ningún problema insuperable, supongo. Es bueno saberlo, entonces ciertamente seguiré adelante con este proyecto. –
Lasse: Definitivamente faltan algunas cosas; No puedo recordar desde lo alto de mi cabeza, sino algunas cosas de Reflection, log4net, etc.Pero es definitivamente superable; (aunque, en VS2008 al menos, hay algunas cosas 'extrañas' a veces, cuando usas 'Agregar como enlace' para agregar una clase existente del proyecto principal y cambiarla, tienes que abrirla (de hecho abrirla) a través de el proyecto de Silverlight antes de que reconozca los cambios). Sin embargo, no hay problemas que destruyan el alma :) –
Bueno. Lo que parece ser el mayor problema es que tengo que volver a implementar la base para nuestras clases de lista, ya que utilizamos listas mucho a través de nuestra lógica comercial, y tenemos algunas clases de lista especial que saben que están en un "mundo de lógica de negocios" ", pero al observar cómo se usa ObservableCollection, parece que hará lo que necesitamos, solo tiene que cambiar el código para lidiar con él. Nuestro contenedor de IoC funcionaba menos la configuración de app.config, pero de todos modos no la usaremos. Solo me preguntaba si alguien más había encontrado campos de minas que no podía ver de inmediato. –