Question

Je voudrais avoir une application client-serveur écrit en .NET qui ne suit:

  • serveur exécute Linux
  • sur le serveur il y a base de données SQL (mySQL) contenant des URL de document

Ce que nous voulons: - côté serveur serait régulièrement analyser toutes les URL et créer un index de texte intégral pour les - côté client serait en mesure d'effectuer une requête dans cet index utilisant l'interface graphique

L'application cliente est écrit en .NET en C #. En plus de la recherche dans les documents, il sera en mesure de faire beaucoup d'autres choses qui ne sont pas décrites ici et qui sont très bien côté client.

Nous voudrions utiliser C # pour le côté serveur aussi bien, mais nous avons aucune expérience dans ce domaine. Comment ça se passe comme ça fait habituellement?


question maintenant Clarifier basée sur des réponses:

La chose qui est plus clair pour moi est de savoir comment la communication client-serveur est généralement géré. Est-client et le serveur utilisent généralement des prises, se soucier de détails comme les adresses IP, les ports ou NAT traversal? Ou y at-il des cadres communs et crépite, ce qui rendrait cette transparence, et rendre la messagerie client-serveur ou procédure d'appel facile? Tous les exemples ou bons points de départ pour cela? Y at-il des techniques communes comment gérer le fait d'un seul serveur est nécessaire pour serveur plusieurs clients en même temps?

Était-ce utile?

La solution

Pour utiliser c # sur Linux vous devez utiliser Mono . Ceci est une implémentation open source de la spécification CLR.

Ensuite, vous devez décider sur la façon de communiquer entre le serveur et le client, le plus bas niveau d'ouverture juste un socket TCP / IP et l'envoi de bits de haut en bas, à .NET Remoting, à WCF pour exposer webservices sur le serveur . Je ne sais pas comment la mise en œuvre compleat WCF est en mono, aussi je pense que vous pouvez avoir problème avec Remoting binaire entre mono et MS .Net.

Je suggère WebServices de style RPC offrent une très bonne solution. WebServices ont également l'avantage de alowing clients d'autres plates-formes pour se connecter facilement.

EDIT En réponse à la clarification de la question. Je suggère d'utiliser mono / ASP.NET / WebServices sur le serveur, si vous souhaitez utiliser c # sur le serveur et le client.

Une hypothèse que je l'ai fait est que vous pouvez faire un modèle de traction client, où chaque message est initié par le client. En utilisant une autre approche pourrait permettre au serveur de pousser les événements au client. Étant donné que le client a la possibilité de pôle régulièrement le serveur je ne trouve pas cela d'un tirage au sort en arrière, mais il peut être en fonction du type d'application que vous développez.

Mono permettre l'exécution de C # (compilé à IL) sur une machine Linux. Mono ASP.NET vous permet d'utiliser l'ASP.NET standard et intégrez dans Apache voir http: // www.mono-project.com/ASP.NET et enfin WebServices vous permettent de communiquer d'une manière robuste fortement typé entre vous et votre client serveur.

En utilisant cette approche nie la plupart des questions soulevées dans votre clarification et les rend le problème de quelqu'un d'autre.
Prises / SSL -. Est pris en charge par l'exécution .NET standard sur le client et le serveur Apache sur
Adresse IP / ports / NAT traversal - Est tous pris en charge. Recherche DNS obtiendrez l'adresse IP des serveurs. Ouvrez socket permettra au serveur de répondre par une configuration de pare-feu et NAT.
plusieurs clients -. Apache est conçu pour gérer le traitement des multiples clients en même temps que ASP.NET est, vous ne devriez pas rencontrer de problèmes là-bas

Autres conseils

Comme beaucoup l'ont déjà dit il y a un certain nombre de choses que vous avez mentionné qui va causer de la douleur. Je ne vais pas aller dans ceux-ci, au lieu que je vais répondre à votre question initiale sur la communication.

Le choix populaire courant dans ce genre de communication est des services Web. Ceux-ci vous permettent de faire des appels à distance en utilisant le protocole HTTP et codant pour les requêtes et les réponses en XML. Bien que cette méthode a ses critiques je l'ai trouvé incroyablement simple à se lever et courir, et fonctionne très bien pour presque toutes les applications.

Le framework .NET a un support intégré pour les services Web qui peut certainement être appelé par votre client. Un bref coup d'oeil sur le site Web mono indique qu'il a un support pour les services Web aussi, afin d'écrire votre serveur en C # et en cours d'exécution sous mono devrait être bien. Googler « C # service Web Tutorial » montre de nombreux sites qui ont des informations sur la façon de commencer, voici un choix aléatoire de ces résultats:

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

consulter Grasshopper : « Avec Grasshopper, vous pouvez utiliser votre environnement de développement favori de Microsoft pour déployer des applications sur les plates-formes compatibles Java telles que Linux »

Ou voir ici

Le ideea est de convertir votre application Java, puis l'exécuter sur Tomcat ou JBoss.

Une autre approche: utiliser le module Mod_AspDotNet pour Apache, comme décrit .

Basic Client / Serveur d'application Chat en C # ressemble à une sorte d'exemple qui pourrait être un point de départ pour moi. Pertinentes des classes .NET sont TcpClient et < a href = "http://msdn.microsoft.com/en-us/library/system.net.sockets.tcplistener.aspx" rel = "nofollow noreferrer"> TcpListener

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top