COM์ ์ค์ฉ์ฃผ์๊ฐ ๋์ ์ฐ๋ฌผ์ด๋ค. ๋ง์์ ๋ ๋ค. ์์
์ ์ธ ์ฑ๊ณต์ ์ด๋๊ฒ ๋ ์ด์ ์ผ ๋ฌด์์ด๋ ๊ฐ์.. ์ถ์์ ์ธ ํ๋ฌธ์ด ์๋ ์ค์ฉ์ ์ธ ํ๋ฌธ์ ์ ํด ๋ณด๊ณ ์ถ์๊ธฐ ๋๋ฌธ์.. ๊ณต๋ถํ๊ธฐ๋ก ๋ง์ ๋จน์๋ค. ๋, ํ๋ค๊ฐ ๊ทธ๋ง ๋๋ฉด ์๋ ํ
๋ฐ.. ๋ผ๋ ๊ฑฑ์ ์ ๋ค๋ก ์ฌ์ณ ๋๊ณ ์ฑ
ํ๊ถ์ ๊ตฌํด์ ์ฐจ๊ทผ ์ฐจ๊ทผ ๋ณด๊ธฐ๋ก ํ๋ค.
- ์ฑ
์ด ์ ๋ง ์ด๋ ต๋ค.
- ๋๋๋ค.
1.1. 1. ํฅ์๋ C++์ผ๋ก์จ์ COM ¶
- ๊ฐ๋จํ C++ ํด๋์ค๋ก ์์ํ์ฌ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ด์ง Component๋ก์จ ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ ๋ฒ์ ๊ฐ๋จํ ์์ ๋ฅผ ํตํด์ ๋ฐฐ์ฐ๊ฒ ๋๋ค. ์ฒ์์ DLL์ ํตํด์ client ์๊ฒ ์ ๊ณตํ๋ ๋ฌธ์ ์ ๋ํด ๋งํ๋ฉฐ. ๋ค์์๋ ์ด๋ ๊ฒ ์ ๊ณต๋์ด์ง ์ปดํฌ๋ํธ์ ๋ํ ๋ฐฉํ๋ฒฝ(?)๋ฑ์ ๋ํด ๋
ผ์ ํ๋ฉด์ ์ธํฐํ์ด์ค๋ฅผ ํตํ์ฌ ์ปดํฌ๋ํธ ๋ด์ ์๋ํ๋ฅผ ์ํ ๋ฐฉ๋ฒ๋ค์ ์ค๋ช
ํด์ค๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ค์์ผ๋ก๋ abstract class๋ฅผ ์ฌ์ฉํด (virtual function์ ์ด์ฉํ ๋ฐฉ๋ฒ) ์ธํฐํ์ด์ค์ ํ์ฅ์ ๊ดํ ๋ถ๋ถ๊น์ง ์ค๋ช
ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋์ผ๋ก๋ RTTI ์ด์ฉํ์ฌ ๋ ๋์ ์ธํฐํ์ด์ค์ ํ์ฅ ๋ฐฉ๋ฒ๊ณผ ๋ค์ค์ client ์๊ฒ ์ปดํฌ๋ํธ๋ฅผ ์ ๊ณตํ ์ ์๊ฒ ๋ง๋๋ ๋ถ๋ถ๊น์ง ์ค๋ช
ํ๋ค. ํ์๋ผ์ ๊ทธ๋ฐ์ง ์ ๋งคํ ์ฉ์ด๋ค์ด ๋ง์ด ์์ด์ ์์ง๋ ์ดํด๊ฐ ๊ฐ์ง ์๋ ๋ถ๋ถ์ด ๋ง์๋ค. ํ๋ฒ๋ chapter 1์ ์ฝ์ ํ์ ์ ๋ฆฌํ๊ณ chapter 2๋ก ๋์ด๊ฐ์ผ ํ๊ฒ ๋ค.
2. Thread ¶
- ์ ๋ง ์๊ฐ์ด ์๋ค. ํ์ฌ์์ ํ๋์ผ๋ ์์ฒญ ์ฌ์ด ๊ฒ๋ค์ธ๋ฐ ์์ด๋ฆฌ ์๊ฐ์ด ๋ง์ด ๋๋์ง.. ์์ด๋ฌ๋ ํ๋ค. chapter1์ ์ด์ ์ ๋ฆฌ ํด์ผ ํ๋๋ฐ, ๊ฝค ๊ด์ฐฎ์ ๋ด์ฉ ๊ฐ์๋ค. ๋ค์ reviewํ๋ฉด์ ์ ๋ฆฌํด์ผ ํ๋ ์๊ฐ์ด ๋๊ธธ. ์ฃผ๋ง์ด๋ ๊ฐ๋ฅ ํ๊ฒ ๋ค.
- ๊ฐ์ธ์ ์ผ๋ก COM ๊ตฌํํ ๋๋ (์ ํํ์ผ ๋ญ ActiveX Control) ์์ COM ๊ตฌํํ๋๋ฐ ํ๋ ์ผ๋ค์ด ๋ง์์ -_-.. (Interface ์์ฑํ๊ณ IDL ์ปดํ์ผํด์ฃผ๊ณ , COM Component DLL Register ํด์ฃผ๊ณ ๊ทธ๋ค์ COM Component ์ ๋์๊ฐ๋์ง ํ
์คํธ ๋ฑ๋ฑ) ๊ฑฐ์ Visual Studio ์ ์์๋๋ก ์์ฑํ๋ค๋. --a ๊ทธ๋ฆฌ๊ณ COM ์ ์ดํดํ ๋์๋ OOP ์ ๋ํ ์ข ๋ฐ๋ฅธ ์ดํด๋ฅผ ์ค๊ฐ์ ํ์๋ก ํ ๊ฒ์ด๋ผ ์๊ฐ. ๋์์ธ ํจํด์์์ Factory, FacadePattern ์ ๋ํด์๋ ์๋ง ์ฝ์ด๋ณผ ์ผ์ด ์๊ธฐ๊ธฐ๋ผ ์๊ฐ.
- '์ ๋ฆฌ'์ ์ฝ๋งค์ด์ง ์๊ธฐ๋ฅผ. ๋ญ, ์ํ ์๋ค๊ฐ ๊ณต๋ถํ๋ฉด์ ์ฑ์ฅํ๋ค๋ฉด ๊ทธ๊ฒ์ผ๋ก ์กฑํ๊ฒ.. (์์ ์๋ '์ ๋ฆฌ'ํด์ผ ์ฑ์ฅํ๋ค ์์ผ๋ก ์ด์ฌํ ์ฌ๋๋ค์ ์ค๋ํ์ง๋ง. ๋ญ.) ๋จ, ํ๊ฐ์ง ๋ ์ถฉ๊ณ ๋ผ๋ฉด '๊ธ๋ก ์ ๋ฆฌํ์๋์ ์ํ์๋'์ ํ์ต ํจ๊ณผ๋ ์์์ ๋น๊ตํด๋ณด๊ธฐ ๋ฐ๋๋ค๋. ํํ -_-v ๊ฐ์ฅ ํ์ตํจ๊ณผ๋ฅผ ๋์ด๋๊ฑด, ์ฑ
๋ณด๊ณ ์ ๋ฆฌํ์ง ๋ง๊ณ '์๊ธฐ ๋จธ๋ฆฟ์์ผ๋ก ์๋ ํ๋๋งํผ๋ง ์ ๋ฆฌํ๋ผ' ๋ผ๋๊ฒ. --1002
- '์ ๋ฆฌ'์ ์ฝ๋งค์ด์ง ์๊ธฐ๋ฅผ. ๋ญ, ์ํ ์๋ค๊ฐ ๊ณต๋ถํ๋ฉด์ ์ฑ์ฅํ๋ค๋ฉด ๊ทธ๊ฒ์ผ๋ก ์กฑํ๊ฒ.. (์์ ์๋ '์ ๋ฆฌ'ํด์ผ ์ฑ์ฅํ๋ค ์์ผ๋ก ์ด์ฌํ ์ฌ๋๋ค์ ์ค๋ํ์ง๋ง. ๋ญ.) ๋จ, ํ๊ฐ์ง ๋ ์ถฉ๊ณ ๋ผ๋ฉด '๊ธ๋ก ์ ๋ฆฌํ์๋์ ์ํ์๋'์ ํ์ต ํจ๊ณผ๋ ์์์ ๋น๊ตํด๋ณด๊ธฐ ๋ฐ๋๋ค๋. ํํ -_-v ๊ฐ์ฅ ํ์ตํจ๊ณผ๋ฅผ ๋์ด๋๊ฑด, ์ฑ
๋ณด๊ณ ์ ๋ฆฌํ์ง ๋ง๊ณ '์๊ธฐ ๋จธ๋ฆฟ์์ผ๋ก ์๋ ํ๋๋งํผ๋ง ์ ๋ฆฌํ๋ผ' ๋ผ๋๊ฒ. --1002
- ํ๊ต ์์
๋ฐ๋ผ๊ฐ๊ธฐ๋ ๋ฒ
์ฐจ๋ค. ์๋ฐ๋ ํ๋ค๊ณ , ๋์ ์๊ณ .. -_-; ์.. ์ด๊ธฐ ํ๋ค์ด๋ผ.. ์ธ์ ๋ณด๋.. COM์.. ใ
ใ
ก ์.. ์ด๊ธฐ ์ซ์ด๋ผ.. -- guts
- COM ๋ณด๋๊ตฌ๋ ๋๋ ๊ฐํํ๊ณ ๋ถํฐ ๋ณด๊ณ ์๋๋ฐ Standard C++๋ก ๊ตฌํํ๊ฒ์ ๋ฐ๋ ์ดํด๋ชปํ๊ณ ~ MFC๋ก ๊ตฌํํ๋๊ฑฐ ๋ณด๊ณ ์๋ค. ์ฒ์์ ์น์์ ์ค์น๋๋ ActiveX ๋ณด๋ ค๊ณ ํ๋๋ฐ ์ด์ฉ๋ค ๋ณด๊ณ ์๋์ง ~ ์ ๋ฆฌ์ํด๋ผ ๋ณด์์ค๊ป --๊ด์