배열, 문자열 및 포인터 사용

Doctor 프로그램(SDK(Platform Software Development Kit)의 \samples\rpc\doctor 참조)은 배열 및 문자열 특성과 관련된 디자인 장단을 보여 주는 애플리케이션의 좋은 예입니다. 닥터 프로그램은 1960년대 MIT의 인공 지능 연구원 조셉 바이센바움(Joseph Weizenbaum)이 개발한 더 잘 알려진 프로그램인 Eliza의 작은 샘플 버전입니다. 이 프로그램은 간단한 패턴 일치를 사용하여 자연어 입력에 응답하여 치료사를 모방합니다.

Eliza 프로그램은 다음 세션을 기록했습니다.

사용자 엘리 자
남자들은 모두 비슷합니다. 어떤 방법으로?
그들은 항상 뭔가 또는 다른 것에 대해 우리를 도청하고 있습니다. 특정 예를 생각해 볼 수 있나요?
글쎄, 내 남자 친구는 나를 여기에 오게했다. 남자친구가 이곳에 오게 했습니다.
그는 내가 많은 시간을 우울해요 말한다. 우울하다는 소식을 듣고 죄송합니다.
그것은 사실이다, 나는 불행하다. 이곳에 오면 불행하지 않는 데 도움이 될 것이라고 생각하십니까?
도움이 필요합니다. 그 정도는 확실해 보입니다. 도움이 있다면 어떤 의미가 있을까요?
아마도 나는 어머니와 함께 지내는 법을 배울 수 있었을 지도 모른다. 가족에 대해 자세히 알려주세요.
어머니는 저를 돌봐주셨습니다. 가족 중 누가 당신을 돌봐 주나요?
우리 아버지. 당신의 아버지.
당신은 어떤 면에서 내 아버지와 같습니다. 당신은 어떤 유사성을 볼 수 있습니까?

 

Doctor 프로그램은 클라이언트 쪽 및 서버 쪽 애플리케이션으로 분할할 수 있습니다. 클라이언트 쪽에서 환자에게 입력을 묻는 메시지를 표시하고 의사의 응답을 표시합니다. 서버 쪽은 환자 입력을 처리하고 의사의 응답을 생성합니다. 이는 클라이언트-서버 애플리케이션의 전형적인 예입니다. 서버가 광범위한 계산 부하를 처리하는 동안 클라이언트는 사용자 상호 작용을 담당합니다. 함수에 전달되고 반환되는 데이터는 많지 않지만, 데이터에 상당한 양의 처리가 필요할 수 있으므로 서버에서 처리합니다.

Doctor 프로그램은 입력에 문자 배열을 사용하고 다른 문자 배열을 출력으로 반환합니다. 아래 표에는 클라이언트와 서버 간에 문자 배열을 전달하는 네 가지 방법과 각 접근 방식을 구현하는 데 필요한 특성 및 함수가 나와 있습니다.

접근 방식 특성 또는 함수
계산된 문자 배열 [ size_is], [ length_is], [ ref]
스텁 관리 문자열 [ string], [ ref], 서버의 midl_user_allocate
스텁 관리 문자열 [ string], [ unique], 클라이언트 및 서버의 midl_user_allocate
문자열을 반환하는 함수 [ unique]

 

이러한 특성 조합과 관련된 제약 조건 내에서 한 문자 배열을 클라이언트에서 서버로 보내고 서버에서 클라이언트로 다른 문자 배열을 반환하는 다른 방법이 있습니다.

다음 topics 이러한 매개 변수를 관리할 수 있는 다양한 인터페이스 간의 디자인 절차를 보여 줍니다.