2011-03-11 20 views
6

Digamos que utiliza varios lenguajes y marcos de programación diferentes en su infraestructura para manejar grandes cantidades de tráfico, etc.lenguaje de programación independiente del modelo de validación

Ejemplo Pila:

  1. servidores API por eventos (usando Scala, Node.js, Ruby EM)
  2. una webapp pila completa estándar (por ejemplo, Pasamanos)
  3. (tal vez más tecnologías)

Al utilizar diferentes idiomas y marcos, generalmente termino duplicando la mayoría de las validaciones del modelo porque cada "punto de entrada del cliente" necesita validar su entrada. Esto es, por supuesto, un dolor mantenerlo sincronizado.

¿Cómo manejarías esto sin algo como CORBA?

Respuesta

6

Su mejor opción sería un marco que le permita especificar la validación del modelo en un formato independiente del idioma, como JSON. Que podría terminar con un esquema de validación de clases, por ejemplo:

{ 
    "name": [ 
    { 
     "validate": "length", 
     "minLength": 6, 
     "maxLength": 10 
    }, 
    ... 
    ], 
    ... 
} 

A continuación, tendría validadores específicos del idioma que se ha podido analizar este formato. Los validadores solo necesitan escribirse una vez, y luego se mantiene un único esquema para cada modelo.

Sin embargo, esto probablemente suena mucho como CORBA/SOAP/Thrift/ProtocolBuffers/etc. en este punto. Eso se debe a que fueron escritos para resolver este tipo de problemas, y terminarás reinventando algunas ruedas si lo escribes tú mismo.

+0

¿Conoce algún marco que admita este tipo de definición de validación? Creo que esta es una gran idea. – tilleryj

+0

@tilleryj No, desafortunadamente. Hice una búsqueda rápida y no encontré ninguna. SOAP tipo de hacer este tipo de cosas, pero eso es en un nivel de interfaz, y a nadie le gusta SOAP. –

+2

su respuesta es bastante buena, pero no pude resistirme - JSON significa Notación de Objeto JavaScript, no mucho agnóstico ... – Bakudan

0

Para agregar a la publicación de @Nathan Ostgard, XML, XSD y, cuando sea necesario, XSLT podría funcionar también. La ventaja de esto sería a) XSD tiene la validación simple incorporada b) la mayoría de los lenguajes tienen un buen soporte para esto c) no tendría que escribir validación en cada idioma; las cosas que no se manejan en el esquema se pueden escribir una vez en XSLT (con la advertencia de que las implementaciones XSLT tienden a variar :))

1

Me gustaría ir en un "diccionario" de expresiones regulares. Las expresiones regulares son compatibles con todos los idiomas que contó, y la traducción de su representación de cadenas de un idioma a otro se puede hacer pasando las expresiones a través de expresiones regulares ...

Según mi observación, es mucho menos Trabajar luego componer un análisis y ejecutar un mecanismo para cada idioma ...

Como se indicó anteriormente, puede guardar este "diccionario" de Reg-Exps en un formato agnóstico, como JSON. Esto limita el trabajo duplicado a - archivo de expresiones de validación que mantenga

  • por lenguaje de programación

    • una fuente:
      • convertidor del archivo principal al formato de la lengua meta
      • mecanismo delgado de
        1. leyendo el JSON,
        2. seleccionando de él los controles configurados
        3. ellos ejecutar
      • casos extremos (si los hay)

    Diviértase :)

  • +0

    Olvidé mencionar la estafa de Reg-Exps: baja legibilidad. A pesar de eso, lo recomiendo encarecidamente. Una vez que te acostumbras, es muy rápido, potente y profesional. –

    0

    Si quiere seguir el camino de validación completa, me gustaría utilizar el jabón . Al menos, mientras tenga librerías SOAP, todo lo que necesita para alimentarlas es el WSDL para sus interfaces.

    Cuestiones relacionadas