배열, 문자열 및 포인터 사용
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 이러한 매개 변수를 관리할 수 있는 다양한 인터페이스 간의 디자인 절차를 보여 줍니다.