oracle apex - spanish - ¿Por qué usar Oracle Application Express para la aplicación web?
oracle apex español (13)
APEX es un marco que utiliza la base de datos y PL / SQL para producir páginas web. Si puede averiguar cuál será la salida al navegador, puede crearlo en APEX. Si encuentra alguna parte del marco que lo inhibe, puede escribir procedimientos PL / SQL y exponerlos al servidor web directamente, pero aún así aprovechar la seguridad, el registro, el estado de la sesión, etc., que el sistema APEX administra por usted.
Usted debe saber PL / SQL, SQL, HTML, JavaScript y CSS. Seguro que la interfaz parece una aplicación de ingreso de datos grandes, pero los datos que ingreses serán en su mayoría fragmentos de código en cada uno de estos idiomas.
Se escala igual que la base de datos. Normalmente utiliza Apache como servidor web, pero solo se usa para servir archivos estáticos y pasar solicitudes a la base de datos, donde las páginas web son creadas por el código PL / SQL en el esquema APEX. Puede utilizar AJAX para minimizar el tamaño del tráfico que viaja hacia arriba y hacia abajo de la tubería. Puede configurar el almacenamiento en caché para elementos específicos, listas, regiones de página, páginas, etc.
Dado que la mayoría de las cosas son bastante simples de hacer con el marco, naturalmente habrá algunas cosas que son un poco más complicadas de hacer dentro del marco. El ejemplo de codificación de colores dado anteriormente puede ser algo que haga con CSS o tal vez deba recurrir a las declaraciones de impresión para producir el resultado que necesita. Lo importante es aprender cómo el marco facilita la vida y luego, cuando alcanza un límite, puede recurrir fácilmente a métodos más directos.
Viniendo de VB.Net, se perderá la depuración paso a paso y el arrastrar y soltar. Nunca se perderá el hecho de que alguna parte del ciclo de vida de la página hará un enlace y restablecerá los valores que ha vinculado a un objeto en otra parte de la página.
Buena suerte.
Greg
Creo que nos estamos moviendo a Oracle Apex para el desarrollo futuro. He leído sobre Oracle Apex en wikipedia y es pro y con. Me parece que la estafa supera al profesional, pero tal vez me equivoque. Tengo la sensación de que Oracle Apex es para DBA con poco o ningún conocimiento de programación para configurar una aplicación web de forma rápida, como MS Access para programador ninguno.
Si tiene experiencia de trabajo con Oracle Apex, ¿puede compartir su idea? A partir de la entrada de Wikipedia, no parece que necesites saber ningún lenguaje de programación, ¿solo el PL / SQL?
Edición: ¿Oracle Apex es escalable? ¿Puede manejar el tráfico como el tamaño de Facebook?
Edición: después de trabajar casi dos años en Oracle Apex 3.2. Puedo decir con seguridad que lo odio y no veo por qué alguien querría crear una aplicación / página web en el navegador, pl / sql y no hay manera de hacer el control de versiones.
Gracias.
Jack
Disfruté mucho leyendo el hilo de arriba a abajo, ya que se sentía como un debate candente. Para recordar el inicio del hilo, comenzó como "Creo que nos estamos mudando a Oracle Apex para futuros desarrollos ...". Jack era programador de .NET y estaba preocupado por la decisión de su gerencia y pensó en encontrar datos de contador para Oracle Apex. que finalmente terminó lavando la ropa sucia (de todos los marcos web) en público. A pesar del hecho de que la víctima fue Oracle Apex, lo mismo podría suceder con .net o j2ee si el debate fuera entre .net y j2ee gurus. Mi punto es que todos los marcos tienen sus propias ventajas y desventajas. Es por eso que en realidad tenemos tantos. Es una pérdida de tiempo debatir sobre qué es lo más importante para vivir (sexo, comida o agua). Naturalmente, seleccionamos el artículo más apropiado cuando sea necesario.
- Oracle APEX suites para entornos donde tiene muchas bases de datos Oracle y cuando realmente tiene entusiastas de Pl / SQL. Realmente puede crear aplicaciones Web Centric Data Centric ricas y complejas con facilidad (Apex 4.0), pero la depuración y el control de versiones siguen siendo un desastre y también tendrá que atenerse a una base de datos Oracle (sí, puede tener soluciones pero no es robusta).
El sitio de soporte Metalink de Oracle fue escrito en Apex, por lo que definitivamente puede escalar. Sin embargo, ahora están migrando a un nuevo sitio de soporte basado en Flash. Entiendo que adquirieron esa plataforma a través de una adquisición de otra compañía, en lugar de construirla en respuesta a los límites de Apex.
Si quieres "super sexy" con cualquier aplicación web, probablemente necesites Flash / Silverlight / Air. Bajo eso, cualquier sitio basado en HTML, incluido uno de Apex, puede ser preparado con Javascript. La biblioteca JQuery se incluirá en la próxima versión principal de Apex (4.0), aunque ahora puede incluir esa (o cualquier otra biblioteca).
El problema del almacenamiento en caché mencionado en el artículo de Wikipedia se ha solucionado, aunque la mayoría de las instalaciones aún pondrían las imágenes y los scripts en una estructura de directorio convencional en lugar de servirlos fuera de la base de datos.
Mientras está bloqueado en la base de datos Oracle, no obtengo la "plataforma" de bloqueo de "plataforma" en el artículo. Oracle está disponible en Windows, Linux y AIX (entre otros). Eso es mucho menos bloqueo que ASP / SQL Server.
En mi proyecto, usamos Oracle APEX para vistas internas de nuestro sistema. Funciona muy bien para ese propósito.
No se requiere programación. PL/SQL
e incluso SQL
son opcionales. Como resultado, nuestro DBA y nuestro operador pueden moldear la vista a su gusto.
En el lado negativo, si hay una función que necesita que no está programada en el sistema, es muy difícil agregarla. Por ejemplo, queríamos codificar por colores nuestra salida y no hemos podido hacer eso.
No me gustaría tener un sitio orientado al cliente basado en APEX.
Sobre la cuestión de la escalabilidad, una cosa buena acerca de APEX es que está basada en Oracle. Concéntrese en escribir un buen SQL y diseñar las tablas correctamente, y las cosas deberían escalarse bien. Me preocuparía más obtener suficientes usuarios para que la escalabilidad sea el problema.
Estoy en desacuerdo. No solo es adecuado para desarrolladores con algunas habilidades de desarrollo o DBA.
En realidad, producimos aplicaciones altamente personalizadas utilizando nuestras propias plantillas de CSS, muchas acciones dinámicas e interacción (utilizando jQuery y varios marcos), seguridad ajustada, nuestros propios complementos de vértice y complejos procesos PL / SQL.
Por supuesto, estoy usando apex> 4.0.
Por lo tanto, puede crear aplicaciones complejas (tenemos hasta 100 procesos / validaciones diferentes y acciones dinámicas por página) si es necesario. Y podría requerir fuertes habilidades de programación para codificar correctamente en javascript y PL / SQL (OOP) o procedimientos almacenados Java + un buen conocimiento de SQL para definir consultas optimizadas de hasta 500 líneas de código usando SQL recursivo y algunas características divertidas.
Estoy involucrado en un gran proyecto para migrar una aplicación de Oracle Forms de 5000 módulos a APEX. Este es un uso extremo de APEX, pero está funcionando bien. Es un completo mito que APEX es adecuado solo para pequeñas aplicaciones internas creadas por administradores de bases de datos, internos o usuarios finales: ciertamente es adecuado para esas también (y más adecuado que la mayoría de las otras herramientas), pero también se puede utilizar para construir extremadamente sofisticado aplicaciones
Para crear una aplicación sofisticada (en lugar de una APEX predeterminada predeterminada) necesitará a alguien en el equipo con habilidades de Javascript, y alguien con habilidades de CSS. Pero la mayoría de los desarrolladores solo necesitarán PL / SQL inicialmente.
¿Es escalable? Sí: ¡probablemente más escalable que la mayoría de las otras soluciones! APEX agrega muy poca sobrecarga al servidor de base de datos, y solo se requiere el mínimo de servidores de aplicaciones. "Tamaño de Facebook"? No lo sé con certeza, pero no veo por qué no, asumiendo que tiene una base de datos Oracle en una máquina lo suficientemente grande y poderosa para manejar los volúmenes de datos y transacciones de "tamaño de Facebook". Como cualquier proyecto de Oracle, la escalabilidad se ve obstaculizada principalmente por diseños de bases de datos incorrectos y SQL mal escrito, no por la herramienta. Sin embargo, no mucha gente se encuentra construyendo sistemas de "tamaño de Facebook": ¿verdad?
Leí esta página con gran interés. Nuestro equipo de desarrollo ha estado utilizando Apex durante aproximadamente 2 años, y me gustaría resumir nuestra experiencia.
Para la construcción de aplicaciones CRUD básicas, Apex es realmente excelente. De hecho te recomiendo que lo pruebes tú mismo. Nos enfrentamos a algunas dificultades iniciales menores para configurarlo, pero parece que se solucionaron en la versión 3.2.
El bueno
- Ideal para aplicaciones simples. Si su aplicación crecerá en complejidad, considere una solución alternativa.
- Las plantillas integradas significan que su aplicación parece bastante profesional (aunque algunos debatirán esto).
- Un buen foro de apoyo y una comunidad, con un montón de personas ansiosas para ayudarlo.
- Algunos soberbios controles incorporados. Me encantan los gráficos y los informes (pero ver más abajo).
El malo
El depurador es abismal. Si ha utilizado Visual Studio (e incluso versiones antiguas de Microsoft Access), se estremecerá ante el depurador. No hay puntos de interrupción, los mensajes de depuración se proyectan en la pantalla en una lista grande y se tienen que imprimir manualmente los mensajes de depuración en la pantalla. Horrible. La causa de muchas, muchas horas perdidas para apoyar.
Tan pronto como su aplicación se vuelva compleja o requiera una funcionalidad rica, tendrá que recurrir a hacks de Javascript y HTML / CSS, lo que hace que la depuración y el soporte sean aún más complicados (aunque puede usar herramientas como Firebug o Visual Studio para ayudarlo).
Hemos encontrado errores de estado de sesión inexplicables y las hojas de estilo se han "desapegado" de la aplicación sin explicación, para mencionar un par de problemas.
El soporte de aplicaciones desconocidas puede ser desafiante, ya que puede ser difícil seguir el flujo lógico de la página sin un buen depurador. Y no compro la respuesta de "bueno: las aplicaciones deberían codificarse mejor". Porque en el mundo real, no lo son, especialmente cuando estás usando un contratista.
Los informes se ven bien pero no mucho si no puede imprimirlos o exportarlos a PDF. Por supuesto que puede desembolsar un servidor de informes, al final usamos otra solución.
En general
Yo diría que, por supuesto, use Apex para aplicaciones CRUD simples. Para cualquier cosa de complejidad más que leve, vaya para .Net o Java. No me gustaría ver el artículo de Wiki en Apex ya que está muy sesgado. Observe cómo se ha borrado del artículo ''difícil de depurar'' (en mi opinión, la falla más grande).
También hay que tener mucho cuidado con la ridícula afirmación de que puede convertir rápidamente las bases de datos de Access directamente a Apex. Sí, funcionará si Access DB es muy, muy simplista. Cualquier cosa moderadamente compleja, olvídalo, como encontramos.
Definitivamente no lo usaríamos para aplicaciones web, solo internas. Simplemente hay demasiadas dificultades para hacer las cosas que darías por sentado, por ejemplo, .Net. Sé que hay sitios por ahí como AskTom, pero estos no son exactamente complejos. ¿Veremos el próximo Facebook en él? Creo que no, aunque estoy seguro de que alguien que lea esto tendrá un problema.
Apex se resume en un comentario anterior: los gerentes ven las demostraciones y compran rápidamente, convencidos de que han encontrado una bala de plata que reducirá los tiempos de desarrollo. He tenido gerentes que me han llamado y me han dicho que necesitamos una aplicación de base de datos con 40 mesas construidas en una semana en Apex, por favor, hasta aquí ha perpetrado el mito. La realidad es algo diferente. Sí, algunas cosas son más rápidas, sustancialmente más rápidas, pero perderá el tiempo en otras áreas: depuración, asistencia y personalización.
Por supuesto que es mejor decidir por ti mismo. Instálalo, pruébalo, te puede gustar. Pero no se deje engañar por los rápidos reclamos de tiempo de desarrollo hasta que le haya dado una buena idea sobre una aplicación realista.
No estoy seguro de por qué no considera PL / SQL como un lenguaje de programación ...
APEX es ideal para aplicaciones internas en las que desea una IU liviana sobre sus datos. Puedes construir eso bastante fácilmente sin tener que escribir ningún código.
También encuentro que APEX es muy bueno para desarrollar aplicaciones más pequeñas orientadas al cliente. No me gustaría crear una aplicación gigante que tenga a cientos de desarrolladores trabajando con APEX. Pero si tiene un caso en el que 3 o 4 desarrolladores están construyendo un sitio pequeño, es probable que APEX sea tan bueno como Java / PHP / ASP.Net / lo que sea que suponga que se trata de desarrolladores igualmente expertos. Si todos sus desarrolladores tienen mucha experiencia en ASP.Net, por ejemplo, tendrán una curva de aprendizaje para escribir aplicaciones APEX. Sin embargo, tendría al menos el mismo nivel de dificultad si tuviera un grupo de desarrolladores PL / SQL que intentaran aprender cómo construir sitios ASP.Net.
No pongas lógica de negocios en Apex. Úsalo sólo para presentación.
Si coloca el código en la aplicación, no podrá mantenerlo y obtendrá RSI de todo lo que haga clic. Siempre creo una capa de envoltorio, y en el mundo de Oracle sigue el consejo de Tom Kytes: coloque la lógica de negocios lo más cerca posible de los datos. Esto también significa que sus módulos PL / SQL pueden ser llamados por otros sistemas, etc., y lo mejor de todo, la verdadera fuente de su aplicación será en archivos de texto directo que pueden ser manipulados con su editor de texto favorito / IDE.
- Cree una vista con todos los datos que se recuperarán para cada pantalla.
- Cree un único paquete contenedor para todas las operaciones CRUD. (Eso es Crear, Leer, Actualizar y Eliminar, supongo)
En breve:
NO PONGA SU APLICACIÓN LÓGICA EN APEX.
Ese es mi consejo. . . .
Si desea ver un sitio web externo realizado en APEX, le sugiero que visite el sitio del Grupo de Usuarios de Herramientas de Oracle , o Pregunte a Tom . Ambos son sitios grandes, de uso frecuente y con mucha personalización.
Su impresión del artículo de Wikipedia es correcta. El único conocimiento de programación que necesita es PL / SQL. Si la mayoría de su sitio serán informes simples, ni siquiera necesita escribir las consultas SQL, y la interfaz del asistente creará la consulta y el resultado para usted. Si desea un buen trabajo del lado del cliente, deberá conocer CSS y Javascript. El PL / SQL es solo para la validación de datos más complejos.
Soy un DBA y nunca tuve que programar con APEX ni recientemente (aparte de algunos scripts bash y scripts SQL personalizados para fines de administración) porque mi trabajo está muy lejos de desarrollar aplicaciones (excepto ser un problema para los desarrolladores). . Sin embargo, mi experiencia es de desarrollador y creo que APEX es el futuro para los programas centrados en datos estrictamente basados en Oracle.
Ahora, la palabra clave aquí está centrada en los datos, ya que no estoy de acuerdo con muchos otros DBA de que todas las aplicaciones están centradas en los datos (usted sabe el tipo de DBA que aún piensan que ODBC significa ORACLE Database Connectivity). Por supuesto, todas las aplicaciones involucran datos, pero ¿todas las aplicaciones están centradas en los datos? Dudo, al igual que dudo que APEX se use alguna vez para el procesamiento de imágenes o aplicaciones de juegos móviles. Sin embargo, a pesar de todas las exageraciones con RIA y Web 2.0, el hecho es que la mayoría de las empresas que nos rodean están ansiosas por las aplicaciones centradas en los datos, y Oracle es la mejor base de datos, y puedo asegurarle que Oracle y APEX pueden manejar mucho más que la escalabilidad de Facebook. siempre que haya puesto la misma cantidad de dinero que los chicos de Facebook en la infraestructura subyacente.
Por cierto, también odio el diseño de Oracle de los temas APEX (IU no profesional profesional, imagínese que es la UI principal para un banco o una compañía aérea), capacidades limitadas (aunque eso parece cambiar en el futuro), muchos más problemas (profesionales Informes en PDF sin tener que pagar la cantidad de la licencia de la base de datos de empresa para el editor de BI ??), pero sobre todo la comercialización de APEX como sustituto de Access o Excel porque da la mala impresión de que es para los niños y puedo asegurarle, amigo mío, que nunca permitiría que los niños lo hagan. toca mis bases de datos :)
Verá, Oracle tiene una gema llamada PL / SQL que se perfeccionó a lo largo de los años para manejar los datos de una manera mucho más intuitiva que cualquier otro lenguaje. Ahora que la gema se está marchitando con la lenta muerte de Forms / Reports y estoy seguro de que ningún nuevo graduado se molestará en aprender estrictamente para los procedimientos almacenados de la base de datos (solo vea la guerra furiosa entre los desarrolladores de Java y .Net y se dará cuenta de que una vez que toca los corchetes) {} cualquier otra cosa se convierte en una herejía). Por desgracia, para miles y miles de excelentes desarrolladores de PL / SQL, APEX sigue siendo el único santuario en el que pueden seguir siendo productivos y desarrollar aplicaciones destacadas centradas en datos, y sin APEX PL / SQL seguramente se convertirá en el próximo COBOL. Esta es la razón por la que la comunidad PL / SQL impulsará a Oracle a transformar APEX en una plataforma de grado A mucho más poderosa de lo que estamos viendo hoy. O eso o decir adiós a PL / SQL y unirse a los paréntesis (por cierto, nunca es una mala idea probar al menos diferentes tecnologías cuando eres desarrollador, al menos tienes una idea de por qué no es necesariamente más ecológico en el otro lado).
Tenga en cuenta que mis experiencias son con APEX 2.x-3.0.
Utilicé Apex para algunas aplicaciones internas durante un período de 12 meses, pero finalmente lo descarté para ASP.NET.
Algunos evangelistas de Oracle afirman que es capaz de crear contenido altamente dinámico a la par con los marcos más comunes como ASP.NET/J2EE. Técnicamente esto es cierto, pero técnicamente también es cierto que se podría cruzar el atlántico en una canoa de un solo hombre. Si está tentado a lanzarse a un proyecto APEX de complejidad moderada, le sugiero que mire la muestra APEX de un foro de discusión simple . Compárelo con un ejemplo de foro de discusión MVC de ASP.NET o una implementación de RoR.
Una vez dicho esto:
El bueno
Increíblemente fácil generar una aplicación web respetable con entrada de datos CRUD básica, informes simples y llenarla con datos. Si usted es el tipo de TI al que se le ha asignado la tarea de consolidar el desorden de Excel / Access dbs de una empresa en un entorno central de base de datos / web, debería echar un vistazo a APEX, es muy adecuado para esta tarea. Si espera que el alcance crezca hasta una complejidad moderada, entonces me movería directamente a un marco más flexible.
Si usted es un gurú de DBA / PLSQL pero no tiene experiencia con el desarrollo web tradicional, estará preparado para exponer la lógica de negocios existente en una aplicación web sin rellenar con HTML / CSS / JavaScript si no lo desea.
El foro de soporte de APEX tiene un montón de información y está bien formado por desarrolladores de APEX.
El malo
Mi experiencia con Apex comenzó a ir cuesta abajo cuando las aplicaciones se movieron más allá de la entrada de datos CRUD y requirieron comportamientos más dinámicos e impulsados por eventos.
La interfaz gráfica de usuario basada en la web no es genial. La depuración es dolorosa.
¿Control de versiones? ¿Quién necesita el control de versiones?
Cuando (inevitablemente) necesita hacer algo fuera del ámbito limitado del marco, deberá ensuciarse las manos con PL / SQL. Escribir lógica de negocios en la base de datos está bien, pero generar HTML a partir de procedimientos PL / SQL se sintió incómodamente arcaico en 2007.
Dada la gran cantidad de lugares disimulados que puede ocultar la lógica de la página y la redirección, el flujo del programa es difícil de visualizar y no conduce naturalmente a código modular, separable y reutilizable. Los desarrolladores de OOP no estarán impresionados. Es posible tener aplicaciones mantenibles bien estructuradas con APEX, pero es más difícil de lo que debería ser. Esto es mundos lejos de MVC.
Número inaceptable de errores de marco en las versiones que utilicé. Espero que esto haya mejorado con las versiones recientes, pero el paradigma de integrar el IDE en la plataforma APEX en sí mismo me provocó algunas de las sesiones de depuración más oscuras y destructoras de mi vida . Como ejemplo, intentaba reproducir un error intermitente que haría que un usuario perdiera sus datos de sesión. Usando la ventana emergente de información de la sesión, vi que ocasionalmente los datos de la sesión cambiarían cuando no debería haberlo hecho. Pasé 2 días tratando de encontrar el error en mi código sin suerte. Casi delirante, me di cuenta por pura casualidad de que podía reproducir datos de sesión erróneos en la ventana de depuración, pero la aplicación en sí no entraría en un estado de error . Mi corazón se hundió cuando me di cuenta de lo que podría estar pasando. Oracle confirmó más tarde que había encontrado un error en APEX que hacía que la ventana de información de la sesión me mostrara intermitentemente los datos de una sesión anterior. Perdí 2 días depurando un error relacionado con la sesión con una ventana de depuración de sesión con errores. Esa fue la última aplicación de Apex que construí.
PL / SQL no es y nunca será la próxima gran cosa en el desarrollo web. Después de trabajar con APEX por un tiempo, me di cuenta de que no iba a hacerme un mejor desarrollador web. Dominar APEX es realmente acerca de PL / SQL. Está bien si planea centrar su carrera en la tecnología Oracle, solo tenga en cuenta que APEX es tan tangencial a la dirección de las tecnologías web convencionales que el conjunto de habilidades portátiles que puede llevar de APEX a otros marcos web es mínimo.
Si está considerando APEX para proporcionar un ingreso de datos y reportes simples basados en la web, vale la pena verlo. Si está buscando una alternativa a .NET / JAVA / PHP para contenido web dinámico y una rica interacción de UI, le aconsejo que busque en otra parte.
Que Apex solo sea adecuado para no programadores y DBA es un error desafortunado. Lo hemos utilizado para crear varias aplicaciones web de línea de negocio, de misión crítica y orientadas al cliente.
La GUI es manejada por las plantillas de página de Apex (HTML), CSS y un poco de Javascript para mejorar la experiencia del usuario. Toda la lógica de negocios se coloca en los paquetes PL / SQL. Esta es la clave para hacer que su aplicación sea fácil de mantener y reutilizar la lógica de negocios en otras aplicaciones Apex y de otras herramientas cliente, como C # WinForms, Delphi, aplicaciones Java, etc.
En cuanto al rendimiento, el motor de Apex agrega poca sobrecarga y los tiempos de respuesta y escalabilidad de su aplicación dependen en gran medida de la calidad de sus consultas SQL (y del modelo de datos). Piénselo de esta manera: con Apex, lo único entre su usuario y la base de datos es una capa delgada de PL / SQL. Es de sentido común que esto tiene que ser más rápido que una aplicación típica de .NET o Java que tiene diecisiete capas de complejidad (que generalmente incluye muchos servicios web y capas de mapeo objeto-relacionales) entre la GUI y la base de datos.