Como os aplicativos do lado do servidor são criados, como é feito a comunicação do cliente - servidor?

StackOverflow https://stackoverflow.com/questions/2138634

Pergunta

Eu gostaria de ter um aplicativo cliente-servidor escrito no .NET que faria seguinte:

  • O servidor está executando o Linux
  • No servidor, há um banco de dados SQL (MySQL) que contêm URLs de documentos

O que queremos: - O lado do servidor engana todos os URLs e criaria um índice de texto completo para eles - o lado do cliente seria capaz de executar uma consulta nesse índice usando a GUI

O aplicativo cliente está escrito no .NET usando C#. Além de pesquisar em documentos, poderá fazer muitas outras coisas que não são descritas aqui e que são muito bem do lado do cliente.

Também gostaríamos de usar o C# para o lado do servidor, mas não temos experiência nessa área. Como as coisas assim geralmente são feitas?


Esclarecendo a pergunta agora com base em algumas respostas:

O que mais não está claro para mim é como a comunicação cliente-servidor é geralmente tratada. O cliente e o servidor costumam usar soquetes, cuidando de detalhes como endereços IP, portas ou travessias NAT? Ou existem algumas estruturas e padrões comuns, que tornariam isso transparente e facilitariam a chamada de mensagens ou procedimentos do servidor-servidor? Algum exemplos ou bons pontos de partida para isso? Existem algumas técnicas comuns como lidar com o fato de que um único servidor é necessário para servir vários clientes ao mesmo tempo?

Foi útil?

Solução

Para usar C# no Linux, você precisará usar Mono. Esta é uma implementação de código aberto da especificação CLR.

Em seguida, você precisa decidir sobre como se comunicar entre servidor e cliente, do nível mais baixo de apenas abrir um soquete TCP/IP e enviar bits para cima e para baixo, para .Net Remoting, para o WCF, para expor os serviços Web no servidor. Não sei como a implementação da WCF é completa no Mono, também acho que você pode ter um problema com o remoto binário entre Mono e MS .NET.

Eu sugeriria que os serviços Web de estilo RPC ofereçam uma solução muito boa. Os serviços da web também têm a vantagem de aliviar clientes de outras plataformas para se conectar facilmente.

EDITAREm resposta ao esclarecimento da pergunta. Eu sugeriria o uso de serviços mono/asp.net/webs no servidor, se você deseja usar o C# no servidor e no cliente.

Uma suposição que fiz é que você pode fazer um modelo de tração do cliente, onde todas as mensagens são iniciadas pelo cliente. O uso de outra abordagem pode permitir que o servidor empurre os eventos para o cliente. Dado que o cliente tem a capacidade de polar o servidor regularmente, não considero isso muito desgaste, mas pode depender do tipo de aplicativo que você está desenvolvendo.

Mono permita a execução de C# (compilado em IL) em uma caixa Linux. Mono ASP.NET permite que você use o ASP.NET padrão e integra -se ao Apache ver http://www.mono-project.com/asp.net E, finalmente, os serviços da Web permitem que você se comunique de maneira robusta de uma maneira fortemente digitada entre o cliente e o servidor.

O uso dessa abordagem nega a maioria dos problemas levantados em seus esclarecimentos e os torna o problema de outra pessoa.
Soquetes/ssl - é atendido pelo padrão .NET Standard no cliente e no Apache no servidor.
Ipaddress/portas/nat Traversal - é tudo resolvido. O DNS procurará o IP dos servidores. O Socket Open permitirá que o servidor responda através de qualquer firewall e instalação de NAT.
Vários clientes - O Apache é criado para lidar com vários clientes processando ao mesmo tempo que o ASP.NET, para que você não encontre nenhum problema lá.

Outras dicas

Como muitos já mencionaram, há várias coisas que você mencionou que causarão dor. Não vou entrar neles, em vez disso, responderei sua pergunta original sobre comunicação.

A escolha popular atual desse tipo de comunicação são os serviços da Web. Isso permite que você faça chamadas remotas usando o protocolo HTTP e codificando as solicitações e respostas no XML. Enquanto esse método tem seus críticos, achei incrivelmente simples subir e funcionar e funciona bem para quase todas as aplicações.

O .NET Framework construiu suporte para serviços da Web, que definitivamente pode ser chamado pelo seu cliente. Uma breve olhada no site Mono indica que ele também tem suporte para serviços da Web; portanto, escrever seu servidor em C# e executá -lo em Mono deve ficar bem. Pesquisando no "tutorial de serviço da web c#" mostra muitos sites que têm informações sobre como começar, aqui está uma escolha aleatória desses resultados:

http://www.codeguru.com/csharp/csharp/cs_webservices/tutorials/article.php/c5477

dê uma olhada em gafanhoto: "Com o Grasshopper, você pode usar seu ambiente de desenvolvimento favorito da Microsoft® para implantar aplicativos em plataformas habilitadas para Java, como o Linux"

Ou veja aqui

A IDEEA é converter seu aplicativo em Java e executá -lo no Tomcat ou Jboss.

Outra abordagem: use o módulo mod_aspdotnet para apache, conforme descrito aqui.

este Aplicativo básico de bate -papo cliente/servidor em c# Parece um tipo de exemplo que pode ser um ponto de partida para mim. As classes .NET relevantes são TcpClient e TcPlistener

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