Iniciantes WCF Pergunta - serviços assíncronos Consumíveis

votos
4

este é mais um que pode ser feito em vez de um como é feito pergunta. Eu estou olhando para construir um serviço (camada intermediária, .net, fornecendo abstração de dados e alguma lógica de negócios) que será utilizado por vários sistemas clientes internos em diferentes plataformas. Por exemplo, um cliente pode ser um site web, outro cliente algum código java, outro cliente C #, etc.

Eu quero fornecer uma API síncrona e assíncrona em meu serviço, por exemplo GetData, BeginGetData, métodos EndGetData. Eu também quero clientes para ser capaz de registrar para notificações de novos dados que está sendo adicionado ao sistema. No passado, eu tenho implementado isso usando serviços web com um canal Tibco EMS para as notificações.

A minha pergunta é: Será que eu poderia alcançar os três requisitos (sincronia, asynch, e pub / sub) por expor um serviço WCF? Poderia este serviço por consumidos por clientes não WCF?

Desculpe a indefinição desta questão - I pode elaborar, conforme necessário.

Desde já, obrigado.

Publicado 09/12/2008 em 17:34
fonte usuário
Em outras línguas...                            


2 respostas

votos
3

Os métodos são síncrona por padrão. Para torná-los asynch, você precisa adicionar esse atributo [OperationContract (AsyncPattern = true)] e retornar um IAsynchResult, assim como você faria se estivesse fazendo BeginIvoke () com winforms. (leia mais aqui http://msdn.microsoft.com/en-us/library/ms734701.aspx )

Você pode não publicar / assinar com algo chamado um contrato de retorno de chamada (embora eu não tenho certeza sobre como implementar esta em outras plataformas) Eu não tenho muita experiência com estes, mas eles não parecem extremamente complected (você pode ler mais aqui http: //dotnetaddict.dotnetdevelopersjournal.com/wcf_alarmclock.htm )

Respondeu 09/12/2008 em 19:25
fonte usuário

votos
2

Configurando operações assíncronas em seu serviço WCF pode ser feito como Ninja Postado por definição AsyncPattern = true ou pode ser feito no lado do cliente, dizendo svcutil para gerar os pontos finais assíncrona, definindo o argumento de linha de comando correto ou verificando o "Gerar operações assíncronas" opção na versão GUI de svcutil. Gerando assíncrona ainda irá gerar operações síncronas também.

O problema com a opção async cliente é que você terá de duplicar o código em Java. Svcutil faz VB exportação ou C # código que você especificar para que você poderia muito provavelmente traduzir o código C # para Java sem muito trabalho.

Para Pub / Sub, retornos de chamada do cliente são como você deseja operar. Eu estou usando-los e eles trabalham muito bem. No nível raiz, eles são .Net Remoting e usar CCE para passar os dados para o cliente (meu entendimento). Eu não posso confirmar que esta poderia ser usada de plataforma cruzada, mas ele deve estar com algum trabalho.

Respondeu 10/12/2008 em 16:47
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more