Web service acessando banco de dados

Olá pessoal!

Estou começando com web services e gostaria de saber se é viável um web service acessar banco de dados.
Gostaria de saber se desta forma não estou descaracterizando o Web service.
Desde já agradeço.
Abraço!

[quote=j2tinho]Olá pessoal!

Estou começando com web services e gostaria de saber se é viável um web service acessar banco de dados.
Gostaria de saber se desta forma não estou descaracterizando o Web service.
Desde já agradeço.
Abraço![/quote]

Esse tipo de Design, chama-se Entity Services ou “DataCentric”, onde o nome do seu serviço é sua entidade, exemplo : Cliente, Pedido…

É um design que possui uma granularidade muito fina, o que dificultará muito a manutenibilidade do seu sistema. Imagine um cenário de negócio onde você precise de uma série de entidades, terá que fazer muitas chamadas e lembre-se, essas são remotas.

Onde esse tipo de design é recomendado ? Quando você tem legado, aquelas PL´s da vida que possuem muita regra de negócio, ou uma View que possui muita agregaçaõ, então faz sentido, pois o negócio já está contido no seu banco.

Outra saída para não incorrer num modelo Anêmico de Serviços - http://jim.webber.name/2008/04/19/30b4f0e9-f67a-4310-bf38-ca0a3423206e.aspx , é utilizar técnicas de DDD e transcrever para seu Model mais responsabilidades, para não deixá-lo somente como um cara burro sem auto-conhecimento.

Então, você não irá expor propriamente dito as operações (CRUD), mas fará uso delas em operações (métodos) de negócio.

O Design Task-Services, ele parte de uma tarefa como: AdministracaoClientes e que toca mais de uma Entitidade. Se ele lida somente com uma única entidade, você pode ter um Entity Service Rico :slight_smile:

Espero não ter ficado muito confuso, mas é isso.

E cuidado com as policies de segurança, quando você for expor regras do seu banco, certifique-se que esse serviço será um “Private Service” - consumido somente por outros serviços de negócio da sua própria aplicação.

Um abraço,

Kenobi

Cara, o que o webservice pode fazer eh delegar esse acesso ao banco de dados a uma camada de negocios da aplicacao e nao fazer as chamadas ao banco de dados diretamente. De resto ta tudo tranquilo!

T+

[quote=Vini Fernandes]Cara, o que o webservice pode fazer eh delegar esse acesso ao banco de dados a uma camada de negocios da aplicacao e nao fazer as chamadas ao banco de dados diretamente. De resto ta tudo tranquilo!

T+[/quote]

Na verdade ele pode, mas é um “Private Service” Access Layer, foi o que eu disse:

Olá pessoal!

Entendi em partes pois esses padrões ainda não conhecia, vou estudar eles pra ficar mais por dentro do assunto. Estou com essa dúvida pois tenho uma aplicação desktop de configuração de pesquisas e desejo que o questionário gerado por está aplicação seja disponibilzado através de uma aplicação web, só que o problema é que necessito que só minha aplicação desktop acesse o banco de dados. Em um modelo mais resumido ficara desta forma:
AppDesktop: Configura a pesquisa e vê relatórios,etc…
AppWeb: questionário da pesquisa a ser respondida.
WebService: Integra as duas aplicações(disponibiliza a pesquisa configurada e método para submissão da pesquisa respondida).
Bom seria essa a idéia, levantei a questão de acessar o banco de dados pelo web service por este motivo.