Pergunta

Eu entendo o valor da três-parte de serviço/host/cliente modelo oferecido pelo WCF.Mas é só eu ou parece como o WCF tomou algo bastante direta e simples (ASMX modelo) e fez uma bagunça de fora?

Existe uma alternativa ao uso de SvcUtil de linha de comando do passo para trás no tempo para gerar o proxy?Com serviços ASMX um equipamento de teste foi fornecida automaticamente;está aí uma boa alternativa hoje com o WCF?

Eu aprecio o que o WS* material é mais integrado com o WCF e espero encontrar alguns de pagamento de salários para o WCF lá, mas geeze, caso contrário, eu estou perplexo.

Além disso, o estado de livros disponíveis para o WCF é abismal na melhor das hipóteses.Juval Lowy, um excelente autor, tem escrito uma boa O'Reilly livro de referência "Programação de Serviços WCF," mas ele não faz isso muito (para mim mesmo) para aprendendo agora a usar o WCF.Que livro precursor (e um pouco mais organizado, mas não muito, como um tutorial) é Michele Leroux Bustamante de Aprendizagem do WCF.Ele tem bons pontos, mas está desatualizada no local e a sua correspondente Web site está desaparecido.

Você tem bom WCF aprendizagem referências, além de continuar para o Google a bejebus das coisas?

Foi útil?

Solução

Ok, aqui vamos nós.Primeiro, Michele Leroux Bustamante livro foi atualizado para o VS2008.O site para o livro não desapareceu.Cabe agora, e ele tem toneladas de grandes WCF informações.Em um site que ela fornece o código atualizado, compatível com o VS2008 para todos os exemplos em seu livro.Se você encomenda da Amazon, você terá a reimpressão atualizada.

O WCF não é apenas um substituto para o ASMX.Certeza de que ele pode (e faz muito bem) substituir ASMX, mas o benefício real é que ele permite que seus serviços sejam auto-hospedado.A maior parte da funcionalidade do WSE tem sido cozido em desde o início.O quadro é altamente configurável, e a capacidade de atender a vários pontos de extremidade através de vários protocolos é incrível, IMO.

Enquanto você ainda pode gerar classes de proxy do "Add Service Reference" opção, não é necessário.Tudo o que você tem a fazer é copiar o ServiceContract interface e informe o seu código onde encontrar o ponto de extremidade para o serviço, e é isso.Você pode chamar métodos do serviço com muito pouco código.Usando este método, você tem o controle completo sobre a implementação.Independentemente do método que você escolher para gerar uma classe de proxy, Michele mostra e usa em seu excelente série de webcasts sobre o assunto.

Michele tem toneladas de material grande lá fora, e eu recomendo que você confira seu site(s).Aqui estão alguns links que foram extremamente útil para mim, como eu estava aprendendo WCF.Eu espero que você venha a perceber o quão forte WCF realmente é, e como é fácil de implementar.A curva de aprendizado é um pouco íngreme, mas as recompensas para o seu investimento de tempo são bem a pena:

Eu recomendo que você assista, pelo menos, 1 de Michele webcasts.Ela é um meio muito eficaz de apresentador, e ela, obviamente, extremamente experiente quando se trata de WCF.Ela faz um ótimo trabalho de desmistificar o funcionamento interno do WCF, a partir do zero.

Outras dicas

Eu estou tendo um hardtime ver quando eu deveria ou poderia usar o WCF.Por quê?Porque eu coloquei a produtividade e a simplicidade no topo da minha lista.Qual foi o ASMX modelo de forma bem sucedida, porque ele trabalhou, e você fazê-lo funcionar rápido.E com o VS 2005 e .NET 2.0 wsdl.exe foi cuspindo muito bom e compatível com os serviços.

Na vida real, você deve ter muito poucos protocolos de comunicação em sua arquitetura.Este mantém um simples de fácil manutenção.Se você precisa de acesso a sistemas legados, escrever adaptadores específicos para eles, assim eles podem jogar junto no brilhante agradável e bonito SOA mundo.

O WCF é muito mais poderoso do que ASMX e estende-lo de várias formas.ASMX é limitado a apenas HTTP, enquanto que o WCF pode usar vários protocolos para a comunicação (concedido, o HTTP é ainda a maneira que as pessoas vão usá-lo, pelo menos para os serviços de que precisa para ser interoperável).O WCF também é mais fácil de estender.Pelo menos, é possível estender as maneiras que ASMX não pode ser estendido."Fácil" pode ser esticá-lo.=)

