Salesforce es una experiencia bastante dolorosa para desarrollar cualquier cosa que no sean las aplicaciones más simples. Salesforce tiene una idea muy específica de lo que uno querría desarrollar, y si su aplicación no está dentro de esos límites, ¡manténgase alejado!
Los límites del gobernador son realmente lamentables: 16 recursiones de nivel, 1 montón de megas, no más de 200 objetos devueltos por una consulta, no más de 20 consultas en una invocación. 10 llamadas web en una invocación, 1000 elementos en una sola lista, y continúan. El resultado final es que cualquier ingenio que se te ocurra para superar un límite choca con otro.
Una vez que alcance cierto tamaño, todo su tiempo se dedicará a la codificación de estas limitaciones. El lenguaje, Apex, realmente no admite ninguna herencia significativa. Incluso tareas aparentemente simples terminan tomando días cuando uno encuentra limitaciones nuevas y aparentemente arbitrarias, por ejemplo, todos los objetos en Apex heredan de SObject
; sin embargo, no se permite crear una instancia de una colección de genéricos SObject
s, por lo que es casi imposible crear bibliotecas de utilidad útiles. Las uniones de bases de datos complejas (incluso bastante simples) no son posibles.
Las herramientas y el soporte para Salesforce también son extremadamente débiles. No son confiables y difíciles de usar para procesos de desarrollo reales. La implementación es una pesadilla, ya que las herramientas tienen una enorme dificultad para resolver problemas complejos de dependencia, y numerosas entidades que se crearán en el curso del desarrollo normal simplemente NO PUEDEN implementarse programáticamente. Otras pequeñas características son también deliciosas, como el hecho de que el lenguaje no distingue entre mayúsculas y minúsculas, pero el IDE distingue entre mayúsculas y minúsculas. No hay herramientas de refactorización de las que hablar, así que obtienes todo el dolor de un lenguaje estáticamente tipeado, sin ninguno de los supuestos beneficios. Y el tiempo de guardar/compilar es alto; veo frecuencias de más de 2 minutos. Y, por supuesto, si tienes múltiples errores de compilación en un solo guardado (y lo harás, ya que no querrás recompilar cada cambio, con esas esperas de 2 minutos ...) solo obtendrás un error a la vez !
En una nota relacionada, parece haber notado que la documentación de Salesforce es bastante autocomplaciente ... bueno, es así hasta el final. No se menciona en ninguna parte ni siquiera en las referencias técnicas más oscuras de los errores comunes, o incluso las limitaciones de una api o característica determinada. Es todo "aquí está lo mejor que puedes hacer" y no se menciona "pero imaginas que también lo haría ___, ¡pero estarías equivocado! ¡Muerto mal!" La documentación realmente parece material de marketing hasta el final. Llevo más de 18 meses programando en este entorno y, de vez en cuando, me resulta difícil encontrar elementos básicos, como la referencia de API.
Salesforce no es un entorno flexible. No es un entorno de desarrollo rápido (al menos en comparación con cualquier otro marco de programación web). No es un buen entorno para construir nada más que aplicaciones de juguete como las que muestran en sus tutoriales. Solo di no.
.Net comaprison realmente tenía como objetivo buscar opinión comparándolo con SalesForce como una plataforma de desarrollo RAD, en lugar de interactuar con SF a través de .Net que sé que puedes hacer. Estaba bastante impresionado con las herramientas de desarrollo: obtienes mucha UI gratis que puede desarrollarse en el navegador con la opción de entrar en Eclipse para cosas más profundas de Apex. Es solo cuestión de cuán rápido llegas a los casos 'edge' a través de – mhollers