2013-02-19 2 views
2

Azure 서비스에서 이것이 가능하고 최선의 방법인지 확실하지 않습니다.Azure에서 웹과 작업자 역할 간 코드 공유

나는 내 데이터베이스에서 데이터를 추출하고 xml 출력을 작성하는 클래스가 있습니다. 정상적인 상황에서는 작업자 역할에서 실행 중이므로 필요할 때 실행하고 XML을 외부 웹 서비스로 푸시합니다. 그러나 다른 외부 웹 서비스가 내 시스템에 웹 서비스 호출을하고 매우 동일한 XML 응답을 얻을 수 있도록 서비스로 해당 기능을 노출하는 기능이 필요합니다. 작업자 역할에 RESTful 웹 서비스를 설치하고 작업자 역할에있는 것과 동일한 기능을 빌드 할 수 있습니다. 문제는 이제 중복 코드가 있다는 것입니다.

DB에서 추가 데이터에 코드를 추가하고 일부 계산을 수행하며 외부 웹 서비스 호출에 의해 트리거되는 webrole과 worker 모두에서 액세스 할 수있는 한 위치에 모든 XML을 생성하도록이 코드를 어떻게 설정할 수 있습니까? 역할 (정기적으로 실행되는 일정).

TCP 내부 종단점과 작업자 웹 통신에 관한 모든 질문을 살펴 봤지만 웹롤이 workerrole에 대한 메서드를 호출하고 해당 데이터를 호출자에게 전달하는 것을 허용하지 않는 것으로 보입니다.

누군가가 나를 도울 수 있다면 매우 감사 할 것입니다. 감사합니다

+0

두 번째 생각 - 여기에 대한 답은 모든 공유 코드가 포함 된 새로운 일반 프로젝트를 만들고 내 웹 및 작업자 역할에서이를 참조하는 것입니다. 이것은 아마도 가장 의미가 있습니다. Azure에서이 문제가 발생 했습니까? – Gotts

+0

그건 기본적으로 프로젝트가 따로 컴파일 될 것이라는 가정하에 @sharptooth가 제안한 것입니다. – knightpfhor

답변

5

기술적으로 솔루션은 모든 공유 코드가 들어있는 클래스 라이브러리 (.NET 어셈블리)를 만들고 두 역할 프로젝트에서 사용하는 것입니다. 어셈블리가 각 역할 패키지로 압축되도록 각 역할 프로젝트의 해당 어셈블리에 대한 참조에서 "로컬 복사"를 "true"로 설정해야합니다.

그러나 귀하의 경우에는 더 나은 해결책이있을 수 있습니다. 두 가지 목적으로 웹 역할을 사용할 수도 있습니다. 웹 역할은 노동자 역할과 같고 보너스 IIS가 설치되어 있습니다. 정말로 (실제로 - 정말로) 개별적으로 확장 및 업데이트해야하는 경우가 아니면 관리 및 배포의 많은 어려움을 피할 수 있으며 모든 것에 대해 웹 역할을 사용하는 돈도 절약 할 수 있습니다.

+0

감사합니다. 매우 도움이됩니다. 나는 사본을 조사하고 웹 역할을 사용하기 위해 귀하의 제안을 고려해야 할 것입니다. 그러나 우리는 별도의 웹과 작업자 (현재는 어쨌든)를 유지해야 할 필요가 있다고 생각합니다. 이것은 Azure에 처음 배포 된 것입니다. 공유 코드로 생성 한 클래스 라이브러리가 두 프로젝트에서 모두 참조되는 경우 자동으로 배포에 포함되지 않습니까? 즉 왜 그렇게 번거로운가? – Gotts

+0

@Gotts :별로 번거롭지 않다. 어쨌든 참조를 추가 할 것이고, 유일한 추가 단계는 "copy local"을 설정하는 것이다. Azure SDK와 "tools"가 터무니없이 버그가 있기 때문에 이것이 필요한 이유라고 말할 수 있습니다. – sharptooth

+0

정보 주셔서 감사합니다! – Gotts

1

저는 웹 역할로 만들었을 경우 작업자 역할에 메시지를 보내고이 메시지를 기반으로 작업자 역할의 이벤트를 트리거하여 필요한 프로세스를 시작합니다.

대기열 저장소 또는 WCF 서비스를 사용하여이를 수행 할 수 있습니다.

+0

예, 그렇다고해서 작업자 역할 응답을 동 기적으로 웹 역할에 전달할 수는 없습니다. 나는 동기적인 의사 소통에 문제가 있다는 것을 이해하며 나의 질문은 정말로 노동자와 웹 사이의 공유 코드에 관한 것 같다. 그럴 수 없다고 생각하십니까? – Gotts

+0

서비스 버스 대기열 (http://middlewareinthecloud.com/2012/06/23/azureservice-bus-queues-in-worker-roles/) 또는 상호 통신을 사용하여 작업자 역할을 만드는 것과 같이 서비스 버스를 사용하여 이들 사이의 연결을 확인 했습니까? 역할 간. 나는 MSDN에서 비슷한 질문을 발견했다.이 도움이 되었으면 좋겠다. http://social.msdn.microsoft.com/Forums/en-US/windowsazureconnectivity/thread/5193bfa8-3d1a-44d8-8eb6-1c87250c3b30 – hhaggan

+0

나는이 URL이 또한 도움이 http://windowsazurecat.com/2011/08/how-to-simplify-scale-inter-role-communication-using-windows-azure-service-bus/ – hhaggan