Como implementar dois serviços da web diferentes executando a mesma lógica de negócios?

5

Estamos desenvolvendo uma API HTTP ReSTful com o Servicestack (.NET).

Alguns dos clientes da API, que têm um subconjunto das ações, exigem um serviço que possa ser facilmente adicionado a todas as entidades, como com o "Add Service Reference" com o Visual Studio.

Estamos pensando em criar um serviço da Web asmx simples, mas nossos pensamentos sobre como dividir isso são dois:

  1. O asmx WS chamará o serviço ServiceStack com um cliente HTTP.
  2. O asmx WS fará referência ao mesmo BL que o serviço principal referencia e o chamará diretamente.

Qual é o caminho preferido?

Existe alguma outra maneira que você recomendaria?

    
por Mithir 08.03.2013 / 16:30
fonte

2 respostas

2

Se sua API tiver uma camada de modelos de visualização / edição voltados para o usuário, você poderá colocá-los em um assembly separado e fornecer ao cliente um driver / ponte / wrapper simples baseado no .NET que use os mesmos modelos e invoque sua API. Dessa forma, você basicamente lhes dá o código de ligação asmx para você.

    
por 09.03.2013 / 00:30
fonte
1

Considere escrever adaptadores para entrada na lógica da sua aplicação. O aplicativo não precisa realmente saber sobre os clientes que acessam a lógica de negócios. Em vez disso, você escreve um código que adapta os aplicativos do cliente (nesse caso, seus serviços da Web) ao aplicativo de acordo com o necessário. Este é um princípio básico no Padrão de Portas e Adaptadores do Allistair Cockburn ( "Portos e Adaptadores" ou Padrão "Hexagonal" )

A ideia por trás desse princípio é limitar o entrelaçamento entre a lógica de negócios e a interação com entidades externas.

O clássico livro Padrões de design tem uma descrição do padrão genérico "Adaptadores". Portas e adaptadores usam esse padrão.

    
por 08.03.2013 / 16:57
fonte