As funcionalidades adicionais oferecidas pelo WCF em muito supera a complexidade de ti adiciona, na minha opinião.Eu também sinto que o modelo de programação é mais fácil.DataContracts são muito mais agradável do que ter de serializar usando a serialização de XML com propriedades públicas para tudo, por exemplo.Também é muito mais declarativa na natureza, que é bom também.

Espera....alguma vez você utilizar .NET Remoting, causa isso é a coisa real a sua substituição..NET Remoting é muito complicado si.Eu acho WCF mais fácil e melhor definidos.

Eu não vê-lo mencionado muitas vezes o suficiente, mas você pode ainda implementar bastante simples serviços com WCF, muito semelhante aos serviços ASMX.Por exemplo:

[ServiceContract]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class SimpleService
{
    [OperationContract]
    public string HelloWorld()
    {
        return "Hello World";
    }

}

Você ainda tem que registrar o ponto final na sua web.configuração, mas que não é tão ruim.

Eliminando a verbosidade de dados separados, serviços e contratos de operação vai um longo caminho para tornar o WCF mais viável para mim.

VS2008 inclui o "Add Service Reference" item de menu de contexto que irá criar o proxy para você os bastidores.

Como foi mencionado anteriormente, o WCF não é destinado exclusivamente como um substituto para o web service ASMX tipos, mas para fornecer uma consistente, segura e escalável metodologia para todos os serviços interoperáveis, se é através de HTTP, tcp, pipes nomeados ou MSMQ transportes.

