2009-04-19 16 views
8

.Net es un gran marco con algunas funcionalidades que parecen apuntar a los principiantes o se vuelven problemáticas si se trata de mucha personalización. Entonces, ¿qué funcionalidad disponible en el framework .Net considera que los desarrolladores profesionales deberían evitar y por qué?¿Qué componentes del framework .Net debería evitar un desarrollador profesional?

Por ejemplo, .Net tiene un asistente para funciones comunes de administración de usuarios. ¿Está utilizando esta funcionalidad considerada apropiada para uso profesional o solo para principiantes?

Un componente/función/clase, etc. por respuesta por favor por lo que los votos son específicos para un solo artículo.

+0

Si va a hacer una encuesta, debe hacer Community Wiki –

+0

* no menciona las regiones * –

+0

Good point John - corregido. –

Respuesta

16

conjuntos de datos con tipo
ASP.NET * Ver Controles
ASP.NET * Controles de origen de datos

+0

¿Qué pasa con los controles de DataSource? –

+0

Los controles de DataSource generalmente hacen que la separación de preocupaciones sea muy difícil, y por lo general terminan teniendo comandos SQL salpicados en toda la capa de presentación. Funciona para alguien que nunca ha creado un sitio web antes, pero es (y debe ser) considerado una mala práctica para los programadores profesionales. –

+1

Si bien es cierto para SqlDataSource, no creo que se aplique a ObjectDataSource, lo que permite una buena separación. –

1

Thread.Abort

He aquí un excelente artículo de Ian Griffiths acerca Why Thread.Abort is Evil y algunas alternativas mejores.

+0

Thread.Abort no es malo si lo está utilizando durante el proceso de cierre. –

+0

Sí, es encantador cuando comprueba si el hilo se abortó en 100 lugares diferentes (!) –

4

Creo que, en general, la mayoría de los controles/funciones que hacen mucho trabajo "entre bastidores" pueden causar muchos problemas. No hay problema con el uso de un GridView si ese diseño es exactamente lo que desea, pero es muy raro, y un repetidor es probablemente una mejor opción. UpdatePanels puede ahorrarle mucho trabajo si desea una sensación de Ajax en su sitio, pero en comparación con una llamada jQuery AJAX, lo siento decirlo, apestan. El asistente de usuario que mencione puede ser realmente útil durante el desarrollo, pero si se requiere la funcionalidad de membresía en el proyecto, debe construirse como una parte integrada del mismo.

Por lo tanto, en resumen: los programadores profesionales deben hacer el trabajo ellos mismos y escribir código que satisfaga específicamente las necesidades de sus clientes, y solo tomar partes listas de .Net Framework cuando de hecho es exactamente lo que necesitan.

+0

Tenga cuidado con "Los programadores profesionales deberían hacer el trabajo ellos mismos y escribir código que satisfaga específicamente las necesidades de sus clientes, y solo tomar partes listas de .Net. Framework cuando eso es exactamente lo que necesitan ". Eso es cierto hasta cierto punto, y luego se convierte en NIH. El uso de un componente listo para usar ofrece un beneficio, incluso si no es exactamente lo que usted habría diseñado. –

+2

la naturaleza de "caja negra" de los controles de formularios web es una fuente constante de frustración para mí. –

+0

Tenga en cuenta que esta pregunta se extiende más allá de ASP.NET. –

9

MS Ajax

jQuery, y otros marcos js como prototipo, etc., son una alternativa más ligera y flexible. Los controles MS Ajax pueden parecer geniales inicialmente, hasta que realmente necesite un comportamiento personalizado fuera del alcance de los controles.

Microsoft mismo ha reconocido esto hasta cierto punto en que jquery se incluirá con las próximas versiones de Visual Studio, con soporte intellisense.

1

LINQ to XML

XmlDocument/XPath es más fácil de usar, si quieres inflexible de tipos para analizar su uso o documento xsd.exeXsd2Code.

EDITAR

cuál prefiere?

IEnumerable<XElement> partNos = 
    from item in purchaseOrder.Descendants("Item") 
    where (int) item.Element("Quantity") * 
     (decimal) item.Element("USPrice") > 100 
    orderby (string)item.Element("PartNumber") 
    select item; 

o, con XmlDocument y XPath

var nodes = myDocument.SelectNodes("//Item[USPrice * Quantity > 100]"); 
+0

