2009-01-27 5 views
0

J'écris une application client/serveur en C++ et j'ai besoin de réaliser un protocole simple pour envoyer et recevoir des données correctement. J'ai une classe pour le protocole de serveur qui peut convertir le message à mon format et puis le convertir encore de ce format.
que ce qui est le protocole côté serveur ressemble à:Quelle décision de conception OOP convient à la situation de protocole dans l'application client/serveur?

class BaseProtocol { 
protected: 
    int NumberOfBytesInPackOfText; 
    std::string serviceString; 
public: 
    BaseProtocol(int SizeOfTextPack, const char* extraString): 
     NumberOfBytesInPackOfText(SizeOfTextPack), 
      serviceString(extraString) {} 
    virtual std::string& convertToSystemMessage(const char* message)=0; 
    virtual std::string& convertToNativeMessage(const char* message)=0; 
    virtual ~BaseProtocol() { 
     NumberOfBytesInPackOfText = 0; 
     serviceString = ""; 
    } 
}; 

class SimpleProtocol: public BaseProtocol { 
public: 
    SimpleProtocol(int SizeOfTextPack, const char* service): 
     BaseProtocol(SizeOfTextPack, service) {} 
    std::string& convertToSystemMessage(const char* nativeMessage); 
    std::string& convertToNativeMessage(const char* systemMessage); 
}; 

Maintenant, je ne peux pas décider ce qui sera la meilleure décision à prendre pour mettre en œuvre ce protocole sur l'application client. Une classe d'amis au protocole de serveur? Ou peut-être ai-je besoin d'extraire la sous-classe du protocole serveur, puis le protocole client sera dérivé de cette classe?

Répondre

3

Je créer une classe de protocole indépendante du client et du serveur. Ils peuvent chacun appeler les fonctions de cette classe plutôt que d'hériter de la classe. Ceci suit le principe favoring composition over inheritance. De même, ni le client ni le serveur "n'est" un interpréteur de protocole. Au contraire, ils ont simplement besoin d'utiliser le protocole.

0

vous êtes sûr que vous avez besoin d'une implémentation différente pour le serveur et le client? Au niveau où se trouve votre protocole, il semble qu'il devrait être conçu de la même manière pour le serveur et le client.

À un niveau supérieur (les types de messages que vous envoyez), le client et le serveur doivent varier.

Questions connexes