Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O programa Doctor (consulte \samples\rpc\doctor no Platform Software Development Kit (SDK)) é um bom exemplo de um aplicativo que demonstra as compensações de design envolvidas com atributos de matriz e cadeia de caracteres. O programa Doctor é uma pequena versão de amostra de um programa mais conhecido, Eliza, desenvolvido pelo pesquisador de inteligência artificial Joseph Weizenbaum no MIT na década de 1960. O programa imita um terapeuta usando simples correspondência de padrões para responder à entrada de linguagem natural.
O programa Eliza gravou a sessão seguinte.
Utilizador | Eliza |
---|---|
Os homens são todos iguais. | De que forma? |
Eles estão sempre nos importunando sobre algo ou outro. | Pode pensar num exemplo específico? |
Bem, meu namorado me fez vir aqui. | Seu namorado fez você vir aqui. |
Ele diz que estou deprimido a maior parte do tempo. | Lamento ouvir que está deprimido. |
É verdade, estou infeliz. | Você acha que vir aqui vai ajudá-lo a não ser infeliz? |
Preciso de ajuda; isso parece certo. | O que significaria para si se recebesse ajuda? |
Talvez eu pudesse aprender a conviver com minha mãe. | Fale-me mais sobre a sua família. |
Minha mãe cuida de mim. | Quem mais na sua família cuida de você? |
O meu pai. | O teu pai. |
Você é como meu pai em alguns aspetos. | Que semelhança é que vê? |
O programa Doctor pode ser dividido em aplicações do lado do cliente e do lado do servidor. A aplicação do cliente solicita a entrada do paciente e exibe a resposta do médico. O lado do servidor processa a entrada do paciente e gera a resposta do médico. Este é um exemplo clássico de um aplicativo cliente-servidor: o cliente é responsável pela interação do usuário enquanto o servidor lida com a extensa carga computacional. Não muitos dados são passados e retornados pela função, mas, como os dados podem exigir uma quantidade significativa de processamento, o servidor os processa.
O programa Doctor usa uma matriz de caracteres para entrada e retorna outra matriz de caracteres como saída. A tabela abaixo lista quatro maneiras de passar matrizes de caracteres entre o cliente e o servidor, e os atributos e funções necessários para implementar cada abordagem.
Abordagem | Atributos ou funções |
---|---|
Matrizes de caracteres enumerados | [ tamanho_é], [ comprimento_é], [ ref] |
Strings gerenciadas por stub | [ string], [ ref], midl_user_allocate no servidor |
Strings gerenciadas por stub | [ string], [ exclusivo ], midl_user_allocate no cliente e no servidor |
Função que retorna uma cadeia de caracteres | [ único] |
Dentro das restrições associadas a essas combinações de atributos, há maneiras alternativas de enviar uma matriz de caracteres de cliente para servidor e de retornar outra matriz de caracteres de servidor para cliente.
Os tópicos a seguir demonstram as compensações de design entre as várias interfaces que podem gerenciar esses parâmetros.