2010-04-06 4 views
4

저는 기술에 관심이 없습니다. CORBA 대 웹 서비스, 나는 원리에 관심이있다. 우리가 OOP를 할 때, 우리는 왜 더 높은 차원에서 그렇게 절차적인 것을 가져야 하는가? OOP 및 관계형 데이터베이스와 동일하지 않습니까? 보일러 플레이트를 제외하고 코드 생성을 통해 서비스가 지원되는 경우가 종종 있습니다. 새 SOM 서비스 객체 매퍼이기 때문에 서비스라고 생각합니다. 그래서 다시, 객체보다는 wervices의 이유는 무엇입니까?분산 된 서비스는 분산 된 개체보다 어떻게 더 나은가요?

답변

4

서비스 분배 VS 객체 분배 주요 차이점은 객체 세밀한 기본적 동안 서비스 및 연산에 의해 정의가 대단위 점이다.

원격 호출을 수행 할 때 네트워크 대기 시간은 사실이며 인터페이스가 더 거친 것이 좋습니다. 서비스 지향적 인 패턴과 관행은 그러한 인터페이스를 만드는 데 중점을 둡니다.

요약하면 문제는 기술 또는 프로토콜 (바이너리 대 XML)이 아니라 사용 시나리오입니다. 당신은 CORBA에서 '서비스'를 만들고 WCF에서 구식 분산 객체 프로그래밍을 할 수 있지만, 전자는 객체쪽으로 더 편향된 것처럼 보입니다.

+0

이것은 실제적인 것 같지만, 여전히 논란의 여지가 없습니다. 왜냐하면 더 조잡하고 사용 가능한 많은 개념과 객체를 사용하여 모델링 된 서비스가 많이 있기 때문입니다. –

0

IMHO, 높은 수준에서 약간의 차이가 있습니다. 그러나 구현 레벨에서 분산 객체, CORBA, Java RMI 등은 많이 필요합니다. 나는 실제 프로덕션 시스템에서 CORBA 및 이후 RMI로 작업하려고 시도했으며 버전을 동기화 된 상태로 유지하는 것은 악몽이었습니다.

요즘은 메시지를 보내고 응답을받습니다.

+0

확인 (인 Szymon은 본질적으로 같은 eariler를 썼다)? –

+0

분산 객체를 전달하면 객체의 코드와 데이터를 전달한다는 의미입니다. 메시지를 전달하는 것에 대해 썼을 때,받는 쪽의 Object에 구문 분석/읽을 수있는 일부 텍스트/문자열 데이터를 전달해야했습니다. DBMS를 사용하여 자신의 파일 입출력을 수행하는 대신 RDBMS 패키지를 사용하는 것과 마찬가지로 다른 사람이 열, 인덱스 등을 추가 할 수 있으며 코드가 신경 쓰지 않아도됩니다. 객체를 전달할 때 정의를 동기화 상태로 유지해야합니다. – fishtoprecords

0

분산 된 개체는 무엇을 의미합니까? 동기화해야하는 동일한 개체의 사본 2 개? 객체에 대한 각 변경 사항에 대한 2 단계 커밋? 복잡한.

네트워크를 중심으로 개체를 이동하는 경우? 이 경우 "소유권"을 올바르게 포기해야합니다. 한 호스트가 다른 객체가 객체의 상태를 변경했다는 것을 어떻게 알 수 있습니까? 다시 복사해야합니까?

"분산 객체"모델은 빠르게 복잡해집니다.

서비스는 가장 간단합니다. 정확하게 하나의 호스트가 서비스를 제공하고 상태를 유지한다는 의미입니다. 관계형 데이터베이스는 수십 년 동안이 서비스 모델을 보여주었습니다.

하나의 호스트가 서비스를 제공하기 때문에 사본간에 동기화가없고 복제가없고 매우 제한된 복잡성이 있습니다.

를 "우리가 높은 수준에서 너무 절차 뭔가를해야하는 이유"당신은 더 높은 수준의 절차 뭔가를 필요가 없습니다.

여러 가지 방법으로 개체 (서비스를 제공하는 호스트)가 있습니다. 완벽하게 객체 지향적입니다.

일반적으로 - 싱글 톤이며, 이는 매우 단순합니다.

+0

분산 객체를 구현하는 것이 더 복잡 할 수도 있지만 맵핑 솔기가 그것을 중요하게 여기는 것에 동의합니다. 또한 서비스에 대한 인수는 순수한 데이터 일 수도 있고 객체가 될 수도 없으므로 싱글 톤 아이디어로도 나에게 비 절차 적으로 보이지 않습니다. 나는 서비스와 프로세스가 부자연 스럽다고 말하지 않고 언급 한 많은 사례에서 더 우수하지만 OOP가 주류 사용에서 낮은 수준의 절차 프로그래밍을 대체 했으므로 개발자가 OOP 관점에서 생각하는 것이 더 쉽다고 생각합니다. 그것은 나를위한 것입니다. –

