CHAT

MOUSER 28/03/2016 17:41:03
#460035
Kerp, dei uma estudada, li alguns artigos e também assisti alguns videos seus sobre o WebAPI, achei interessante, mas na ora de consumir o WebAPI, é a mesma forma do VB.NET para o C#.NET? Pois vejo muito conteudo, de cada 10, 9 é c# e 1 asp.net com WebAPI e c#, se for da mesma forma, não tenho muito o que me preocupar.

Uma duvida, enquanto pesquisava sobre WebAPI e seu desenvolvimento, encontrei alguns conteudos sobre WebService, apesar de ser muito mais pesado e lento, foi o que encontrei com uma gama forte com VB.NET, no meu caso que é um chat simples e barato, sem muita frescura, só envio e recebimento de texto. O melhor é o WebAPI mesmo? Como muitos amigos meus sabem, tenho mais afinidade em desenvolver VB.NET do que qualquer outra linguagem. Levo muito mais tempo para entender por exemplo um sistema JAVA e C# do que um em VB.NET. Eu vou estar ainda desenvolvendo em WebAPI, mas se eu desenvolver em WebService terei uma performance aproximado? Já que o sistema não exige tanto da conexão, vai ter um sistema no PC1 e no PC2, ambos conectados na Web, terá um usuário e senha e envios de textos e mais textos. Tanto o WebService e WebAPI terei o mesmo resultado com performance diferente, com velocidades um pouco diferenciado, Pergunto pois creio que chat quase ninguem usa, até o Whatsapp já está ficando deixado de lado por alguns. Minha ideia não é comercializar o meu sisteminha de chat, mas desenvolver para amigos.
KERPLUNK 28/03/2016 21:59:34
#460043
Com WebService SOAP, você terá uma performance mais ou menos parecida. A diferença é quando(e se) for desenvolver para outras plataformas, como mobile por exemplo. Se você ainda está preso no paradigma de linguagem, você está bem atrasado. Em C# em VB.NET não deve fazer a menor diferença e se faz, você precisa abstrair o pensamento. Não veja o código pelo código em si, entenda o que ele faz. Você ver um objeto sendo instanciado, você deve não decorar a sintaxe do comando, mas sim entender o que aquilo é, seja em VB.NET ou C#. O mesmo para um bloco de código. Você vai ver objetos sendo instanciados, entenda o que está acontecendo, não a sintaxe do código. Um exemplo prático:
- Abra a tampa
- Coloque a roupa dentro da máquina
- Coloque o sabão
- Aperte o botão

Para você é uma série de instruções para iniciar a lavagem de roupa e deve ser o mesmo que:
- Desloque a abertura do compartimento de lavagem
- Introduza no cesto de lavagem todo o conteúdo à ser limpo
- Disponha a substância limpante no compartimento superior
- Inicialize o procedimento

São a mesma série de instruções, de formas diferentes, ambas descrevendo o processo para iniciar lavagem de roupa. Para você, ambos devem ser a mesma coisa. Esse é o maior segredo. Não veja código, veja o que ele faz, ao menos tente ter uma idéia do que ele faz. é isso que me refiro quando falo em entender conceitos. Quando você entender isso, um oceano vai se abrir em sua mente. Quer ver o que estou falando? Veja isso, são todos o mesmo código, em diversas linguagens, todos fazem a mesma coisa.
PERCIFILHO 29/03/2016 08:29:41
#460053
Gostei da colocação:

(Isto deve ser VB.Net)
- Desloque a abertura do compartimento de lavagem
- Introduza no cesto de lavagem todo o conteúdo à ser limpo
- Disponha a substância limpante no compartimento superior
- Inicialize o procedimento

