"A Web service is a software system designed to support interoperable machine-to-machine interaction over a network. It has an interface described in a machine-processable format (specifically WSDL). Other systems interact with the Web service in a manner prescribed by its description using SOAP-messages, typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards."

| Service Provider | 특정 서비스 스펙을 구현하여 서비스를 제공한다. |
| Service Broker (Service Registry) | 서비스 등록 및 검색, 저장, 관리를 통해 Service Provider가 제공하는 서비스를 Service Consumer에게 연결한다. |
| Service Consumer (Service Requester) | Service Broker를 통해 특정 서비스를 찾아서 Service Provider의 서비스를 요청하고 사용한다. |
| 1 | 서비스 제공자(Service Provider) | 자신의 비즈니스 정보 및 제공할 서비스 정보, 그리고 이를 이용할 수 있는 방법 등에 대한 정보를 WSDL 파일로 작성한다. |
| 2 | 서비스 제공자(Service Provider) | 자신의 서비스의 WSDL을 UDDI 레지스트리에 등록한다. 이때 등록되는 서비스는 UUID에 기반한 고유 ID를 부여 받게 된다. |
| 3 | 서비스 요청자(Service Consumer) | UDDI 레지스트리에서 분류 및 식별 체계와 같은 여러 검색 조건을 통해 필요한 서비스를 검색하여 찾는다. 해당 서비스가 찾아지면, 그 서비스에 대한 WSDL 파일을 받게 된다. |
| 4 | 서비스 요청자(Service Consumer) | WSDL 정보를 이용해 서비스 제공자와 연결하여 서비스를 제공받게 된다. 이때 그 실행 결과는 SOAP을 이용한 XML 문서 형태로 받는다. |
| WSDL | 웹 서비스를 표현하고 기술하는 언어 (서비스 표현) |
| SOAP | 웹 서비스에서 사용되는 보편적이며 확장성 있는 메시지 프로토콜 (데이터 통신 프로토콜) |
| UDDI | 필요한 서비스를 찾을 수 있는 웹 서비스 레지스트리 (서비스 등록, 검색) |

| 1 | SOAP은 기본적으로 HTTP 기반 위에서 동작하기 때문에, HTTP와 같이 프록시와 방화벽에 구애받지 않고 쉽게 통신 가능하다. |
| 2 | SOAP는 표준 트랜스포트 프로토콜인 HTTP 이외의 다른 트랜스포트 프로토콜들을 사용할 수 있다. |
| 3 | 플랫폼 및 프로그래밍 언어에 독립적이다. |
| 4 | 간단하고 확장 가능하며, (멀티파트 MIME 구조를 사용하여) 첨부를 통합하는 SOAP XML 메시지를 지원한다. |
| 1 | XML 포맷은 태그 형태로 보내기 때문에 CORBA 같은 미들웨어 기술과 비교해서 상대적으로 느리다. (최근 네트워크 속도의 비약적인 발전과 성능 최적화 기술의 발전으로 대부분 해결됨) |


| <service> | Endpoint(실제 웹 서비스로 구현된 어플리케이션)의 물리적 위치를 정의하고 각 바인딩에 대한 포트 주소를 기술한다. |
| <port> | binding 정보와 address location을 정의한다.(WSDL 2.0에서는 <endpoint>로 변경됨) |
| <binding> | portType과 네트워크 호출 프로토콜, 어떤 통신 프로토콜을 통해서 통신을 할 것인지를 정의한다. |
| <portType> | 인터페이스의 메소드들을 정의한다. Interface(WSDL 2.0에서 <interface>로 변경됨) |
| <operation> | 서비스의 함수에서 사용되는 요청(Request)/ 응답(Response) 메시지 정의 |
| <message> | 서비스가 사용하는 메시지를 정의한다. 메소드의 인자와 리턴 값을 선언한다. (WSDL 2.0에서는 <types>를 통해 XML 스키마 타입을 사용하여 기술) |
| <types> | 문서에서 사용되고 있는 데이터 타입을 정의한다. |