Eu confesso que tenho outros problemas com o WCF (e.g.re-escrita de assinaturas de método na exposição de um serviço de basicHTTP - ver aqui, mas no geral eu acho que é definitivamente um imrovement

Se você estiver usando o VS2008 e criar um projeto do WCF, em seguida, você receberá automaticamente um equipamento de teste quando você clicar em executar/depurar e você pode adicionar uma referência sem ter que usar svcutil.

Meu pensamento inicial de WCF foram exatamente o mesmo!Aqui estão algumas soluções:

  1. Programe o seu próprio proxy/camada de cliente utilizando generics (ver classes ClientBase, Encadernação).Eu encontrei esta fácil para começar a trabalhar, mas difícil de ser perfeito.
  2. Usar um terceiro implementação de 1 (SoftwareIsHardwork é o meu atual favorito)

WCF é uma substituição para todas as anteriores serviço web tecnologias da Microsoft.Ele também faz muito mais do que aquilo que é tradicionalmente considerado como "web services".

O WCF "web services" são parte de um espectro mais amplo de comunicação remota ativada através do WCF.Você vai ter um muito maior grau de flexibilidade e portabilidade fazer as coisas no WCF do que o tradicional ASMX, pois o WCF é projetado, a partir do zero, para resumir, todos os diferentes distribuídos de programação de infra-estruturas oferecidas pela Microsoft.Um ponto de extremidade no WCF pode ser comunicadas com a mesma facilidade, SOAP/XML, pois ele pode através de TCP/binário e para alterar este meio é simplesmente um arquivo de configuração mod.Em teoria, isso reduz a quantidade de código novo necessários ao portar ou alteração de necessidades de negócio, metas, etc.

ASMX is older than WCF, and anything ASMX can do so can WCF (and more).Basicamente, você pode ver o WCF como uma tentativa de agrupar logicamente as diferentes maneiras de se fazer dois aplicativos para se comunicar no mundo da Microsoft;ASMX foi apenas uma das muitas dessas maneiras e assim é agora agrupados sob o WCF guarda-chuva de capacidades.

Os Serviços Web podem ser acessados apenas por HTTP e funciona em ambiente sem estado, onde o WCF é flexível, pois seus serviços podem ser hospedados em diferentes tipos de aplicações.Cenários comuns para a hospedagem de serviços WCF são IIS,FOI, de Auto-hospedagem, Serviço Gerenciado do Windows.

A principal diferença é que os Serviços da Web Use o XmlSerializer.Mas o WCF Utiliza o DataContractSerializer o que é melhor em Desempenho comparado ao de XmlSerializer.

Em que situações deve ser usado WCF

  • Um serviço seguro para processar transações de negócios.Um serviço que
  • fontes de dados atual para outras, como um relatório de tráfego ou outros
  • o serviço de monitoramento.Um serviço de bate-papo que permite que duas pessoas para
  • comunicar-se ou troca de dados em tempo real.Um painel de aplicação
  • que controla um ou mais serviços de dados e apresenta-a em uma lógica
  • apresentação.Expondo um fluxo de trabalho implementado usando o Fluxo de trabalho do Windows
  • Fundação como um serviço WCF.Um aplicativo do Silverlight para pesquisar um
  • serviço para os últimos feeds de dados.

Características do WCF

  • Serviço De Orientação
  • Interoperabilidade
  • Vários Padrões Mensagem
  • Serviço De Metadados
  • Contratos De Dados
  • Segurança
  • Vários Transportes e Codificações
  • Confiável e de Mensagens em Fila
  • Durável Mensagens
  • Transações
  • O AJAX e o RESTO de Suporte
  • Extensibilidade

fonte: principal fonte do texto

MSDN?Eu costumo fazer muito bem, com a referência de Biblioteca de si, e eu costumo esperar encontrar artigos valiosos lá.

Em termos do que ela oferece, eu acho que a resposta é a compatibilidade.Os serviços ASMX foram muito Microsofty.Para não dizer que eles não tentam ser compatível com outros consumidores;mas o modelo não foi feito para caber muito mais além ASP.NET páginas da web e alguns outros personalizada do Microsoft consumidores.Considerando que o WCF, por causa de sua arquitetura, permite que o serviço tenha muito de padrão aberto, baseado pontos de extremidade, por exemplo,REST, JSON, etc.além da habitual SABÃO.Outras pessoas, provavelmente, terá um tempo muito mais fácil consumir o serviço WCF que o ASMX um.

(Esta é, basicamente, inferida a partir comparativa MSDN leitura, de modo que alguém que sabe mais devem sentir-se livres para me corrigir.)

O WCF não deve ser pensado como um substituto para o ASMX.A julgar pelo modo como ele está posicionado e como ele está sendo usado internamente pela Microsoft, ele é realmente fundamental arquitetura peça que é usada para qualquer tipo de cross-limite de comunicação.

Eu acredito que o WCF realmente avanços ASMX web de serviços de implementação de muitas maneiras.Primeiro de tudo, ele oferece um desempenho muito bom em camadas do modelo de objeto que ajuda a ocultar a complexidade intrínseca de aplicações distribuídas.Em segundo lugar, você pode ter mais do que o pedido de repetição de padrões de mensagens, incluindo notificações assíncronas do servidor para o cliente (impossível com puro HTTP) e, em terceiro lugar abstraindo subjacente protocolo de transporte de mensagens XML e, portanto, elegantemente apoio de HTTP, HTTPS, TCP e outros.Compatibilidade com versões anteriores de "1ª geração" web services também é um plus.O WCF utiliza o padrão XML como formato de representação interno.Isso pode ser percebido como uma vantagem ou desvantagem, especialmente com a crescente popularidade "livre de gordura alternativas ao XML", como JSON.

O difícil coisas que eu encontrar com o WCF é gerenciar as configurações para clientes e servidores, e a solução de problemas não tão bom estado de falha exceções.

Seria ótimo se alguém tinha qualquer atalhos e dicas para aqueles.

Eu acho que é uma dor;em que eu tenho .NET em ambas as extremidades, têm o mesmo "contrato" dlls carregadas em ambas as extremidades, etc.Mas então eu tenho que mexer com cerca de um monte de detalhes, como "KnownType" atributos.

O WCF também padrões para só deixar 1 ou 2 clientes se conectam a um serviço até que você altere lotes de configuração.Alterar a configuração de código não é fácil, envio de lotes de comfig arquivos não é uma opção, como é muito difícil para mesclar as nossas alterações em quaisquer alterações que um cliente pode ter feito na hora de um upgrade (também não queremos que os clientes jogar com configurações WCF!)

.NET remoting tendem a trabalhar a maior parte do tempo.

Eu acho que tentar fingir que .Rede .NET objeto de comunicação é o mesmo como o envio de bits de modo de Texto (xml) para um sistema desconhecido, foi um passo longe demais.

(As poucas vezes temos usado o WCF para falar para um sistema Java, descobrimos que o XSD que o sistema java que deu o fora não corresponde XML ele queria de qualquer maneira, por isso teve de mão-de código de um monte de mapeamentos XML.)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top