(Isto deve ser C#)
- Abra a tampa;
- Coloque a roupa dentro da máquina;
- Coloque o sabão;
- Aperte o botão;

Caro Mouser, não me lembro a sua idade, mas com certeza é bem mais novo do que eu. Concordo com o Kerplunk de que a linguagem pouco importa. Eu também tive esse pensamento por muito tempo, me limitando apenas a dizer: [Ô]C# é muito difícil, eu nunca vou conseguir aprender essa linguagem[Ô]. Hoje vejo que estava totalmente errado. Depois que comecei a converter um sistema todo feito em VB.Net para C#, foi que vi que a diferença está apenas na sintaxe, mas isso a gente vai [Ô]decorando[Ô] à medida que vai introduzindo os códigos. Comecei nessa área de programação com meus 19-20 anos, hoje tenho quase 48. Estou aprendendo agora o conceito de OOP, Reflection, estou ainda engatinhando nesse caminho, mas não desisto, não. Vou em frente, enquanto ainda me resta esperança. Também estou tentando fazer um sisteminha de Chat, mas para usar somente interno na empresa. Aproveitando uma idéia bem antiga do nosso querido Marcelo-Treze que eu vi uma vez. Se eu conseguir terminar, prometo que vou postar aqui no Fórum para quem quiser ver.
MOUSER 30/03/2016 17:25:09
#460153
Galera, andei estudando WebAPI como recomendado, vejo que tem muitas funções nesta ferramenta, função para quem for usar um e-commerce, ou para quem for usar rede social, para quem for sistemas pequenos de administração de entregas (delivery), na area de alimentos, WebAPI atende e facilita a vida de muitos, só estou aprendendo todas as ferramentas possíveis para analisar depois qual a melhor se encaixa no CHAT.

Segue abaixo alguns links que pesquisei:

Citação:


https://msdn.microsoft.com/pt-br/library/dn450975.aspx

http://csharpbrasil.com.br/criando-e-consumindo-web-api-parte-1/

https://www.youtube.com/watch?v=MeiZFLijwWs

http://www.vitormeriat.com.br/2013/09/20/asp-net-web-api-criando-e-consumindo-dados-parte-1/

http://eduardopires.net.br/2013/07/asp-net-web-api-meu-primeiro-servico-rest/

http://www.ciceroednilson.com.br/criando-um-servico-restful-com-web-api-em-c/

http://elemarjr.net/2012/05/21/usando-asp-net-web-api-httpclient-para-consumir-servios-rest/

http://waldyrfelix.net/2012/11/01/asp-net-webapi-basic-authentication/

MOUSER 30/03/2016 17:39:59
#460155
Observação, amei estar aprendendo isso.
KERPLUNK 31/03/2016 00:13:34
#460168
Trombei com um aqui prontinho pra você. Chat via WebAPI com notificação PUSH
Código fonte disponível. Pra ver como estamos atrasados, foi publicado em 2012, quatro anos atrás e já nem era considerado novidade.
MOUSER 01/04/2016 10:49:44
#460258
C#
Citação:


Public Class Mensagem
{
public string username {get;set;}
public string text {get;set;}
public string dt {get;set;}
}


Vb.Net
Citação:


Public Class Mensagem
Public Property username() As String
Get
Return m_username
End Get
Set
m_username = Value
End Set
End Property
Private m_username As String
Public Property text() As String
Get
Return m_text
End Get
Set
m_text = Value
End Set
End Property
Private m_text As String
Public Property dt() As String
Get
Return m_dt
End Get
Set
m_dt = Value
End Set
End Property
Private m_dt As String
End Class



C#
Citação:


public class ChatController : ApiController
{
public HttpResponseMessage Get(HttpRequestMessage request)
{
HttpResponseMessage response = request.CreateResponse();
response.Content = new PushStreamContent(OnStreamAvailable, [Ô]text/event-stream[Ô]);
return response;
}
public void Post(Message m)
{
m.dt = DateTime.Now.ToString([Ô]MM/dd/yyyy HH:mm:ss[Ô]);
MessageCallback(m);
}
}



VB.NET
Citação:


Public Class ChatController
Inherits ApiController
Public Function [Get](request As HttpRequestMessage) As HttpResponseMessage
Dim response As HttpResponseMessage = request.CreateResponse()
response.Content = New PushStreamContent(OnStreamAvailable, [Ô]text/event-stream[Ô])
Return response
End Function
Public Sub Post(m As Message)
m.dt = DateTime.Now.ToString([Ô]MM/dd/yyyy HH:mm:ss[Ô])
MessageCallback(m)
End Sub
End Class



C#
Citação:


private static readonly ConcurrentQueue<StreamWriter> _streammessage = new ConcurrentQueue<StreamWriter>();
public static void OnStreamAvailable(Stream stream, HttpContentHeaders headers, TransportContext context)
{
StreamWriter streamwriter = new StreamWriter(stream);
_streammessage.Enqueue(streamwriter);
}
private static void MessageCallback(Message m)
{
foreach (var subscriber in _streammessage)
{
subscriber.WriteLine([Ô]data:[Ô] + JsonConvert.SerializeObject(m) + [Ô]n[Ô]);
subscriber.Flush();
}
}



VB.NET
Citação:


Private Shared ReadOnly _streammessage As New ConcurrentQueue(Of StreamWriter)()
Public Shared Sub OnStreamAvailable(stream As Stream, headers As HttpContentHeaders, context As TransportContext)
Dim streamwriter As New StreamWriter(stream)
_streammessage.Enqueue(streamwriter)
End Sub
Private Shared Sub MessageCallback(m As Message)
For Each subscriber As var In _streammessage
subscriber.WriteLine([Ô]data:[Ô] & JsonConvert.SerializeObject(m) & [Ô]n[Ô])
subscriber.Flush()
Next
End Sub



Galera, esse código, converti por blocos, hoje estarei colocando este codigo, (Como eu disse no outro tópico, meu HD externo está em manutenção, estarei salvando o código aqui, e também para os amigos estarem acompanhando o desenvolvimento).
KERPLUNK 01/04/2016 15:33:33
#460283
Já que converteu os códigos, aproveite e leia o original em C# e o que foi convertido. Você vai ver que são a mesma coisa, apenas muda a sintaxe. Veja como era em um e como ficou no outro e vai entender que são praticamente a mesma coisa. Não só copie e cole, isso não vai te ajudar em nada para aprender.
MOUSER 04/04/2016 11:48:12
#460401
Eu consegui criar algumas classes com base naquilo que foi postado, só que encontrei alguns erros de importação, estou dando mais uma estudada para poder verificar o que foi ocorrido, Kerp, eu normalmente coloco tela lado a lado e começo a digitar ao invés de Select All -> Ctrl + C -> Ctrl + V, mas ao terminar, me deparei com esses erros. VOu dar mais uma olhada no link para ver aonde errei e se faltou alguma importação (Bem provável).
MOUSER 05/04/2016 17:18:24
#460500
A lógica, pelo que analisei, ficou mais ou menos assim no VB.NET
Citação:


Public Class CHAT
Dim Mensagem as String
Public Sub Enviar()
Mensagem = Mensagem + lblUsuario.Text & [Ô]: [Ô] & txtTexto.Text & Environment.NewLine
txtMensagem.Text = Mensagem
txtTexto.Focus()
txtTexto.Text = [Ô][Ô]
End Sub
End Class


Não sei se esta certo, mas a ideia funciona off line.
Como assim Off line?
Eu executei somente esse trecho da codificação e o resultado é igual esse da imagem.

Como podem perceber, fiz pequenas alterações no Design do formulário mas para esfriar a cabeça enquanto pensava em alguma lógica que fizesse sentido. Na parte funcional, o código funcionou, mas falta conectar isso a Web.

Estou estudando ainda sobre o WebAPI para tentar conectar a variavel Mensagem com o Servidor.
Página 4 de 5 [45 registro(s)]
Tópico encerrado , respostas não são mais permitidas