저는 기술에 관심이 없습니다. CORBA 대 웹 서비스, 나는 원리에 관심이있다. 우리가 OOP를 할 때, 우리는 왜 더 높은 차원에서 그렇게 절차적인 것을 가져야 하는가? OOP 및 관계형 데이터베이스와 동일하지 않습니까? 보일러 플레이트를 제외하고 코드 생성을 통해 서비스가 지원되는 경우가 종종 있습니다. 새 SOM 서비스 객체 매퍼이기 때문에 서비스라고 생각합니다. 그래서 다시, 객체보다는 wervices의 이유는 무엇입니까?분산 된 서비스는 분산 된 개체보다 어떻게 더 나은가요?
답변
서비스 분배 VS 객체 분배 주요 차이점은 객체 세밀한 기본적 동안 서비스 및 연산에 의해 정의가 대단위 점이다.
원격 호출을 수행 할 때 네트워크 대기 시간은 사실이며 인터페이스가 더 거친 것이 좋습니다. 서비스 지향적 인 패턴과 관행은 그러한 인터페이스를 만드는 데 중점을 둡니다.
요약하면 문제는 기술 또는 프로토콜 (바이너리 대 XML)이 아니라 사용 시나리오입니다. 당신은 CORBA에서 '서비스'를 만들고 WCF에서 구식 분산 객체 프로그래밍을 할 수 있지만, 전자는 객체쪽으로 더 편향된 것처럼 보입니다.
IMHO, 높은 수준에서 약간의 차이가 있습니다. 그러나 구현 레벨에서 분산 객체, CORBA, Java RMI 등은 많이 필요합니다. 나는 실제 프로덕션 시스템에서 CORBA 및 이후 RMI로 작업하려고 시도했으며 버전을 동기화 된 상태로 유지하는 것은 악몽이었습니다.
요즘은 메시지를 보내고 응답을받습니다.
확인 (인 Szymon은 본질적으로 같은 eariler를 썼다)? –
분산 객체를 전달하면 객체의 코드와 데이터를 전달한다는 의미입니다. 메시지를 전달하는 것에 대해 썼을 때,받는 쪽의 Object에 구문 분석/읽을 수있는 일부 텍스트/문자열 데이터를 전달해야했습니다. DBMS를 사용하여 자신의 파일 입출력을 수행하는 대신 RDBMS 패키지를 사용하는 것과 마찬가지로 다른 사람이 열, 인덱스 등을 추가 할 수 있으며 코드가 신경 쓰지 않아도됩니다. 객체를 전달할 때 정의를 동기화 상태로 유지해야합니다. – fishtoprecords
분산 된 개체는 무엇을 의미합니까? 동기화해야하는 동일한 개체의 사본 2 개? 객체에 대한 각 변경 사항에 대한 2 단계 커밋? 복잡한.
네트워크를 중심으로 개체를 이동하는 경우? 이 경우 "소유권"을 올바르게 포기해야합니다. 한 호스트가 다른 객체가 객체의 상태를 변경했다는 것을 어떻게 알 수 있습니까? 다시 복사해야합니까?
"분산 객체"모델은 빠르게 복잡해집니다.
서비스는 가장 간단합니다. 정확하게 하나의 호스트가 서비스를 제공하고 상태를 유지한다는 의미입니다. 관계형 데이터베이스는 수십 년 동안이 서비스 모델을 보여주었습니다.
하나의 호스트가 서비스를 제공하기 때문에 사본간에 동기화가없고 복제가없고 매우 제한된 복잡성이 있습니다.
를 "우리가 높은 수준에서 너무 절차 뭔가를해야하는 이유"당신은 더 높은 수준의 절차 뭔가를 필요가 없습니다.
여러 가지 방법으로 개체 (서비스를 제공하는 호스트)가 있습니다. 완벽하게 객체 지향적입니다.
일반적으로 - 싱글 톤이며, 이는 매우 단순합니다.
는분산 객체를 구현하는 것이 더 복잡 할 수도 있지만 맵핑 솔기가 그것을 중요하게 여기는 것에 동의합니다. 또한 서비스에 대한 인수는 순수한 데이터 일 수도 있고 객체가 될 수도 없으므로 싱글 톤 아이디어로도 나에게 비 절차 적으로 보이지 않습니다. 나는 서비스와 프로세스가 부자연 스럽다고 말하지 않고 언급 한 많은 사례에서 더 우수하지만 OOP가 주류 사용에서 낮은 수준의 절차 프로그래밍을 대체 했으므로 개발자가 OOP 관점에서 생각하는 것이 더 쉽다고 생각합니다. 그것은 나를위한 것입니다. –
@Gabriel Ščerbák : "서비스에 대한 인수는 순수한 데이터 만 사용할 수 있습니다.": 거짓. 인수는 직렬화 된 객체 일 수 있습니다. 서비스 **는 ** 객체입니다. OO 디자인을 서비스에 적용하는 것은 쉽습니다. 왜 그 서비스는 단순히 절차라고 반복해서 말합니까? 그것들은 싱글 톤의 ** 메쏘드 ** ** 객체 **입니다. –
때로는 객체를 인수로 사용하는 것이 유효한 유스 케이스 일 수 있지만 데이터가 아니라 작동이기 때문에 사용할 수있는 경우가 있습니다. 서비스를 사용하여 어떻게 모델링 하시겠습니까? 서비스 호출에 대한 인수로 전달 된 데이터에 동작을 어떻게 적용 할 수 있습니까? 인수로 다른 싱글 톤에 URL을 전달해 주시겠습니까? –
분산 객체 및 원격 프로 시저 호출은 다음과 같습니다. 프로세스 간 공유 상태와 같은 종류이며 서비스는 자체 포함됩니다.
공유 상태 언어의 일반 OOP과 Actor 모델을 사용하는 언어 및 공유 상태가없는 언어 (Arlang에서는 아무것도 공유하지 않는 가벼운 프로세스가 많음)와의 관계와 비교할 수 있습니다. 메시지를 통해서만 의사 소통). 액터 모델 접근법은 훨씬 덜 복잡하고 동시성 등과 관련하여 이점을 줄 수 있습니다.
예를 들어 배우를 언급했거나 서비스에 대한 객체 지향적 인 대안을 간접적으로 제안한 경우 완전히 확신 할 수 없습니다. 나를 잘못 이해하지 마라, 나는 과대 광고를 넘어서보고 싶다. –
"바닐라 OOP"와 액터 모델의 차이점과 평행을 그리는 것으로 문제의 대상에 약간의 빛을 가져다려고했습니다. –
바닐라로 OOP 나는 C#/Java/뭐든간에 주류 OOP를 의미합니다. OO - 그 아이디어는 더 크고, Alan Key와 같은 사람들은 처음에는 메시지에 관한 것이 었습니다. "나는 객체라는 용어를 만들어 유감스럽게 생각합니다. 메시지에 관한 것이 전부입니다." 얼랭 (Erlang)은 클래스 나 객체가 없더라도 객체 지향 (OO)의 일종입니다. http://lists.squeakfoundation.org/pipermail/squeak-dev/1998-October/017019.html –
왜 반대입니까? 분산 서비스와 분산 객체의 개념은 완전히 중복되지는 않지만 크게 중복됩니다 (SOAP은 결국 객체 액세스 프로토콜입니다). WCF는 한 줄의 구성으로 '웹 서비스'와 '원격 객체'를 전환하는 한 가지 예입니다.
차이점은 주로 전문 용어이며 응용 프로그램의 역사적 영역으로 설명됩니다.
, 나는이 질문에 질문으로 기술적 인 문제에 대해 잊고 나를 어떻게 서로 다른 분산 객체를 전달 메시지에서 WS 방식으로 메시지를 보내는 이야기
이전의 CORBA 기술을보다 효과적으로 배포 할 수있는 방법으로 웹 서비스가 나에게 소개되었습니다. 논쟁을 요청했을 때 기술적 인 내용 만이 제시되었습니다. OOP는 요즘 보편적 인 (절차 적 appraoch 이상) IMH입니다. 그래서 개념적 수준으로 돌아가는 것이 왜 혼란 스럽습니까? SOAP은 오래 전에 원래 의미를 잃어 버렸습니다.나는 경험이 없지만 WCF에 관해 당신을 믿을 것이다. 그러나 C++ (OOP)에서 절차 적 (C 스타일)을 혼합하는 것과 다른 것은 아니다. 나에게 개념적으로 잘못된 것 같습니다. Actor 객체 (언급 한 것처럼)가 웹 서비스라면, 나에게 의미가있을 것이다. –
왜 웹 서비스를 절차 적 접근으로 간주합니까? SOA가 절차 적 (여전히 큰 단순화가 될 것입니다)이지만 웹 서비스의 기술이라고 주장 할 수 있습니다. – ima
- 1. 균등하게 분산 된 난수
- 2. 분산 된 캐시 플랫폼
- 3. 분산 개정 관리 시스템의 분산 된 동작은 어떻게 작동합니까?
- 4. 분산 된 DB입니까?
- 5. 부하가 분산 된 서버는 어떻게 작동합니까?
- 6. 분산 된 컴퓨터를 통한 VisualSVN?
- 7. 분산 된 EHCache에서 직렬화 피하기
- 8. OpenGL에서 균등하게 분산 된 점선?
- 9. 분산 된 MVC 패턴을 구현하기위한 분산 캐시 솔루션을 찾고 있습니다.
- 10. 분산 분산 응용 프로그램을위한 아키텍처
- 11. 임의로 분산 된 데이터의 경계를 추정하십시오.
- 12. 분산 체크섬은 어떻게 작동합니까?
- 13. 분산 된 구성 요소에 안전하게 이야기하십시오.
- 14. 분산 된 프로젝트 관리/버그 추적
- 15. 서로 다른 지리적 위치에 분산 된 크롤러
- 16. 분산 된 팀의 소스 제어 폴더 구성
- 17. 여기서 \ 분산 된 구성 데이터를 저장하는 방법
- 18. 분산 된 캐시를 나타내는 기호는 무엇입니까?
- 19. Subversion 저장소를 분산 된 CMS로 분기
- 20. 웹 팜의 분산 된 중요 섹션
- 21. 분산/수집 (벡터화 된) IO는 언제 사용해야합니까?
- 22. Ehcache - 분산 된 RMI가 작동하지 않습니다.
- 23. 분산 된 기업 공동 작업 도구
- 24. SCCM 분산 된 소프트웨어 설치가 중단됩니다.
- 25. 지리적으로 분산 된 환경에서 Microsoft Project Server 2007을 어떻게 설계합니까?
- 26. "분산 트랜잭션"을 어떻게 프로그래밍합니까?
- 27. Akka의 분산 액터
- 28. 분산 캐시
- 29. 분산 파이썬
- 30. 여러 서비스로 분산 된 세션에 대한 다음 체계가 안전한가요?
이것은 실제적인 것 같지만, 여전히 논란의 여지가 없습니다. 왜냐하면 더 조잡하고 사용 가능한 많은 개념과 객체를 사용하여 모델링 된 서비스가 많이 있기 때문입니다. –