Sollte der Client-Server-Code in ein oder zwei "Projekte" geschrieben werden?

8

Ich habe eine Client-Server-Anwendung gestartet. Zuerst habe ich natürlich zwei Projekte in Eclipse, zwei Quellcodeverwaltungs-Repositories usw. erstellt. Aber ich sehe schnell, dass zwischen den beiden ein gemeinsamer Code liegt, der wahrscheinlich von der gemeinsamen Nutzung profitieren würde (im selben Projekt oder in einer gemeinsam genutzten Bibliothek) ) anstatt zu kopieren.

Außerdem habe ich Test-getriebene Entwicklung gelernt und versucht, und es scheint mir, dass es einfacher wäre, basierend auf realen Client-Komponenten zu testen, als eine riesige Menge Code einzurichten, nur um etwas zu verspotten , wenn der Code wahrscheinlich hauptsächlich im Client ist. In diesem Fall scheinen Client und Server in einem Projekt durch Root-Pakete (org.myapp.client. * Und org.myapp.server. , vielleicht org.myapp.shared. auch)

Meine größte Sorge beim Zusammenführen von Client und Server ist jedoch die Sicherheit; Wie stelle ich sicher, dass die Serverelemente des Codes den Computer eines Benutzers nicht erreichen? Wenn Eclipse eine JAR bündelt, muss ich die Server-spezifischen Bits auswählen und hoffe, dass ich keine vermisse, oder?

Besonders, wenn Sie selbst Client-Server-Anwendungen schreiben (und insbesondere in Java, obwohl dies zu einer sprachunabhängigen Frage werden kann, wenn Sie Ihre Erfahrung in anderen Sprachen mit anderen teilen möchten), welche Art von Trennung Halten Sie zwischen Ihrem Client- und Servercode? Sind sie nur in verschiedenen Paketen / Namespaces oder ganz anderen Binaries, die Shared Libraries verwenden, oder etwas ganz anderes? Wie testen Sie den Code zusammen und werden separat geliefert?

    
Ricket 25.03.2010, 15:19
quelle

3 Antworten

3

Weder. Es sollte 3 sein. (Allgemein, Client und Server) Es müssen jedoch nicht unbedingt drei "Projekte" sein. Mit Maven erstelle ich drei Submodule in einem Masterprojekt. Sie können etwas ähnliches mit Ant tun.

    
Chris Nava 25.03.2010, 17:51
quelle
4

Eine Menge davon hängt von Ihrer spezifischen Implementierung ab, aber ich finde normalerweise, dass Sie mindestens drei Assemblies (Binärdateien) haben, die mit einem Projekt wie diesem erstellt werden.

  1. Eine allgemeine DLL, die freigegebene Funktionen enthält, die sowohl vom Client als auch vom Server verwendet werden
  2. Die DLL / Exe für den Client
  3. Die Dll / exe für den Server

Bei dieser Vorgehensweise haben Sie Ihre freigegebenen Elemente, aber Sie stellen sicher, dass serverspezifische Elemente niemals in einer Verteilung enthalten sind, die an die Clientarbeitsstationen gesendet wird.

    
Mitchel Sellers 25.03.2010 15:23
quelle
1

Ich habe festgestellt, dass mindestens ein Projekt pro abgeschlossener Entität (Serverbereitstellung, Clientbinär usw.) gut mit z. Hudson. Dann können Sie Code in einem Basisprojekt teilen, das für alle verfügbar ist.

    
quelle