Search Results for 'spi'

1 POSTS

  1. 2007.09.18 SPI(Service Provider Interface) 디자인

SPI(Service Provider Interface) 디자인

Posted 2007. 9. 18. 04:20

SPI는 보통 플러그인(plugin) 형태로 같은 기능을 여러 벤더에서 제공할 수 있도록 만든 특수한 프로그래밍 인터페이스(API)이다. 일례로 JCE(Java Cryptography Extension)의 경우 암호 알고리즘에 대한 일반적인 인터페이스만 정의하고, 실제 구현은 암호 알고리즘을 가지고 있는 벤더들이 제공할 수 있도록 되어 있다. 또 다른 예로, 자바 XML 파서의 경우도 인터페이스만 제공하고, 실제 XML 파서는 여러 벤더의 파서를 사용할 수 있도록 SPI를 제공하고 있다.

SPI 디자인은 API 디자인보다 더 까다롭다. 흔히 하는 실수 중에 하나가 하나의 벤더만 살펴보고, 그 벤더에 맞춰서 SPI를 디자인하는 경우다. 이렇게 디자인하면 특정 벤더는 매우 쉽게 통합할 수 있지만, 다른 벤더의 지원이 어렵거나 불가능해질 수도 있다. SPI 디자인은 3의 법칙(The Rule of Threes)을 따른다. 최소한 3개 이상의 벤더를 살펴보고, 이들을 고루 지원할 수 있는 SPI를 만들어야 한다는 뜻이다. 1개만 보고 만든 SPI는 다른 벤더를 지원하는 것이 불가능할 가능성이 크고, 2개 벤더만 참조한 SPI는 제3의 벤더 지원이 까다로울 수 있다는 경험에서 나온 법칙이다.


API 디자인에 대한 9월 마소 원고 작성하다가 분량 때문에 짤린 내용입니다^^...