Pergunta

Eu tenho um aplicativo independente existente que vai ser prorrogado por um terceiro partido, usando um protocolo de rede. Os recursos já estão implementados, todos necessidade I é expô-los para o exterior.

Assumindo que o protocolo de transporte já está escolhido (UDP), existem recursos que vão me ajudar a projetar o meu protocolo de aplicação?

Parece haver um monte de informações sobre design de software, mas não no projeto do protocolo. Eu já olhei Application Protocol Projeto .

Foi útil?

Solução

Jabber protocolos de diretrizes de design e RFC 4101 . Embora seja destinado a tornar RFCs mais fácil de entender aos colaboradores, este RFC fornece alguns conselhos interessantes.

Outras dicas

Você já olhou para Tampão Google Protocol ? Ele parece ser uma boa maneira de resolver este problema.

Você pode criar um ponto de extremidade que se comunica com o seu aplicativo existente e, em seguida, responde a partir de 'fora' usando o protocolo protobuffer. É de binário, por isso é pequeno e rápido e você não tem que escrever o seu próprio gerente de protocolo, porque você pode usar os Google. A desvantagem é que ele tem de ser implementado em ambos os lados do sistema (do seu lado 'servidor' e no lado do consumidor / cliente).

Outra recomendação para buffers de protocolo - agradável apertado binário com pouco esforço. Note, no entanto, que enquanto o protocolo binário é bem definido, ainda não há um padrão RPC acordado ( vários estão em andamento , tendendo a inclinar-se para TCP ou HTTP).

A especificação torna muito fácil ter o cliente eo servidor em diferentes arquiteturas , o que é bom - além de que é extensível

.

Aviso: Eu sou o autor de um dos .NET versões , então eu pode muito bem ser tendenciosa ;-p

Primeiro, UDP é essencialmente um método de transporte de transmissão unidirecional. Além disso, é potencialmente perdas , então você precisa ser capaz faltando manipular pacotes e pacotes fora de ordem. Se você precisar de qualquer nível de confiabilidade de UDP, ou exigir conexões de duas vias, você vai acabar precisando apenas sobre tudo, desde TCP, assim você pode ir tão bem com isso para começar e deixar a rede pilha cuidar dela.

Em seguida, se os seus dados é potencialmente maior do que um único pacote IP, então você vai precisar de alguma maneira de identificar o início eo fim de cada pacote, e um meio de lidar com pacotes ilegais ou corruptas. Eu recomendaria algum tipo de cabeçalho com tamanho do pacote, algum tipo de rodapé, e talvez uma soma de verificação.

Em seguida, você precisa de alguma forma de codificação das mensagens e respostas. Há muitos protocolos RPC ao redor. Você poderia olhar para SOAP, ou projetar um baseado em XML protocolo personalizado, ou um binário.

Você realmente deve pensar muito sobre se você realmente quer projetar, documentar e manter seu próprio protocolo ou usar algo que já existe. É provável que já existe um protocolo documentado que corresponda às suas necessidades. Dependendo do que você está fazendo isso provavelmente vai olhar um exagero no início e implementação de toda a especificação vai olhar tedioso e muito menos divertido do que escrever o seu próprio, mas se você pretende para o seu aplicativo para ainda ser desenvolvido ativamente em poucos anos deve poupar um monte de tempo e dinheiro para usar algo que já existe e é conhecido por terceiros. Além disso, se você pode usar uma biblioteca existente para esse protocolo, a parte de implementação deve ser muito mais rápido.

Designing novo protocolo é mais divertido do que implementar um, mas menos do que manter um como você tem que viver com todos os defeitos. Nenhum protocolo é perfeito, mas se você nunca projetou um que você pode ter certeza que você vai fazer mais erro projetá-lo do que as pessoas que projetaram o protocolo existente bem conhecido que você poderia usar em seu lugar.

Em suma, a alavancagem o que já existe, sempre que possível.

Se você não quer construir seu protocolo de baixo para cima, você deve dar uma olhada em SABÃO . Apoio varia para diferentes linguagens de programação, mas a comunicação entre linguagens é explicitamente encorajada.

Infelizmente UDP e SOAP parecem ter preso em sua infância, HTTP é mais comumente usado.

Se você está escolhendo manter XML em mente que você terá uma sobrecarga gigante de marcação.

Um protocolo binário simples também será necessário não tanto ressources para analisar em comparação com xml.

Eu tenho um aplicativo independente existente que vai ser prorrogado por um terceiro partido, usando um protocolo de rede.

Seria útil para conhecer um pouco mais sobre o que seu programa faz e qual a natureza dessas extensões 3rd party são. Talvez alguma razão para usar UDP?

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