편집하다:
더 혼란을 피하기 위해 : 나는 웹 서비스 등에 대해 이야기 하지 않습니다 . 내부적으로 응용 프로그램을 구성하는 것에 대해 이야기하고 있지만 컴퓨터가 통신하는 방식이 아닙니다. 프로그래밍 언어, 컴파일러 및 명령형 프로그래밍 패러다임 확장 방법에 관한 것입니다.
기발한:
명령형 프로그래밍 분야에서, 우리는 지난 20 년 (또는 그 이상) 동안 객체 지향 (OO)과 서비스 지향 (SO)이라는 두 가지 패러다임을 보았다. 구성 요소 기반 (CB).
두 패러다임 모두 모듈 개념을 도입하여 명령형 프로그래밍 패러다임을 확장합니다. OO는 객체 (및 클래스)를 호출하고 데이터 (필드)와 프로 시저 (메소드)를 모두 캡슐화합니다. 반대로, 데이터 (레코드, Bean 등)를 코드 (구성 요소, 서비스)와 분리합니다.
그러나 OO에는 스몰 토크, C ++, Java 및 기타 모든 JVM 호환, C # 및 기타 모든 .NET 호환, Python 등 기본적으로 패러다임을 지원하는 프로그래밍 언어가 있습니다.
SO에는 그러한 모국어가 없습니다. COM / DCOM (이진, C, C ++), CORBA, EJB, Spring, Guice (모든 Java) 등 절차 적 언어 또는 OO 언어 위에 만 존재합니다.
이러한 SO 프레임 워크는 개념에 대한 모국어 지원 누락으로 분명히 어려움을 겪고 있습니다.
- 서비스와 레코드를 나타 내기 위해 OO 클래스를 사용하기 시작합니다. 이로 인해 메소드 만있는 클래스 (서비스)와 필드 만있는 클래스 (레코드)가 명확하게 구분됩니다. 그런 다음 서비스 또는 레코드 간 상속은 클래스 상속으로 시뮬레이션됩니다. 기술적으로 엄격하게 유지되지는 않지만 일반적으로 프로그래머는 두 역할 중 하나만 수행하도록 수업을하도록 조언받습니다.
- IDL, XML 구성, Java 코드의 주석 또는 Guice와 같은 임베디드 DSL과 같이 누락 된 부분을 나타내는 추가 외부 언어를 사용합니다. 서비스 구성은 서비스 코드 자체의 일부가 아니므로 특히 필요하지만 이에 국한되지는 않습니다. OO에서 객체는 다른 객체를 생성하므로 이러한 기능이 필요하지 않지만 서비스는 다른 서비스를 인스턴스화하거나 구성하지 않기 때문입니다.
- They establish an inner-platform effect on top of OO (early EJB, CORBA) where the programmer has to write all the code that is needed to "drive" SO. Classes represent only a part of the nature of a service and lots of classes have to be written to form a service together. All that boiler plate is necessary because there is no SO compiler which would do it for the programmer. This is just like some people did it in C for OO when there was no C++. You just pass the record which holds the data of the object as a first parameter to the procedure which is the method. In a OO language this parameter is implicit and the compiler produces all the code that we need for virtual functions etc. For SO, this is clearly missing.
- 특히 최신 프레임 워크는 AOP 또는 자체 검사를 광범위하게 사용하여 누락 된 부분을 OO 언어에 추가합니다. 이것은 필요한 언어 표현을 제공하지는 않지만 이전 시점에서 설명한 보일러 플랫폼 코드를 피합니다.
- 일부 프레임 워크는 코드 생성을 사용하여 보일러 플레이트 코드를 생성합니다. XML의 구성 파일 또는 OO 코드의 주석은이 정보의 소스입니다.
위에서 언급 한 모든 현상이 SO에 기인 할 수는 없지만 SO 언어가 필요하다는 것을 분명히 보여주기를 바랍니다. 이 패러다임은 매우 인기가 있기 때문에 왜 없는가? 또는 학문적 인 것이 있지만 적어도 업계에서는 사용하지 않을 수도 있습니다.