DUVIDA WCF

TUNUSAT 01/07/2015 09:53:18
#448376
PessoALL,

Não manjo nada de WCF - Windows Comunication Foundation, mas preciso aprender!

(*) RESUMINDO:

- Como entender e saber montar o [Ô]Web.config[Ô]? Tem algum manual, dica ou receita de bolo?
- Como entender e saber montar o [Ô]App.config[Ô]? Tem algum manual, dica ou receita de bolo?
- O que é (e onde está para criar uma nova) esta classe [Ô].svc[Ô]?
- O que está errado quando aparece a mensagem:
---------------------------
Microsoft Visual Studio
---------------------------
There was an error downloading metadata from the address. Please verify that you have entered a valid address.
---------------------------
OK Ajuda
---------------------------
- Como faço para meu exemplo funcionar igual ao do Macoratti?

======================================================================================

(*) DETALHADAMENTE:

Abaixo o que eu fiz e consegui e o que eu não consegui bem detalhadamente:

Estou tentando montar [Ô]no braço[Ô] o exemplo do Macoratti (baixei o exemplo dele e depois de algumas conversões de VS2010 para VS2013 e recompilação do projeto funcionou) ... mas o que eu estou fazendo separadamente não fuincionou...

======================================================
WCF - Windows Comunication Foundation - Introdução
http://www.macoratti.net/09/09/net_wcf1.htm
======================================================

Basicamente é ...
---------------------------------------------------------------------
Criar um novo projeto (new Project):
- [Ô]Installed[Ô] / [Ô]Templates[Ô] / [Ô]Visual Basic[Ô] / [Ô]WCF[Ô] / [Ô]WCF Service Application[Ô]

Name: [Ô]WcfService[Ô]
Location: [Ô]C:\[Ô]
Solution Name: [Ô]WcfService[Ô]
---------------------------------------------------------------------

Lá dentro criar um INTERFACE [Ô]IService[Ô]:
<ServiceContract()> _
Public Interface IService

<OperationContract()> _
Function ValidarEmail(ByVal email As String) As Boolean

End Interface


E depois criar uma Classe (.svc)?
Public Class Service
Implements IService

Public Sub New()
End Sub

Public Function ValidarEmail(ByVal email As String) As Boolean Implements IService.ValidarEmail
Dim validaEmail As String = [Ô]^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$[Ô]

Return Regex.IsMatch(email, validaEmail)
End Function

End Class


OKay... até ai [Ô]teoricamente[Ô] beleza. Teoricamente, pois tem a configuração do [Ô]Web.config[Ô] e não entendi nada, tem muitos detalhes que precisam ser montados lá! (copiei do exemplo pronto e que já está funcionando).

Continuando, adicionei um novo projeto [Ô]Windows Application[Ô] para [Ô]consumir[Ô] o WCF dentro da própria [Ô].sln[Ô] (solução).
Coloquei:
- 1 Label (lblEmail) - Informe o email:
- 1 TextBox (txtEmail) - teste@teste.com.br
- 1 Button (btnValidarEmail) - &Validar Email

Código dentro do botão [Ô]btnValidarEmail[Ô]:
        [ô]criando uma instância do nosso serviço WCF
Dim WCF_ValidaEmail As New ServiceReference.Service1Client

[ô]usando o método ValidarEmail do nosso serviço
If WCF_ValidaEmail.ValidarEmail(txtEmail.Text) Then
MsgBox([Ô] Email Válido.[Ô])
Else
MsgBox([Ô] Email Inválido.[Ô])
End If


Também encontrei dificuldades de entender o [Ô]App.config[Ô], pois também é cheio de detalhes (copiei do exemplo pronto e que já está funcionando). Gostaria de entender melhor os detalhes...

Agora estava a fim de adicionar o [Ô]Service References[Ô] dentro do [Ô]Windows Application[Ô]. Descobri que existe [Ô]dois modos[Ô] (entre aspas, pois é a mesma coisa):
1 - Clicar com o botão do lado direito do mouse em cima da pasta [Ô]Service References[Ô] e escolher [Ô]Add Service Reference...[Ô];
2 - Clicar com o botão do lado direito do mouse em cima da pasta [Ô]References[Ô] e escolher [Ô]Add Service Reference...[Ô];

Tem um botão [Ô]Discover[Ô] (Services in Solution).
O caminho é: [Ô]http://localhost:1583/Service.svc[Ô]
- Cliquei no serviço: [Ô]Service.svc[Ô]
NameSpace: [Ô]ServiceReference[Ô]
Mas ao clicar no botão [Ô]OKAY[Ô], aparece a mensagem:
---------------------------
Microsoft Visual Studio
---------------------------
There was an error downloading metadata from the address. Please verify that you have entered a valid address.
---------------------------
OK Ajuda
---------------------------

Como faço para meu exemplo funcionar igual ao do Macoratti?

Obrigado,
Tunusat.
TUNUSAT 02/07/2015 11:41:16
#448412
PessoALL,

Um dos erros eu acho que era o fato de eu não ter feito o [Ô]Clear Solution[Ô] e depois o [Ô]Build Solution[Ô]... sei lá...

Outro aconteceu depois, mas foi burrada mesmo, pois coloquei o [Ô]<ServiceContract()>[Ô] em cima da [Ô]Public Class Service[Ô] ... NADA A HAVER! Isto é declaração somente para a Interface!

Mais um era o seguinte:

Dim WCF_ValidaEmail As New ServiceReference.Service1Client


Não posso usar a palavra [Ô]ServiceReference[Ô] neste caso. Acho que esta palavra está reservada para o WCF... mudei para:

Dim WCF_ValidaEmail As New SR_VB.ServiceClient


Outra coisa que vale para tudo!
NÃO mude o nome do projeto ou nome de qualquer coisa depois de ter começado, a chance de dar problema é muito grande, pois ele precisa alterar também em vários pontos, exemplo: O arquivo de design que acompanha o código (onde está o código de montagem dos objetos do form), o WebConfig, o AppConfig, etc...

Devo ter errado mais alguma coisa, mas como refis tudo umas cinco vezes acabei acertando.
Bom, agora está funcionando ... vou colocar mais algumas expressões regulares que vi em um site de PHP e liberar uma versão para o pessoal ver de exemplo, se deixarem subir aqui no VBMania.

[][ô]s,
Tunusat.
TUNUSAT 04/07/2015 12:10:21
#448474
PessoALL,

Para quem quiser fuçar um pouco no WCF e REGEX.
Acho que o exemplo ficou bem básico, mas legal.

==============================================================
WCF - WINDOWS COMUNICATION FOUNDATION E REGEX
http://www.vbmania.com.br/index.php?modulo=detalhe&id=9438&pagina=1
==============================================================

Está em VB.Net 2013, mas quem quiser em C# posso fazer rapidinho.
Por favor, me passe um [Ô]feed back[Ô] se está legal ou não gostaram, o que pode ser melhorado e tal.

Se quiserem, tipo, um outro exemplo de um WCF para fazer outra coisa, por exemplo, eu imaginei uma lista de pessoas com ramais e emails da empresa. Não sei até que ponto é útil ou viável ... não consegui imaginar nada ... mas preciso pegar mais experiência em WCF, pois me passaram um sistema na empresa para que eu faça manutenção e fiquei boiando ... KKKKK! Valew!

[]s,
Tunusat.
Tópico encerrado , respostas não são mais permitidas