Creo que Linq to XML es muy útil si está escribiendo XML. Pero si estás leyendo XML de cualquier complejidad, desearás tener algo mejor. –

+0

"Más fácil de usar" es una defensa terrible, especialmente porque no es cierto :) Además, LINQ to XML no se trata de escribir con fuerza su XML para analizar. Es una forma de consultar su XML. Desde mi experiencia, LINQ to XML sobresale con XML extremadamente complicado y crear documentos con él es mucho más rápido que la alternativa anterior. Ustedes deberían reevaluar sus opiniones sobre esto y realmente profundizar. Hay mucho más allá de lo que creo que ambos se dan cuenta. –

+0

Bien, echaré un vistazo a linq para XML una vez más, pero realmente creo que una consulta con XPath es más limpia y más fácil (1 línea de código). No he intentado crear un documento con él. ¿Pero por qué no usar xsd.exe y Xsd2Code con linq para Object? usted tiene el beneficio de escribir fuerte. –

0

.Net es una enorme estructura con algunas funciones que parece apuntar a los principiantes o se vuelve problemático si tanto la personalización está involucrado.

Es el "problema para los principiantes" ese es el problema real.

Los conjuntos de datos mecanografiados son un gran ejemplo. VS proporciona una interfaz de usuario simple y agradable a la funcionalidad que solo deben usar los principiantes de rango que crean aplicaciones de demostración extremadamente simples y profesionales experimentados que entienden todos los matices del modelo de objetos ADO.NET y lo que realmente hacen los conjuntos de datos tipados. Nadie entre esos dos polos debería tocarlo, porque hay una buena manera de aprender cada matiz del modelo de objetos ADO.NET y los conjuntos de datos mecanografiados no lo son.

O tome LINQ. Seductoramente es fácil escribir código LINQ sin tener una buena comprensión de IEnumerable<T>. Pero no es tan fácil escribir código LINQ mantenible sin ese conocimiento.

+0

Ambos son casos de funcionalidad que un buen desarrollador puede escribir de manera más sucinta con mayor simplicidad y agregar otro nivel de abstracción que generalmente no agrega ningún valor. A veces me parece que algunos profesionales lo usan para que puedan vender sus libros. – dkretz

0

Puedes pensar en .NET como una cebolla con muchas capas. Por ejemplo, .NET compact framework es un subconjunto de .NET completo. Además, hay capas "adicionales" en la parte superior de .NET en forma de "Extensiones" que son instalaciones opcionales para nuevas características que aún no se han convertido en parte de .NET propiamente dicha. Un ejemplo de esto sería cuando Microsoft lanzó ASP.NET 3.5 Extensions que ahora se ha incluido en .NET 3.51.

Otra forma de pensar en .NET es como un conjunto de "bibliotecas" que puede usar. Por ejemplo, hay un conjunto o rutinas para admitir RegEx. Si quiere o necesita expresiones regulares, entonces usa estas funciones, si no puede simplemente ignorarlas. Funciones simples para cosas como trigonometría o seguridad.

Así que supongo que realmente se reduce a lo que necesita para su aplicación? Si está haciendo una programación científica, es posible que desee las funciones trigonométricas. Una aplicación gráfica requerirá funciones que una aplicación de consola no haría. Las aplicaciones web probablemente no necesiten usar las funciones del portapapeles, etc.

Realmente no creo que haya API malas en .NET, solo programadores que las usan de forma inapropiada.

1

La interconexión remota generalmente es buena para evitar, al menos si tiene como objetivo 3.0 o superior y, por lo tanto, puede hospedar fácilmente puntos finales de mensajería en proceso.

0

Hay mucho que evitar en la biblioteca WinForms.

Evite el enlace de datos con la mayoría de los controles estándar de WinForms. Hay muchos errores en esa área que provocarán muchos rasguños en la cabeza. O al menos esa ha sido mi experiencia. NumericUpDown es un buen ejemplo de este desastre.

También evite los controles estándar de WinForms cuando se trata de grandes conjuntos de datos. Hacen una gran cantidad de copia de datos y no pueden tratar bien con grandes conjuntos de datos.

Evite ListView en modo "Virtual", ya que está lleno de errores.

En general, simplemente recomiendo mantenerse alejado de WinForms. Si tiene la opción, vaya a WPF o al menos compre una buena y bien respaldada (y afortunadamente menos problemática) biblioteca de formularios de terceros.

Cuestiones relacionadas