.net - ¿A qué se parecen salesforce.com y Apex como plataforma de desarrollo de aplicaciones?
rad (8)
Escucha a Ben. No realmente. Escucha a Ben. Salesforce es un mundo de dolor absoluto. Lo único bueno de Salesforce es su equipo de marketing.
Recientemente descubrí que salesforce.com es mucho más que un CRM en línea después de encontrar un estudio de caso de Morrison en el que desarrollan una aplicación de gestión de obras. Lo he estado probando con el objetivo de recrear nuestro propio sistema de gestión de obras en la plataforma.
Mis antecedentes están en Microsoft y .Net, y la primera opción obvia sería asp.net. Sin embargo, en realidad solo tengo experiencia con .net y mi gerente con un fondo de programación de Synergy más legado, y soy autodidacta y estoy evaluando otras opciones de RAD (por ejemplo, Ironspeed).
la naturaleza del negocio se encuentra en los principales 2-5 contratos de tipo de construcción concurrente que se ejecutan de 3 a 5 años cada uno, cada uno de los cuales requiere de 15 a 50 usuarios del sistema. Tradicionalmente, hemos utilizado nuestro sistema de gestión de obras basado en caracteres para todo y ajustado para cada contrato. El modelo de licenciamiento de Salesforce se adapta a este tipo de flexibilidad, pero me preocupa la curva de flexibilidad / aprendizaje de desarrollo y todos los problemas que rodean a Lock-In. No parece haber mucho análisis neutro y sobrio de la plataforma en la web que no sea material o blogs propios de Salesforce.
¿Alguien ha tenido alguna experiencia en desarrollar una aplicación en Salesforce en comparación con la ruta .Net más tradicional?
No me he desarrollado en el lado .Net de Salesforce, sí creé algunas adiciones internas a una instalación de Salesforce muy grande.
Lo que puedo decir al respecto es que las herramientas de desarrollo dentro del sistema pueden ser confusas y el mayor cuello de botella que siempre tuve (en tiempo de desarrollo) fue obtener la sintaxis correcta para las consultas que quería. (advertencia, esto fue en 2007)
Parece que la mayoría de las respuestas aquí son negativas, y yo diría que siempre es más fácil culpar a una plataforma que culpar a su propia inexperiencia.
Hubo una curva de aprendizaje para mí y fue frustrante (proveniente de un fondo de Java). La sintaxis era similar, pero el paradigma era muy diferente. Después de luchar por un tiempo, he logrado construir aplicaciones utilizadas por decenas de miles de usuarios que se escalan perfectamente, son fáciles de administrar y seguras, y que incorporan casi todas las arquitecturas de programación tradicionales actualmente incluidas, incluyendo los conceptos básicos de OOP, MVC y muchos de los otros patrones de diseño de "Gang Of Four".
Si desea que le indique el código de ejemplo o las grandes aplicaciones integradas en la plataforma, me complacerá ayudarlo.
Puede hacer cosas grandiosas e increíbles con Salesforce. El único problema es que, en mi opinión, para muchos sistemas no triviales y funcionalidad parecida, el costo total de propiedad (SDLC completo) es fácilmente 3-10 veces mayor de lo que sería con dotNET y un RDBMS tradicional como SQL Server. . ¿Por qué pagar mucho más por el mismo resultado?
Realmente no puedo decirte qué tan rápido llegarás a los casos extremos, pero puedo decirte que es diferente a cualquier otro desarrollo que haya hecho alguna vez. El tiempo de implementación requerido para crear una solución viable y la capacidad de iterar rápidamente una solución para que los patrocinadores de negocios los evalúen no tienen comparación con ningún entorno que haya experimentado.
El código Apex se basa en Java, con diferencias específicas de la plataforma. Sin embargo, algunas cosas no se pueden hacer a través del código. La combinación de implementación declarativa (basada en pantalla) y basada en código necesaria para elaborar una aplicación completa es difícil de entender al principio.
Debido a la naturaleza de múltiples inquilinos del medio ambiente, existen ''límites de gobernador'' que impiden que los recursos sean monopolizados por una sola organización. Esto restringe sus opciones de implementación en cosas como insertar y actualizar desencadenantes.
La implementación de su aplicación también es una experiencia muy diferente.
Consulte la capacitación para desarrolladores (Dev 501) disponible como podcast de video en iTunes: http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=325668840 Podrá ver exactamente lo que yo '' Estoy hablando de.
Sé que esta pregunta es un poco antigua, pero también valdría la pena analizar esta pregunta. Desventajas de la plataforma Force.com
He estado desarrollando en la plataforma por un tiempo y no podría estar más de acuerdo con Ben. Hay tanto problema con la "plataforma de desarrollo" que es force.com que realmente no creo que sea justo llamarla una plataforma de desarrollo.
Hemos tenido problemas con el soporte de herramientas, que es terrible, soporte de implementación, lo cual es terrible e incluso su soporte técnico es, lo adivinaste, terrible.
El punto principal que quiero destacar es que Salesforce comenzó como CRM y luego decidieron agregar la "plataforma en la nube" a su oferta. La plataforma en la nube, sin embargo, está orientada a ampliar su producto CRM y si lo que quiere hacer es ampliar el CRM, entonces el entorno de force.com le permitirá hacerlo bien.
Lo que no le permitirá hacer bien es deshacerse de su CRM y dejar que cree fácilmente su propia aplicación completamente personalizada. Todavía está vinculado a su modelo de seguridad y usuario, todavía tendrá sus objetos estándar en su base de datos y aún tendrá sus páginas estándar en su entorno de producción. No hay "Archivo -> Nuevo Proyecto" por así decirlo.
Además, alguien más mencionó que es "basado en Java". Esto no significa que puedas ejecutar el código Java allí. Significa que robaron algunos bits de Java y lo bastardizaron para parecerse a Java pero en realidad no lo es ... lo cual es realmente molesto porque no puedes simplemente tomar un conjunto de bibliotecas de Java e importarlas a su nube ... así que si quieres hacer algo como analizar JSON ... vas a escribir eso tú mismo.
Ovearall, evitaría la plataforma de force.com como la peste.
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á bien dentro de esos límites, ¡no se acerque!
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 alcanzas cierto tamaño, todo tu tiempo se utilizará en 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 SObject
genéricos, por lo que es casi imposible construir 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, pareces 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.
Ver mi respuesta en otro hilo de : Desventajas de Force.com:
Desventajas de la plataforma Force.com
a lo que respondí recientemente aunque el hilo era viejo porque solo quería aprovechar la oportunidad para hablar sobre lo molesta que es la plataforma. Esos pensamientos son muy actuales.
Sugeriría que si planea hacer algo con la plataforma, asegúrese de que algunos de los miembros de su equipo tengan certificación Apex. En general, recomendaría evitar totalmente la plataforma hasta que aborden seriamente el lado de la experiencia del desarrollador y donde haya casos de negocios específicos y muy simples.
Mi apodo para la plataforma es "Little Ease", que lleva el nombre de una cámara de tortura de 4x4 en Londres, donde no podía extenderse en una sola dirección. Llegarás a los límites constantemente.
Aquí hay una publicación de blog más antigua: