Pular para o conteúdo principal

Postagens

Mostrando postagens de maio, 2010

bla-bla-bla do JAX-RS não me impressiona

Está irritante ler o Java EE 6 Tutorial sobre RESTful web services. A interpretação que o texto dá para REST é um amontoado de lixo sobre o conceito original. O texto constrói uma distinção artificial entre REST e SOAP no que me parece uma tentativa de distinguir os mercados para JAX-WS e JAX-RS. É claro que isso é uma tolice, porque SOAP é um protocolo e uma representação de dados, enquanto REST é um princípio de arquitetura e design . Um design REST reproduz o design da Web: transferência de representações de recursos a.k.a. download. Um tal design não possui sessão e portanto o relacionamento entre cliente e servidor não mantém estado. Isso não tem nada a ver com usar ou não usar SOAP, usar ou não usar WSDL, estabelecer vínculos complexos ou simples com a aplicação cliente. Ninguém merece.

SOAP sobre HTTP não me impressiona

Todo esse papo sobre as vantagens e maravilhas do SOAP sempre pareceram um pouco suspeito, e agora finalmente eu percebi o porquê. De algum modo, me parece que o discurso de benefícios o SOAP é uma versão travestida do seguinte argumento: o melhor é reusar o HTTP porque o melhor é reusar os servidores HTTP pré-existentes ou, ao menos, porque o problema de implementação de um servidor HTTP tem solução conhecida. Uma crítica fundamental ao SOAP sobre HTTP é o fato de o HTTP não ter sido projetado como protocolo de transporte para outros protocolos; na prática, esse fato é simplesmente desconsiderado. Creio que isso evidencia as razões histórias para esse esquema: o valor não está tanto nas capacidades do HTTP como protocolo de transporte, mas nas capacidades das implementações do HTTP de suportar esta forma de reuso. Entendendo as coisas por esse ângulo, faz perfeito sentido que ao inventar uma plataforma de web services um sujeito reusasse, digamos, o Apache HTTP Server, ou o Mic...

C++0x vai mudar sua vida: listas de inicialização

Com a nova sintaxe para listas de inicialização, é como se agora houvesse uma notação para o valor literal de praticamente qualquer estrutura de dados. Observe meu teste de unidade construindo um "attribute template" PKCS #11 com std::vector direto na inicialização: std::vector attributes {   CK_ATTRIBUTE { CKA_CLASS, &object_class, sizeof(object_class) },   CK_ATTRIBUTE { CKA_TOKEN, &on_token, sizeof(on_token) },   CK_ATTRIBUTE { CKA_LABEL, &label, sizeof(label) },   CK_ATTRIBUTE { CKA_APPLICATION, &application, sizeof(application) },   CK_ATTRIBUTE { CKA_VALUE, &data, sizeof(data) } }; O segredo da notação está nessa pseudo-gramática:   type-name identifier { initializer-list }; que é análoga em significado a:   type-name identifier ( argument-list ); ou:   type-name identifier = type-name ( argument-list );