서비스 버스 란 무엇이며 언제 필요합니까?


101

NServiceBus 에 대한 이야기를 들었지만 그것이 무엇인지 실제로 이해하지 못했습니다. 그들은 ".net을위한 가장 인기있는 오픈 소스 서비스 버스"라고 주장합니다.

그래서; "서비스 버스"란 무엇이며 언제 필요합니까?


나는 파티에 정말 늦었 어, 나는 대답으로 게시하지 않을 것입니다. 왜냐하면 그 자체가 아니기 때문에 간단히 말해서, 왜 당신이 필요한지 모르겠다면 기회가 있습니까? 응용 프로그램을 연결하고 비즈니스에 중앙 집중식 API를 제공하는 것과 관련하여 발생하지 않을 수있는 문제입니다.
전쟁

9
@Wardy 나는 당신의 진술에 동의하지 않을 것입니다. 당신이 뭔가를 이해하지 못하거나 그것이 무엇인지 모른다는 사실은, 그것에 대해 알고 당신을 도울 것입니다 의미하지 않는다
크리스티안 토마에게

그것은 무지에 대한 변명이 아니었지만 서비스 버스는 해결하는 문제에 부딪 힐 때 많이 던져지는 용어이므로 필요하거나 필요하지 않으므로 걱정할 필요가 없다는 점을 더 지적합니다. 그것.
전쟁

내가 편집으로이 추가 거라고하지만 근본적으로 NServiceBus 지금 "특정 서비스 플랫폼"이라고하며에서 찾을 수 있습니다 ... 질문을 바꿀 것 particular.net (어쨌든 지금에 어디 NServiceBus.com 리디렉션입니다).
Dan Atkinson 2015 년

이미 존재하는 사물의 이름이나 개념을 모른다면 자신의 이름을 쓸 가능성이 있습니다. 따라서 (필요한 경우) 사용할 수 있도록 그들에 대해 아는 것이 좋습니다
noelicus

답변:


80

서비스 버스는 SOA의 이더넷으로 생각할 수 있습니다.

무엇보다도 이더넷의 IP 주소와 같이 사물을 식별하는 언어를 도입합니다. 이 이름은 본질적으로 물리적 인 것이 아닙니다.

다음으로, 세미 연결 통신을 지원하는 버스의 경우 대기열이나 은유의 이더넷 카드와 같이 각 노드에 물리적으로 관련된 것이 있습니다.

물리적 인 것 외에도 이더넷 용 OSI 스택과 같은 통신의 "프로토콜"부분이 있습니다. 버스에서 이것은 애플리케이션 코드에서 사용하는 클라이언트 라이브러리입니다.

궁극적으로 서비스 버스는 분산 시스템 구축을위한 한 단계 높은 추상화 수준을 제공하는 것으로 볼 수 있습니다. 클라이언트-서버 통신에도이를 사용하여 내구성있는 단방향 메시징을 제공하고 서버가 알림을 다시 클라이언트로 푸시 할 수 있습니다.

특히, RabbitMQ, MSMQ, Regular SQL Tables, Amazon SQS, Azure Storage Queues 및 Azure Service Bus 중에서 선택한 큐잉 기술을 사용하면 NServiceBus가 매우 가볍고 사용하기 쉽습니다.


고마워! 이제 큰 그림을 얻은 것 같아요! 실제로이 질문을 한 것은 세션 당신에게있는 거 지주 오늘 밤을 위해 준비 조금 될,하지만 난 그것을 만들 것입니다 것처럼 보이지 않는다 ..
stiank81

12

엔터프라이즈 서비스 버스에 대한 Wikipedia 기사를 확인하십시오 .

Service Bus는 좋은 서비스 지향 아키텍처를 구현하기위한 끝없는 탐구에서 또 다른 추상화 계층 역할을합니다. 서비스 버스는 메시징, 라우팅 및 서비스 조정과 같은 우수한 서비스 지향 아키텍처 뒤에있는 무거운 작업을 처리 할 수 ​​있습니다.

왜 그런 것을 원하는지 잘 모르겠다면 좋은 서비스 지향 아키텍처를 만드는 이유를 읽어 보는 것이 좋습니다. 내 눈을 뜨고 웹 서비스를 갖는 것과 진정한 서비스 지향 아키텍처를 갖는 것의 차이점을 증명 한 책은 Thomas Erl의 서비스 지향 아키텍처 : 개념, 기술 및 디자인 이었습니다 .


그렇다면 데스크톱 클라이언트 응용 프로그램과 서버 간의 통신을 수행하는 데 사용할 수 있습니까? 서버가 내부에있는 곳입니다.
stiank81

할 수 있습니다. 다른 서비스, 다른 서비스의 다른 버전 등 (서비스가 다른 프로토콜을 사용하는 상황 포함) 간의 통신에도 사용할 수 있습니다.
Justin Niessner

11

이 용어는 EAI 의 후계자 인 SOA 와 함께 도입되었습니다 .

필요할 때? 그건 좋은 질문이야. 그것은 많은 복잡성을 동반합니다.

경험의 법칙은 원인보다 더 많은 문제를 해결할 수 있습니다.

이기종 환경이 있고 (다른 기술을 사용하는) 응용 프로그램을 비즈니스 프로세스에 맞추려는 경우 심각합니다. 그런 다음 오케스트레이션안무에 BPEL 을 사용하는 것이 도움이 될 수 있습니다 (그러나 마이그레이션으로 인해 문제가 발생 함).

편집 : wikipedia에없는 것은 연습입니다. ESB는 상호 운용성을 의미하는 Corba 또는 Java Enterprise와 함께 사용하기 위해 특수 커넥터, 이전 터미널 응용 프로그램을 사용하여 적응할 수 있습니다. 단점은 SOAP에 대한 100 개가 넘는 '표준'이 엄청난 노력 없이는 협력하지 않는다는 것입니다.

두 개의 대형 보증 회사가 합병 된 후 6 개월 이내에 IT 시스템을 상호 연결해야하는 경우 반드시 필요합니다.


그래서-서버 측과 "간단한"통신을하는 내 데스크톱 응용 프로그램에서 서비스 버스를 사용하여 크게 할 필요가 없습니까? 서버에서 푸시 모델을 구현하는 데 도움이 될 수 있습니까? 아니면이 시나리오에서도 얻는 것보다 더 고통 스러울까요?
stiank81

@ stiank81 죄송합니다 (Enterprise) 서비스 버스를 읽고 시냅스가 발사되었습니다. NServiceBus에 대한 링크를 확인했습니다. 그들은 동일하게 대상을 지정했습니다. 클라이언트 서버 앱에서는 이와 같은 것이 필요하지 않습니다. 이는 하나의 비즈니스 프로세스에 관련된 여러 응용 프로그램에 대한 개념을 의미합니다. 그것이 당신에게 효과가 있다면? 원인보다 더 많은 문제를 해결하는 경우.
스태커

"원하는 것보다 더 많은 문제를 해결한다면"그것을 사용하십시오 ... 그것을 좋아하십시오.
noelicus
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.