Pregunta

Actualmente estamos buscando en el uso de la Force.com plataforma como plataforma de desarrollo y las ventas de los chicos y el force.com sitio web están llenos de razones por las que es la mejor plataforma en el mundo.Lo que estoy buscando, sin embargo, es real algunas desventajas para el uso de dicha plataforma.

¿Fue útil?

Solución

Aquí están 10 para empezar.

  1. Apex es un lenguaje propietario. Aparte de la force.com Eclipse plug-in, hay poca o ninguna herramientas disponibles, tales como refactorización, análisis de código, etc.
  2. Apex fue modelado en Java 5, que se considera a la zaga de otros idiomas, y sin herramientas (ver # 1), puede ser bastante engorroso.
  3. El despliegue es todavía bastante manual con un montón de trampas y pasos manuales. Esta situación está mejorando lentamente con el tiempo, pero usted será decepcionado si estás acostumbrado a tener implementaciones automatizadas.
  4. Apex carece de paquetes / espacios de nombres. Todas sus clases, las interfaces, etc. viven en una carpeta en el servidor. Esto hace que el código mucho menos organizado y nombres de clase / interfaz necesariamente largo para evitar conflictos de nombres y para proporcionar contexto. Esta es una de mis mayores quejas, y yo no elegiría libremente para construir sobre force.com sólo por esta razón.
  5. El "IDE force.com", también conocido como force.com Eclipse plug-in, es increíblemente lento. Ahorro de cualquier archivo, ya sea un archivo de clase, archivo de texto, etc., por lo general tarda al menos 5 segundos y, a veces hasta 30 segundos dependiendo del número de objetos, tipos de datos, archivos de clase, etc., son en su org. El ahorro es también una acción de bloqueo, lo que requiere no sólo la compilación, pero una sincronización completa de su proyecto local con el servidor. Órdenes de magnitud más lento que Java o .NET.
  6. La comunidad de desarrolladores en línea no parece muy saludable. Me he dado cuenta de un montón de mensajes en el foro sin respuesta o sin resolver. Creo que esto puede tener algo que ver con el software de foros utiliza salesforce.com, que parece bastante difícil aspirar.
  7. El DSL acceso a datos en Apex deja mucho que desear. No es ni remotamente competitiva con los gustos de (N) Hibernate, JPA, etc.
  8. El desarrollo de una aplicación en Apex / Visualforce es un ejercicio de ingeniería límites gobernador. Fácilmente la mitad de tiempo programador está dedicado a tratar de optimizar para evitar los numerosos límites gobernador y otros aspectos críticos como los límites de estado de vista Visualforce. Se podría argumentar que si se escribe un código eficiente, para empezar no tendrá este problema, que es verdad hasta cierto punto. Sin embargo hay muchas veces que usted tiene razones válidas para hacer más de x en una sesión de consultas, o bucle a través de más de un número x, etc.
  9. El ciclo Guardar-> de compilación> ejecutar es extremadamente lento, esp. cuando se trata de comprimir y subir todo el paquete de recursos estáticos sólo para hacer algo como prueba de un menor CSS o Javascript cambio.
  10. En general, el dolor de una plataforma incipiente joven sin los beneficios de que sea de código abierto. Usted no tiene manera de validar y / o corregir errores en la plataforma. Dicen que publicarla en su IdeaExchange. Sí, buena suerte con eso.

Renuncias / revelaciones: Hay un montón de ventajas a una plataforma alojada como force.com. Force.com sí beneficia la regularidad de la plataforma. Hay un montón de cosas sobre él que me gustan. Hago edificio de dinero en force.com

Otros consejos

veo que haya recibido algunas respuestas, pero me gustaría reiterar cuánto tiempo se desperdicia moverse por los diferentes límites gobernador en la plataforma. Por mucho que me gusta la plataforma en ciertos niveles, habría muy fuerte, muy enfáticamente recomendaría contra como una plataforma de desarrollo de aplicaciones en general. Es grande como una aplicación CRM muy configurable y extensible, si eso es lo que quiere. Mientras que su comercialización es excepcional a empujar la idea de Force.com como plataforma de desarrollo en general, no es ni remotamente cerrar todavía.

La eficiencia de tener una plataforma estable y evitar de rendimiento y estabilidad grandes problemas se desperdicia fácilmente al tratar de codificar en torno a los límites que se refieren a las personas. Hay tantos límites a la plataforma, se vuelve completamente enloquecedor. Estos límites no son límites de gama alta que va a golpear una vez que tenga una gran cantidad de usuarios, llegarás a ellos casi de inmediato.

Si bien a menudo las técnicas de conseguir alrededor de ellos, es muy difícil averiguar las estrategias para evitarlos mientras que también se está tratando de desarrollar la lógica de negocio de su aplicación real.

Para darle un sentido simple de cómo desarrollador no-amigable al medio ambiente es, tomar la "falta de entorno de depuración" anteriormente mencionada. Es peor que eso. Sólo se puede ver hasta el 20 de los más recientes peticiones al servidor en los registros de depuración. Por lo tanto, como se está desarrollando dentro de la aplicación que tiene que crear una solicitud de depuración "Nuevo", seleccione su nombre, pulsa "Guardar", cambiar de nuevo a su aplicación, actualizar la página, haga clic de nuevo a la pestaña de depuración, tratar de encontrar la solicitud que albergará el registro de depuración, pulsa "buscar" para buscar el texto que está buscando. Es como diez clics para mirar a una salida de depuración. Si bien puede parecer trivial, es sólo un ejemplo de cómo poco cuidado y se ha prestado atención a la experiencia del desarrollador.

Todo sobre la plataforma de desarrollo es una idea de último momento injertados. Es notable por lo que es, sino un PITA total para la mayor parte. Si usted no sabe exactamente lo que está haciendo (como en el que está autorizado y tener un conocimiento muy íntimo de Apex), será fácil que tomar más de 10-20x la cantidad de tiempo que sería en otro entorno que hacer algo que parece como que sería ridículamente simple, si es que se puede tener éxito en absoluto.

Los límites del regulador son de hecho tan mal. Usted tiene una combinación de varios límites (consultas de bases de datos, filas devueltas, "sentencias de script", las futuras llamadas, llamadas, etc.) y usted tiene que saber exactamente lo que está haciendo para evitar estos. Por ejemplo, si tiene un campo calculado acumulativo de "fórmula" en un objeto y tiene un disparador en un objeto secundario, ejecutará los disparadores objeto padre y contar aquellos en contra de sus límites. Ese tipo de cosas no son evidentes hasta que haya pasado por el doloroso proceso de intentar y fallar.

Vas a intentar una cosa para evitar un límite, y golpeó a otro en un juego interminable de "golpe un límite". En el proceso que tendrá que volver a diseñar drásticamente toda su aplicación y enfoque, así como volver a escribir todo el código de prueba. Usted debe tiene el 75% de cobertura de código de prueba para desplegar en la producción, que en realidad es algo muy bueno, pero combinado con todos los otros límites, es muy oneroso. Que realmente va a golpear límites gobernador o escritura de código de prueba que no surgir en escenarios de los usuarios normales, pero que evitará que el logro de la cobertura.

Eso no es hablar de toda una serie de otros temas. El envase no es lo que esperas. No se puede empaquetar su aplicación y entregarla a los usuarios sin intervención del usuario y la configuración significativa por parte del administrador de la org. AppExchange es una broma total y que incluso he comenzó a cobrar 5K sólo para obtener su aplicación en la lista. Importación con el cargador de datos chupa, sobre todo si tiene alguna desencadenantes. No se puede exportar todos sus datos en un solo paso queincluye sus relaciones en una forma tal que puede ser fácilmente re-importa en otro organigrama en un solo paso (por ejemplo, una org dev). Sólo se puede actualizar una caja de arena una vez al mes a partir de la producción, sin excepciones, y no se puede incluir sus datos en una actualización por defecto a menos que haya llamado a su ejecutivo de cuenta para obtener esa característica desbloqueado. No se puede eliminar la masa de datos en objetos personalizados. No se puede cambiar sus nombres de paquetes. Ciertas cosas pueden tomar numerosas días para completar después de haberlos solicitado, tales como copia de seguridad de datos antes de que desea implementar una aplicación, sin informe de progreso en el camino y no hay mucho sentido de cuándo exactamente la exportación ocurrió. Dado que hay cuestiones sincronía de datos si existen relaciones entre los datos, existen problemas de integridad de datos graves en que no hay tal cosa como una "transacción" que puede exportar numerosos objetos en un solo paso. Probablemente hay algunas herramientas comerciales para facilitar algo de esto, pero estos no están al alcance de los desarrolladores normales que pueden no tener un gran presupuesto.

Todo lo demás las otras personas dijeron que aquí es cierto. Se puede tomar de cinco segundos a un minuto veces para guardar un archivo.

No me refiero a ser tan negativo porque la plataforma es muy fresco en algunos aspectos y que están tratando de hacer las cosas en un entorno multi-inquilino que nadie más lo está haciendo. Es un ambiente muy innovador y de gran alcance en algunos niveles (de hecho me gusta Visualforce mucho), pero le dan uno o dos años. Están asociación con VMware, tal que dará lugar a dando a los desarrolladores un poco más de un corralito en lugar de una celda de la cárcel para trabajar.

Aquí hay un par de cosas de las que puedo dar a usted después de pasar un poco justo de tiempo de desarrollo en la plataforma en los últimos quince días o así:

  1. No hay una API RESTful.Tienen un jabón basado en la API que se puede llamar, pero no hay manera de hacer un verdadero descanso llamadas

  2. No hay ninguna manera sencilla de tomar sus Businessobjects y convertirlos en objetos JSON.

  3. La fuerza visual de las páginas están bien hasta que desee para personalizar y, a continuación, todo un mundo de dolor.

  4. Fuerza Visual de las páginas deben estar enlazado a Businessobjects lo contrario no hay manera de conseguir el estándar de los campos de entrada como el selector de fecha, o seleccione lista para trabajar.

  5. El plugin de eclipse es aceptar si desea que el trabajo por ti, pero si quieres trabajar en un gran equipo con el plugin de eclipse para olvidar.No controla la sincronización de a y desde el servidor, se bloquea y no es realmente útil a todos.

  6. NO HAY NINGÚN DEPURADOR!Si desea depurar, es, literalmente, depurado por el sistema.depuración de las declaraciones.Este es probablemente el mayor problema que he encontrado

  7. Su "MVC" el modelo no es realmente MVC.Es mucho más cerca de ASP.NET Webforms.Sus opiniones están estrechamente vinculadas no sólo a los modelos, pero el de los controladores.

  8. Almacenar un gran número de documentos no es factible.Necesitamos almacenar más de 100 gb de documentos y nos citaban algunos cifra ridícula.Hemos decidido implementar nuestro documento de almacenamiento de amazon S3 infraestructura

  9. Incluso aunque el lenguaje está basado en java, no es java.No se puede importar cualquier externa paquetes o librerías.También, la base de las bibliotecas que están disponibles son muy limitados, así que nos hemos visto la implementación de un montón de cosas externamente y, a continuación, exponer los bits como la de los servicios a los que llama force.com

  10. Usted puede llamar externo de JABÓN o de los servicios basados en REST, pero el cuerpo del mensaje está limitado a 100 kb, por lo que es muy restrictiva en lo que se puede llamar.

Con toda honestidad, mientras que hay beneficios potenciales para el desarrollo en algo así como el force.com la plataforma, para mí, usted no puede usar el force.com plataforma para el verdadero nivel de la empresa, aplicaciones.En el mejor de los que usted podría escribir algunos crud básicos de las aplicaciones estilo, pero una vez que usted se mueve en nada remotamente complicado me gustaría evitar como la peste.

Caramba, hay mucho aquí que yo ni siquiera sabía que eran limitaciones -. Después de trabajar en la plataforma durante unos años

Pero sólo para añadir algunas otras cosas ...

La razón por la que no tiene un depurador de línea a línea, es precisamente porque es una plataforma multi-inquilino. Al menos eso es lo que dice SFDC - parece que en esta era de la programación hilo ricos, que no es mucho de una excusa, pero eso es al parecer el motivo. Si tiene que escribir el código, usted tiene "System.debug (cadena)" como depurador -. Recuerdo haber tenido más sofisticadas herramientas de depuración del servidor en Java 1.2 hace unos 12 años

Otra cosa que me gusta sobre el sistema de control de versiones es. El marco de la primavera no se utiliza para lo que la primavera se suele utilizar para - es realmente más de una herramienta de configuración en SFDC en lugar de control de versiones. SFDC proporciona ZERO versión de control.

Puede encontrarse atrapado durante días haciendo algo que debería parecer tan ridículamente fácil, como, por ejemplo, la programación de un informe SFDC para exportar a un archivo CSV y de correo electrónico a una lista de destinatarios ... Bueno, acerca de la forma más fácil de hacer esto es crear un objeto con un campo de costumbre, con una regla de flujo de trabajo y una plantilla de correo electrónico Visualforce ... y luego para el código que necesita para escribir un componente Visualforce que transmite los datos del informe a la plantilla de correo electrónico como archivo adjunto Visualforce y APEX escribir código de campo horario de actualización anónimo del objeto personalizado ... para los desarrolladores SFDC, esto es casi una tarea diaria ... tratando de poner unos cinco tecnologías diferentes juntos para realizar las tareas que parecen tan simples .... y esto puede causar problemas de administración y las tensiones también - por lo general, que iba a encontrar esto después de conseguir una sugerencia para hacer algo que no funciona en la comunidad de usuarios (como si alguien ya se ha dicho), y después de probar muchas cosas que, después de que los desarrollaron que iba a encontrar que simplemente no funcionan durante tanto Me extraña bola razón -. como "no se puede programar una página Visualforce", o "no se puede llamar desde un contexto getContent planificable" o alguna otra razón arcano

Hay muchos, muchos pequeños enloquecedoras gotcha en la plataforma SFDC, que una vez que usted sabe por qué están ahí, tiene sentido ... pero siguen siendo muy malas limitaciones que le impiden hacer lo que necesita hacer. He aquí algunas de las minas;

  1. No se puede obtener el registro de información de propietario "fuera de la caja" en casi cualquier tipo de registro - usted tiene que escribir un disparador que une el propietario en el registro de crear al registro que está insertando . ¿Por qué? Respuesta corta debido a un propietario puede ser una "persona" o una "cola", y los dos son entidades drásticamente diferentes ... tiene sentido, pero se puede convertir un proyecto literalmente al revés.

  2. modelo de seguridad enloquecedor. Ejemplo:. "Administrar informes Pública" permiso es muy diferente de "Crear y personalizar los informes" y que, básicamente, va por todo en la plataforma ... especialmente las carpetas de cualquier tipo

  3. Como se ha mencionado, el apoyo es prácticamente inexistente. Si usted es una persona muy autosuficiente, o tienen una gran cantidad de recursos SFDC, o tener un montón de tiempo y / o un gerente muy indulgente, o están a cargo de un sistema de SFDC que está trabajando bien, estás en muy buena forma. Si no está en cualquiera de estas posiciones, usted puede encontrarse en serios problemas.

SFDC es una propuesta de negocio muy seductora ... ningún equipo de la huella, bastante buena seguridad, precio fijo, sin infraestructura, y se obtiene CRM basado en web con procesable por lotes, y el procesamiento schedualble ... Pero como decían los otros carteles, es realmente una aceleración en el aprendizaje de desarrollo, y si vas con la consultoría, creo que el precio más bajo que he visto fue de $ 200 / hora.

Salesforce tiende integrar con otras cosas años después de algunas tecnologías se convierten en un lugar común - JSON y jQuery vienen a la mente ... y si tiene otras infraestructuras comunes que desea hacer una integración con, como JIRA, a pagar unalote extra, y pueden ser muchos errores.

Y como uno de los otros carteles mencionado, que está luchando constantemente límites gobernador que sólo te puede volver loco ... un accesorio no puede ser> 5 MB. Período. Y a veces <3 MB (si codificado base 64). Diez llamadas HTTP en una clase. Período. Hay límites de gobernador publicado decenas, y muchos que no, que va, sin duda, encontrar y sólo quieren correr fuera de su oficina son gritos.

Realmente, me gusta mucho la plataforma, pero confía en mí - que puede ser una amante muy cruel.

Sin embargo, para ser justos con SFDC, que diría esto: el mayor problema que encuentro con la plataforma no es la propia plataforma, pero las expectativas enormes que casi cualquier persona que ve la plataforma, pero no se ha desarrollado en él tiene. ... y esas personas tienden a estar en posiciones de gran autoridad en las organizaciones empresariales; marketing, ventas, gestión, etc. Grandes desconexiones se producen y rodar cabezas, o están amenazadas a rodar todos los días - todo porque hay esta gran plataforma por ahí con trampas extrañas y miles de personas que luchan todos los días para conseguir sus cabezas alrededor de por qué las cosas deben trabajar cuando simplemente no lo hacen y no lo hará.

EDIT:
Sólo para añadir a los comentarios de lomaxx sobre el MVC; En la terminología SFDC, esto está estrechamente relacionado con lo que se conoce como el "viewstate" - A y que puede ser muy errores, en que lo que está en la página VF es no lo que está en la clase controlador de la página. Por lo tanto, usted tiene que Pasar por giros extraños para sincronizar lo que esta en la página con lo que el controlador se va a escribir en SF cuando hace clic en el botón "Guardar" (o hacer su llamada HTTP o lo que sea) .... hombre, es molesto .

Creo que otras personas han cubierto las desventajas en más profundidad, pero a mí, no parece utilizar el paradigma MVC o apoyar mucho en el camino de la reutilización de código. Para hacer cualquier cosa más allá de simples aplicaciones es un ejercicio de frustración en comparación con el desarrollo de una aplicación usando algo como ASP.Net MVC.

Además, las herramientas, la capa de datos y la frustración de tratar de cambiar el nombre de refactorizar código o campos durante el proceso de desarrollo no ayuda.

Creo que como un CMS que es muy bueno, pero como una plataforma para aplicaciones que no son CMS, es que no tiene sentido para mí.

El modelo de seguridad también es muy muy restrictiva ... pero esto no es lo peor. Actualmente no se puede afirmar si un usuario tiene la capacidad de realizar una acción en particular.

Puede comprobar para ver cuál es su papel, pero no se puede comprobar si ese papel tiene permiso para realizar la acción actual.

Lo que es peor es la respuesta de soporte técnico de "probar la acción y si hay una excepción, atraparlo"

Teniendo en cuenta Force.com es una plataforma de "nube", su capacidad de actuar como un cliente para un servicio WSDL definidos externa es bastante decepcionante. Ver http :. //force201.wordpress.com/2010/05/20/when-generate-from-wsdl-fails-hand-coding-web-service-calls/ por lo que podría llegar a tener que hacer

Para todo lo anterior, tengo curiosidad de cómo la liberación de VMforce, permitiendo programador de Java para escribir código para Force.com, cambia las desventajas arriba?

http://www.zdnet.com/ blog / SAAS / vmforcecom-redefine-la-FCA-paisaje / 1071

supongo que están tratando de hacer frente a estos problemas. En Dreamforce mencionaron que estamos tratando de soltar los límites gobernador que solamente 4. No estoy seguro de lo que son los detalles. Tienen una API REST para el acceso temprano, y se compró heroku que es un desarrollo de rubí en la nube. Se separaron a cabo la base de datos, con database.com para que pueda hacer todo su desarrollo web en su base de datos y llamadas utilizando database.com.

supongo que están tratando de hacerlo lo más agnóstico como sea posible. Pero justo ahora estos son todos los anuncios y el acceso temprano así como sus estados de puerto seguro no compran en lo que dicen, sólo en lo que tienen actualmente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top