Your SlideShare is downloading. ×
Proxy pattern
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Proxy pattern

1,146
views

Published on

Proxy Pattern

Proxy Pattern

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,146
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Proxy Pattern 아키텍트를 꿈꾸는 사람들 http://cafe.naver.com/architect1 발표 : 김연기 http://scor7910.tistory.com
  • 2. Proxy [pr ́ksi]ɑ : 1 대리 , 대리권 2 대리투 표 , 위임장
  • 3. Context • 클라이언트가 특정 서비스 혹은 모듈 (Component) 에 접근 하는데 , 언어마 다 , OS 마다 방법이나 구현이 틀리고 복잡하다 .
  • 4. Problem • Component 를 사용 / 접근 하는데 안전해 야 한다 . • 클라이언트 입장에서 환경 (OS, 언어… ) 에 상관없이 동작이나 구문이 비슷해야 한다 . • 환경에 의한 성능하락이나 비용 손실을 고민해야 한다 .
  • 5. Solution • 클라이언트가 Component 에 직접 접근 하지 않고 대리자를 통해 원하는 동작이 나 결과를 얻을 수 있게 한다 . • 대리자는 Component 의 Interface 를 제공하고 , 클라이언트가 원하는 값 / 동 작에 대하여 안전 하게 결과를 얻을 수 있도록 추가적인 작업을 해야 한다 .
  • 6. Structure Class •Client 협력자 •Proxy 책임 • Proxy 를 통해 인터페이스 를 사용 . •자체 작업을 수행 . Class •AbstractOriginal 협력자 책임 • Proxy 와 원본 클래스 의 추상 base 클래스 . Class •Proxy 협력자 •Original 책임 • 원본 (Original) 인터페 이스를 Client 에 제공 . •안전하게 접근하고 올바 른 동작을 보장해야 한다 . Class •Original 협력자 책임 • 특정 서비스 , 동작을 구현 한다 .
  • 7. Dynamic Client Proxy Original Task Servic e Servic e 선작업 후작업
  • 8. Implementation • Proxy 에서 처리할 것과 Original 에서 처 리할 항목을 파악한다 . • 추상 기본 클래스에서 Original 과 Proxy 클래스를 파싱한다 . • Proxy 클래스의 동작을 구현한다 . • Proxy 클래스에 옮겨진 작업이 Client 와 Origin 클래스에 중복되어있다면 제거한다 . • Proxy 클래스와 Origin 클래스를 연결한 다 . • Origin 과 클라이언트간 직접적인 관계를 제거 한다 .
  • 9. Variant(1) • Remote Proxy : 원본의 물리적 위치를 저장하고 클라이언트는 Proxy 를 이용해 원본데이터를 얻어올 수 있다 . • Protection Proxy : 권한이 필요한 작 업이나 데이터를 엑세스 할때 프록시가 권한을 검사하고 결과를 클라이언트에게 준다 .
  • 10. Variant(2) • Cache Proxy : Proxy 는 원본 (Original) 의 데이터를 미리 받아 두고 Client 는 빠르게 데이터를 처리 할 수 있다 . Proxy 는 데이터의 유효성 검사나 Client 의 반복적인 데이터 요청에 대한 처리가 필요하다 .
  • 11. Variant(3) • Synchronization Proxy : 다수의 쓰레드가 원본 데이터에 접근 하려 할 때 동기화 작업을 Proxy 에서 수행 하도록 한다 . template <class T> class LockingProxy { public: LockingProxy(T* pObj) : pointee_ (pObj) { pointee_->Lock(); } ~LockingProxy() { pointee_->Unlock(); } T* operator->() const { return pointee_; } private: LockingProxy& operator=(const LockingProxy&); T* pointee_; }; 출처 : Modern C++ Design
  • 12. Variant(4) • Counting Proxy : 어떤 instance 의 사 용 counting 을 Proxy 에서 계산하고 생성 / 삭제 작업을 하는 구조에 사용 될 수 있다 . • Virtual Proxy : client 가 데이터를 요 청하면 Proxy 는 로컬에 저장된 데이터 를 클라이언트에 주고 , 존재하지 않는 데이터는 원본에 요청하여 필요한 데이 터를 얻어온다 .
  • 13. Variant(5) • Firewall Proxy : 외부 네트워크로부터 들어오고 나가는 패킷을 Proxy 에서 내 부 보안 설정을 확인하여 외부 네트워크 망과 통신을 관리한다 .
  • 14. Known Use • NeXTSTEP • OMG – CORBA(Common Object Request Broker Architecture) • World Wide Web • OLE(Object Linking & Embedding)
  • 15. Consequence – 장점 - • 효율을 향상 시키고 비용을 감소시킨다 . • 서버 Component 의 위치와 Client 가 분 리되어 네트워크가 변경이 되더라도 Client 는 거기에 상관없이 코드를 안정 적으로 사용할 수 있다 . • Proxy 클래스로 인해 Client 가 수행해 야할 불필요한 코드를 덜어준다 .
  • 16. Consequence – 단점 - • 우회 방식을 사용하기 때문에 성능이 저 하된다 . • 지나치게 사용하면 과부하를 가져올수 있다 .