Melhor maneira passar dados da UI para servidor (e vice-versa)

Estamos pensando na arquitetura de um projeto e agora temos que decidir como os dados serão passados do UI para o back-end (e vice-versa). Como nós não temos muita experiência com JavaScript e outras tecnologias front-end estamos em dúvida de qual a melhor maneira para manter as coisas fáceis para os desenvolvedores do front-end.

Pensamos em um objeto Request genérico para fazer a ponte entre UI/servidor:

public class Request<E, P> {
    private String tenant; // Aplicação é multi-tenant
    private P id;
    private E entity;
    private List<P> ids;
    private List<E> entities;
    private Map<String, Object> params; // Parametros adicionais vao aqui.
    private List<ValidationIssues> validationIssues; // Erros recuperaveis (validacoes e etc) vao aqui..

Eu nao sei se esta é uma boa solução mas o fato é que precisamos de uma maneira generica por que nossos Requests tem mais informação do que simplesmente a entidade a ser salva ou o ID a ser pesquisado.

Eu me pergunto se não seria melhor apenas um java.util.Map com as chaves enumeradas por um enum ao invés deste objeto Request (ou talvez herdar do próprio Map do Java). Pensei nisso depois de ver o objeto Model do Spring MVC.

Ou talvez utilizar web services?

Outra coisa que me preocupa é como este objeto vai ser transformado de JSON (ou qualquer coisa que os devs fron-end decidirem) para os objetos java. Nos queriamos (se possivel) que este objeto fosse independente do framework (Spring MVC e outros).

Gostaria de ouvir conselhos de vcs.

Muito obrigado.