+0

@Gabriel Ščerbák : "서비스에 대한 인수는 순수한 데이터 만 사용할 수 있습니다.": 거짓. 인수는 직렬화 된 객체 일 수 있습니다. 서비스 **는 ** 객체입니다. OO 디자인을 서비스에 적용하는 것은 쉽습니다. 왜 그 서비스는 단순히 절차라고 반복해서 말합니까? 그것들은 싱글 톤의 ** 메쏘드 ** ** 객체 **입니다. –

+0

때로는 객체를 인수로 사용하는 것이 유효한 유스 케이스 일 수 있지만 데이터가 아니라 작동이기 때문에 사용할 수있는 경우가 있습니다. 서비스를 사용하여 어떻게 모델링 하시겠습니까? 서비스 호출에 대한 인수로 전달 된 데이터에 동작을 어떻게 적용 할 수 있습니까? 인수로 다른 싱글 톤에 URL을 전달해 주시겠습니까? –

1

분산 객체 및 원격 프로 시저 호출은 다음과 같습니다. 프로세스 간 공유 상태와 같은 종류이며 서비스는 자체 포함됩니다.

공유 상태 언어의 일반 OOP과 Actor 모델을 사용하는 언어 및 공유 상태가없는 언어 (Arlang에서는 아무것도 공유하지 않는 가벼운 프로세스가 많음)와의 관계와 비교할 수 있습니다. 메시지를 통해서만 의사 소통). 액터 모델 접근법은 훨씬 덜 복잡하고 동시성 등과 관련하여 이점을 줄 수 있습니다.

+0

예를 들어 배우를 언급했거나 서비스에 대한 객체 지향적 인 대안을 간접적으로 제안한 경우 완전히 확신 할 수 없습니다. 나를 잘못 이해하지 마라, 나는 과대 광고를 넘어서보고 싶다. –

+0

"바닐라 OOP"와 액터 모델의 차이점과 평행을 그리는 것으로 문제의 대상에 약간의 빛을 가져다려고했습니다. –

+0

바닐라로 OOP 나는 C#/Java/뭐든간에 주류 OOP를 의미합니다. OO - 그 아이디어는 더 크고, Alan Key와 같은 사람들은 처음에는 메시지에 관한 것이 었습니다. "나는 객체라는 용어를 만들어 유감스럽게 생각합니다. 메시지에 관한 것이 전부입니다." 얼랭 (Erlang)은 클래스 나 객체가 없더라도 객체 지향 (OO)의 일종입니다. http://lists.squeakfoundation.org/pipermail/squeak-dev/1998-October/017019.html –

0

왜 반대입니까? 분산 서비스와 분산 객체의 개념은 완전히 중복되지는 않지만 크게 중복됩니다 (SOAP은 결국 객체 액세스 프로토콜입니다). WCF는 한 줄의 구성으로 '웹 서비스'와 '원격 객체'를 전환하는 한 가지 예입니다.

차이점은 주로 전문 용어이며 응용 프로그램의 역사적 영역으로 설명됩니다.

, 나는이 질문에 질문으로 기술적 인 문제에 대해 잊고 나를 어떻게 서로 다른 분산 객체를 전달 메시지에서 WS 방식으로 메시지를 보내는 이야기

+0

이전의 CORBA 기술을보다 효과적으로 배포 할 수있는 방법으로 웹 서비스가 나에게 소개되었습니다. 논쟁을 요청했을 때 기술적 인 내용 만이 제시되었습니다. OOP는 요즘 보편적 인 (절차 적 appraoch 이상) IMH입니다. 그래서 개념적 수준으로 돌아가는 것이 왜 혼란 스럽습니까? SOAP은 오래 전에 원래 의미를 잃어 버렸습니다.나는 경험이 없지만 WCF에 관해 당신을 믿을 것이다. 그러나 C++ (OOP)에서 절차 적 (C 스타일)을 혼합하는 것과 다른 것은 아니다. 나에게 개념적으로 잘못된 것 같습니다. Actor 객체 (언급 한 것처럼)가 웹 서비스라면, 나에게 의미가있을 것이다. –

+0

왜 웹 서비스를 절차 적 접근으로 간주합니까? SOA가 절차 적 (여전히 큰 단순화가 될 것입니다)이지만 웹 서비스의 기술이라고 주장 할 수 있습니다. – ima

관련 문제