De acuerdo a lo que planteas, lo que necesitas es una solución del tipo empresarial con arquitectura cliente-servidor.
Cuando me refiero a empresarial, es que vas a tener que dividir tu aplicacion en capas y niveles. Con respecto a las capas, estas dependerían totalmente del nivel en la que se encuentra.
Yo lo que propondría es la arquitectura por default que da Microsoft en sus guías.
A nivel de cliente, donde están las PCs de los usuarios, desarrollaría dos tipo de aplicaciones cliente:
- Una de escritorio donde implementaría el patrón MVP. Esta iría instalada en cada PC.
- Una aplicacion web con el patrón MVC. Esta seria instalada en un servidor web.
A nivel servidor, en uno o varios servidores, desarrollaría el corazón de la solución empresarial: Una app donde expondría mis servicios, sean de la tecnología que sea: XML, JSON, RPC, WS, etc. y ademas tenga la lógica de negocio del la problemática a resolver y la conexión a base de datos.
La solución tendría que tener, mas o menos, esta estructura.
- Fuentes (carpeta)
- Cliente (carpeta)
- Web (carpeta)
- Modelo (ensamblado/paquete)
- Vista (ensamblado/paquete)
- Controlador (ensamblado/paquete)
- Escritorio (carpeta)
- Modelo (ensamblado/paquete)
- Vista (ensamblado/paquete)
- Presentación (ensamblado/paquete)
- Servidor (carpeta)
- Servicio (carpeta)
- Host (ensamblado/paquete)
- Interfaz (ensamblado/paquete)
- Implementación (ensamblado/paquete)
- Negocio (carpeta)
- Entidades (ensamblado/paquete)
- Fachada (ensamblado/paquete)
- Componentes (ensamblado/paquete)
- Workflow (opcional) (ensamblado/paquete)
- Datos (carpeta)
- Agentes (opcional) (ensamblado/paquete)
- Componentes (ensamblado/paquete)
- Transversal (carpeta)
- Seguridad (opcional) (ensamblado/paquete)
- Comunicación (ensamblado/paquete)
- Pruebas (carpeta)
- Cliente (carpeta)
- Web (ensamblado/paquete)
- Escritorio (ensamblado/paquete)
- Servidor (carpeta)
- Servicio (ensamblado/paquete)
- Negocio (ensamblado/paquete)
- Datos (ensamblado/paquete)
De esta manera tendrás todo separado y sera fácil de mantener.
Con respecto al requerimiento de performance, eso dependerá mucho de como programes tu aplicacion y del hardware para procesar las peticiones de los clientes.
Con respecto al lenguaje de programación, todos son validos. Yo solamente recomendaría los mas populares por una cuestión de que siempre va a haber soporte para estos. Ademas, te seria fácil encontrar librerías y documentación relacionada para poder llevar a cabo tu proyecto.
Espero que te sirva. Saludos!