| WS-Security | 무결성(Integrity)과 기밀성(Confidentiality), 인증(Authentication) 등을 강화하기 위한 SOAP 메시지 확장 메커니즘 규정. 크게는 WS-Policy, WS-Trust, WS-SecureConversation, WS-Federation, WS-Authorization을 포함한다. |
| WS-Trust | 상호간에 웹 서비스가 안전하게 작동할 수 있도록 하기 위한 신용 관계의 유지 및 해지를 설정하는 신뢰 모델에 대한 표준이다. |
| WS-SecureConversation | 메시지 교환시 보안이 어떤 방식으로 관리되는지를 명시한 security context에 대한 관리 표준이다. |
| WS-Coordination | 분산되어 있는 다양한 웹 서비스들이 트랜잭션에 참여할 수 있도록 액티비티를 생성 및 관리, 조정, 완료하는 메커니즘에 대한 표준 (Coordination Framework)이다. |
| WS-Transaction | Atomic 또는 Business 트랜잭션 프로토콜에 대한 표준 (Coordination Protocols)이다. |
| WS-ReliableMessaging | 목적지까지 메시지가 확실하게 도착하는 메시징 신뢰도를 보장하기 위해, 분산된 웹 서비스들 간에 주고 받는 ACK (acknowledge) 메시지 등을 정의하는 표준이다. |
| WS-Addressing | 웹 서비스 간 메시지를 전달하는 메커니즘을 제공하는 표준이다. |
| Java 환경 | JDK 1.4/ J2EE 1.4 환경에서 사용되는 Web Services API | Java EE 5/Java SE 6 환경(탑재)에서 사용되는 Web Services API |
| SOAP | SOAP 1.1 | SOAP 1.1, SOAP 1.2 |
| XML/HTTP | HTTP 바인딩 지원 안함 (SOAP 바인딩만 지원) | HTTP 바인딩 지원 (SOAP없이 HTTP를 통해 XML 전송) |
| WS-I Basic Profile | WS-I Basic Profile 1.0 | WS-I Basic Profile 1.1 |
| 데이터 매핑 모델 | 고유의 데이터 매핑 모델이 있음 (스키마 유형의 90% 커버) 커버되지 않는 것들은 javax.xml.soap.SOAPElement로 매핑 | JAXB (모든 XML 스키마를 100% 매핑함) |
| 인터페이스 매핑 모델 | 지원 안함 | Java 5.0 기능 사용 및 비동기식 기능 도입 |
| 동적 프로그래밍 모델 | 지원 안함 | 메시지 지향 및 동적 비동기식 기능 도입 |
| MTOM | 지원 안함 | JAXB를 통한 새로운 Attachment 스펙인 MTOM에 대한 지원을 추가 |
| 핸들러 모델 | SAAJ 1.2에 기반 | SAAJ 1.3에 기반 |
| 1 | JDK 1.4를 계속 사용해야 하는 경우 |
| 2 | SOAP 인코딩 메시지를 보내거나 RPC/encoded 스타일의 WSDL을 보내야 하는 경우 |
| 1 | 새로운 메시지 지향 API를 사용해야 할 경우 |
| 2 | MTOM을 사용하여 첨부 데이터를 보내야 하는 경우 |
| 3 | JAXB를 통해 XML 스키마를 더욱 잘 지원하기 위한 경우 |
| 4 | 웹 서비스 클라이언트에 비동기식 프로그래밍 모델을 사용하고 싶을 경우 |
| 5 | SOAP 1.2 메시지를 처리할 수 있는 클라이언트와 서비스가 있어야 하는 경우 |
| 6 | 웹 서비스에서 SOAP을 배제하고 XML/HTTP 바인딩만 사용하고 싶을 경우 |
| 1 | 제한된 XML Schema를 지원한다. |
| 2 | Java와 WSDL간의 매핑 지원이 부족하다. |
| 3 | 어플리케이션 이식성이 낮다. |
| 4 | 런타임(Runtime) 크기가 비대하다. |
| 5 | 개발 방법이 매우 복잡하다. |
| XML 문법으로 작성 | XML 문법 아님 (EBNF 문법 사용) |
| 네임스페이스 지원 | 네임스페이스 지원 안함 |
| 다양한 데이터 타입 지원, 데이터 타입 확장 가능 | 제한적인 데이터 타입 |
| 상속과 같은 객체 지향 개념 지원 | 객체 지향 개념 없음 |
| 개방적 컨텐츠 모델 | 폐쇄적 컨텐츠 모델 |
<element name="element 명" type="데이터형" ref="" form=""
minOccurs="" maxOccurs="" default="" fixed="" >
| name | element의 명칭 |
| type | element의 데이터 타입 |
| ref | 전역 element 선언을 참조하기 위해 사용 |
| minOccurs | element의 최소 반복 횟수, default 값은 1 |
| maxOccurs | element의 최대 반복 횟수, default 값은 1 |
| default | element의 값이 정의되지 않았을 때 할당되는 기본값 |
| fixed | element에 들어갈 고정값 |
<attribute name="" type="" ref="" form="" use="" default="" fixed="">
| name | attribute의 명칭 |
| type | attribute의 데이터 타입 |
| ref | 전역 attribute 선언을 참조하기 위해 사용 |
| form | 한정된 이름인지의 여부 (qualified/unqualified) |
| use | 사용 조건 (optional/prohibited/required) |
| default | attribute의 값이 정의되지 않았을 때 할당되는 기본값 |
| fixed | attribute에 들어갈 고정값 |
| JAX-WS 지원 | CFX에서는 JAX-WS API를 구현하고 있어서 웹 서비스 구현을 쉽게 하고 있다. |
| Spring Integration | CXF는 Spring 2.X 이상을 지원하며 endpoint 설정이나 client injection 등 Spring과의 통합을 용이하게 한다. |
| Aegis Databinding | CXF는 JAXB와 함께 Aegis Databinding을 지원한다. JAXB와 다르게 Annotation 방식으로 사용할 필요가 없으며, List/Map/Date 등의 다양한 데이터 타입 사용이 매우 쉽다. |
| RESTful services | Annotation 설정 방식으로 RESTful 서비스 구현을 용이하게 한다. |
| WS-* Support | CXF는 다양한 웹 서비스 스펙(WS-Addressing, WS-Policy, WS-ReliableMessaging, WS-Security)을 지원한다. |
| Apache Licensed | 아파치 라이센스 사용으로 활용에 자유롭다. |
| Celtix와 X-Fire 프로젝트의 합작품 | 기능 보강 및 사용 편의성 면에서 새롭게 재구성된 부분이 많이 존재한다. |
| 웹 서비스 표준 지원 | SOAP, the Basic Profile, WSDL, WS-Addressing, WS-Policy, WS-ReliableMessaging, WS-Security |
| Frontend 모델 제공 | JAX-WS Frontend와 Simple Frontend를 제공한다. |
| 사용 편의성 | 간단한 API 사용으로 서비스 구현 가능, Tool(ANT Task 등)을 제공한다. |
| 바이너리와 기존 프로토콜 지원 | XML/비-XML 타입 바인딩(JSON, CORBA)을 제공, 여러 전송 프로토콜을 지원할 수 있는 조립식 아키텍처를 제공한다. |
| 비동기 방식 호출 가능 | 비동기 방식의 호출이 가능(Asynchronous Invocation Model 제공)하다. |
| JDK 1.5 이상 지원 | Annotation 기능 등 여러 가지 이유 때문에 JDK 1.5 이상만 지원한다. |
| Ant Tasks | wsdl2java, java2ws를 위한 ant task를 제공한다. |
| Java to WS | SEI 클래스와 관련 타입 클래스들로부터 WSDL document, wrapper bean 클래스, server/client side 소스 코드들을 생성한다.(CXF 2.1) |
| Java to WSDL | SEI 클래스와 관련 타입 클래스들로부터 WSDL document를 생성한다.(CXF 2.0.x) |
| Maven Integration and Plugin | 관련 라이브러리를 배포해주는 Maven Repository들과 함께 빌드 툴로써 Maven을 사용할 수 있도록 Maven Plugin을 제공한다. |
| XSD to WSDL | XSD(Schema 파일)을 통해서 WSDL document를 생성한다. |
| WSDL to Java | WSDL document로부터 서비스 구현에 필요한 annotation으로 작성된 Java 소스 코드와 어플리케이션을 빌드할 수 있는 ANT 기반 XML 파일을 생성한다. |
| WSDL to Service | WSDL document로부터 HTTP 혹은 JMS 서비스 정의를 갖는 새로운 WSDL document를 생성한다. |
| WSDL to SOAP | WSDL document로부터 SOAP binding 정보를 갖는 새로운 WSDL document를 생성한다. |
| WSDL to XML | WSDL document로부터 XML binding 정보를 갖는 새로운 WSDL document를 생성한다. |
| WSDLValidator | WSDL document나 WSDL URL이 well-formed document이고 Schema에 맞게 작성된 것인지 확인해주는 일을 한다. |
| anyframe.core.remoting.zip |