SCA는 여러 가지 방식으로 구현할 수 있는 추상적 개념입니다. 특정 기술, 프로그래밍 언어, 호출 프로토콜 또는 전송 메커니즘을 요구하지 않습니다. SCA 컴포넌트는 XML 기반 언어인 SCDL(Service Component Definition Language)을 사용하여 설명됩니다.
SCA 컴포넌트에는 다음과 같은 특성이 있습니다.
WebSphere ESB | WebSphere Process Server |
---|---|
중개 플로우 | 중개 플로우 |
일반 Java™ 오브젝트 | 일반 Java 오브젝트 |
비즈니스 프로세스 | |
비즈니스 상태 머신 | |
비즈니스 규칙 | |
휴먼 타스크 |
SCA는 하부 구조에서 비즈니스 로직을 분리하여 응용프로그램 프로그래머가 비즈니스 문제점을 해결하는 데 초점을 둡니다. IBM WebSphere Process Server는 이와 동일한 전제에 기초합니다. 그림 1에서는 WebSphere Process Server의 구조적 모델을 보여줍니다.
WebSphere 환경에서, SCA 프레임워크는 WebSphere Application Server의 Java 2 Platform, Enterprise Edition (J2EE) 런타임 환경을 토대로 합니다. 전체 WebSphere Process Server 프레임워크는 SOA Core, 지원 서비스 및 서비스 컴포넌트로 구성됩니다. 비즈니스 통합에서의 응용프로그램 통합 요구사항과 연결성에 보다 중점을 둔 이 전체 기능의 서브세트가 있는 동일한 프레임워크를 WebSphere Enterprise Service Bus에서 사용 가능합니다.
소프트웨어 컴포넌트의 개념은 SCA 프로그래밍 모델의 기초를 형성합니다. 언급한 대로, 컴포넌트는 로직을 구현하는 단위로 인터페이스를 통해 다른 컴포넌트에 로직을 사용할 수 있습니다. 또한 컴포넌트는 다른 컴포넌트에서 서비스를 사용할 수 있도록 요청합니다. 이 경우, 컴포넌트는 해당 서비스에 대한 참조를 나타냅니다.
SCA에서, 모든 컴포넌트는 최소한 하나의 인터페이스를 나타내야 합니다. 그림 2에 표시된 어셈블리 다이어그램에는 세 가지 컴포넌트 C1, C2 및 C3가 있습니다. 각 컴포넌트에는 원 안의 문자 I로 표시되는 인터페이스가 있습니다. 컴포넌트는 또한 다른 컴포넌트를 참조할 수 있습니다. 참조는 정사각형 안의 문자 R로 표시됩니다. 참조 및 인터페이스는 어셈블리 다이어그램에서 링크됩니다. 기본적으로, 통합 개발자는 필요한 로직을 구현하는 컴포넌트의 인터페이스와 컴포넌트를 연결함으로써 참조를 "결정"합니다.
호출되는 서비스에 대한 액세스를 제공하기 위해, SCA 프로그래밍 모델은 ServiceManager 클래스를 포함하므로 개발자가 사용 가능한 서비스를 이름별로 찾을 수 있습니다. 여기에는 서비스 찾아보기를 예시하는 일반적인 Java 코드 단편이 있습니다. ServiceManager는 시스템이 제공하는 서비스인 BOFactory 서비스에 대한 참조를 얻는 데 사용됩니다.
//Get service manager singleton ServiceManager smgr = new ServiceManager(); //Access BOFactory service BOFactory bof =(BOFactory) smgr.locateService("com/ibm/websphere/bo/BOFactory");
locateService 메소드에서 참조되는 서비스의 이름을 지정하여 개발자는 자신의 서비스에 대한 참조를 얻기 위해 유사한 메커니즘을 사용할 수 있습니다. ServiceManager 클래스를 사용하여 서비스에 대한 참조를 얻은 후에, 호출 프로토콜 및 구현 유형과 독립적인 방식으로 해당 서비스에서 사용 가능한 조작을 호출할 수 있습니다.
레거시 응용프로그램이나 기타 외부 구현과 같이, 외부 시스템에서 사용 가능한 기능이나 컴포넌트에서 비즈니스 로직을 제공하는 경우가 있습니다. 이 경우, 통합 개발자는 외부 구현을 "가리키는" 컴포넌트에 대한 참조를 연결하는 데 필요한 구현을 포함하는 컴포넌트에 대한 참조를 연결하여 참조를 해결할 수 없습니다. 그러한 컴포넌트를 가져오기라고 합니다. 가져오기 정의 시, 위치 및 호출 프로토콜의 측면에서 외부 서비스가 액세스될 수 있는 방법을 지정해야 합니다.
가져오기와 유사하게, 외부 응용프로그램에서 사용자 컴포넌트에 액세스해야 할 경우가 자주 발생하는데 이때, 액세스가 가능하도록 설정해야 합니다. 이는 사용자 로직을 "외부"에 나타내는 특정 컴포넌트를 사용하여 수행됩니다. 이러한 컴포넌트를 내보내기라고 합니다. 이것은 동기 또는 비동기적으로 호출될 수 있습니다.
WebSphere ESB에서, SCA 서비스 모듈은 여러 다른 J2EE 서브모듈을 포함하는 J2EE EAR 파일로서 패키지됩니다. WAR 파일과 같은 J2EE 요소는 SCA 모듈과 함께 패키지될 수 있습니다. JSP와 같은 비SCA 아티팩트는 SCA 서비스 모듈과 함께 패키지될 수도 있습니다. 이것은 독립형 참조라고 하는 특수한 컴포넌트 유형을 사용하여 SCA 클라이언트 프로그래밍 모델을 통해 SCA 서비스를 호출하게 합니다.
SCA 프로그래밍 모델은 매우 설명적입니다. 통합 개발자는 어셈블리 다이어그램에서 직접 선언적인 방식으로 동기 또는 비동기적으로 호출되어야 하는지 여부와 관계없이 보안 신임의 호출, 전파의 트랜잭션 동작과 같은 측면을 구성할 수 있습니다. 개발자가 아닌 SCA 런타임이 이 수정자에서 지정된 동작을 구현하는 데 관여합니다. SCA의 선언적인 유연성은 이 프로그래밍 모델에서 가장 강력한 기능 중 하나입니다. 개발자는 비동기 호출 메커니즘을 수용할 수 있는 것과 같이, 주소 지정 기술 측면에 중점을 두기 보다는 비즈니스 로직 구현에 집중할 수 있습니다. 이러한 모든 측면은 SCA 런타임에 의해 자동으로 수행됩니다.
규정자는 서비스 클라이언트와 대상 서비스 간에 상호작용을 제어합니다. 규정자는 서비스 컴포넌트 참조, 인터페이스 및 구현에서 지정될 수 있으며, 보통 구현과는 무관합니다.
규정자의 다른 카테고리는 다음을 포함합니다.
SCA는 프로그래밍을 수행하거나 서비스 구현 코드를 변경하지 않고 서비스 품질(QoS) 규정자가 선언적으로 컴포넌트에 적용되게 합니다. 이것은 WebSphere Integration Developer에서 수행됩니다. 보통 솔루션 전개를 고려할 준비가 되면 QoS 규정자를 적용합니다. 자세한 정보는 서비스 규정자 참조의 품질을 참조하십시오.