2012-03-23 3 views
1

현재 Java WebService를 호출하는 ASP.NET Webform이 있습니다. ASP.NET Webform은 내부에서 생성/유지되는 반면 Java WS는 애플리케이션에 대한 WS 인터페이스 만있는 패키지 솔루션입니다.ASP.NET WebService 호출 대기

문제는 Java WS가 시스템로드로 인해 응답 속도가 느린 경우 일 수 있으며 이에 대해 아무 것도 할 수 없다는 것입니다. 따라서 현재 ASP.NET Webform에서 Java-WS가 느리게 응답하는 경우가 종종 있습니다. 때때로 ASP.NET이 시간 제한 값에 도달하여 연결을 포기하게됩니다.

이 두 응용 프로그램간에 데이터 연결을 보장해야하는데 시간 제한 값을 늘려이 작업을 수행 할 수 있지만 ASP.NET 양식을 몇 초 이상 대기시킬 수는 없습니다.

여기는 대기열 시스템의 아이디어가 들어있는 곳입니다.

제 생각에는 ASP.NET 양식에서 SOAP 요청을 작성한 다음이를 로컬 대기열에 대기시킨 다음 데몬을 실행하고 Java-WS에서 요청을 실행합니다.

무언가를 처음부터 구축하기 전에 몇 가지 조언이 필요합니다.

  1. 내 솔루션이 실행 가능합니까?
  2. 이미이 기능을 구현할 수있는 라이브러리 등이 있습니까?
  3. 내가 찾고있는 것을 성취 할 수있는 더 좋은 방법이 있습니까?
+1

여전히 ASMX 웹 서비스를 사용하고 있습니까? 그건 레거시 기술이고 대신 WCF를 사용해야합니다. –

+2

그는 ASMX를 사용하지 않습니다. 그것의 웹 폼은 자바 웹 서비스를 호출합니다. 즉, 자바 웹 서비스를 비동기 적으로 호출하는 것이 고려되었습니다. –

+1

@William yes는 이것을 고려해 왔지만 일단 요청이 웹 서비스 비동기로 시작되면 Web Form은 닫히고 사용자는 호출 시스템으로 돌아가므로 콜백이 반환 될 인스턴스가 없습니다. 날 잡아봐. –

답변

2

당신은 두 개의 별도의 문제가 :

  1. 귀하의 웹 양식은 해당 서비스의 결과를 얻을 수있는 서비스 이후 여론 조사에 요청을 보낼 배울 필요가 있습니다. 자바 서비스를 비동기 적으로 호출하는 것과 비동기 호출이 완료되었는지를 알아 내고, 비동기 호출이 완료되었는지를 알아 내고 결과를 리턴하는 두 가지 조작을 갖는 간단한 중간 서비스 (WCF에서는 제발)를 작성하면된다. .
  2. 요청을 Java 서비스에 지속적으로 대기시켜야 할 수도 있습니다. 이렇게하는 것이 가장 쉬운 방법입니다. 성능이 최우선 관심사가 아닌 경우 # 1의 중간 서비스를 2로 나누는 것입니다. 절반은 WCF MSMQ 바인딩을 사용하여 나머지 절반을 호출합니다. 이렇게하면 전송으로 MSMQ가 투명하게 사용되어 대기중인 요청이 하반기까지 꺼내지기 전까지 대기열에 남아있게됩니다. 후반부는 Windows 서비스로 작성되어 시스템 부팅시에 대기열을 비우기 시작합니다.
+1

아니요 1. "나중에 해당 서비스의 결과를 얻으려는 설문 조사"라고 말하면 결과 양식이 무엇인지 신경 써야 할 입력 양식이 필요하지만 Windows에 내장 된 일종의보고 데몬 일 수도 있습니다. 서비스 또는 이벤트 로그 등을 쓸 수 있습니다. –

+1

WCF와 잘 작동합니다. –

+1

WCF를 배우기위한 좋은 책에 대한 안내 WCF 배우기, Michele Leroux의 실습 가이드 ?? –

2

MSMQ을 사용하면 클라이언트의 요청을 대기열에 넣을 수 있습니다. MSMQ은 당신을 위해 아무 것도 처리하지 않는다는 것을 명심하십시오. 그것은 단지 수송 일뿐입니다.

메시지는 모두 MSMQ 개의 메시지를 가져 와서 MSMQ 큐에 배달하는 것입니다.

원본 메시지의 생성과 배달 된 메시지의 처리는 모두 송신 및 수신 컴퓨터의 코드에서 처리됩니다. 대상 컴퓨터에는 MSMQ가 설치되어 있어야하며 사용자 지정 서비스를 실행해야합니다. http://msmqjava.codeplex.com/

당신이 당신의 창 상자 중 하나에서 큐를 만든 다음 메시지를 픽업하는 서비스를 만들 수 있습니다 될 수있는 또 다른 방법은 양식 : 그들에게

를 처리하는 것은 어쨌든 자바를 사용하여 MSQM와 상호 운용성을위한 librays있다 대기열에 넣고 Java 서비스에 전진

+1

당신은이 양쪽을 위해 Windows를 필요로한다? –

+1

대상 컴퓨터에는 MSMQ가 설치되어 있고 사용자 지정 서비스가 실행되어 처리해야합니다. 어쨌든 Java를 사용하는 MSQM과의 interpl에 대한 librays가 있습니다. http://msmqjava.codeplex.com/ –

+1

이것은 아닙니다. 선택권. 내가 가지고있는 목적지에 대한 유일한 진입 점은 WebService 인터페이스입니다. 대상 서버에 아무 것도 설치할 수 없습니다. –

3

create a WindowsService hosting a WCF service하실 수 있습니다.

웹 응용 프로그램에서 Windows 서비스의 WCF 메소드를 호출 할 수 있습니다.

귀하의 Windows 서비스도 자바 웹 서비스의 응답을 저장할 수있는 begin/End pattern

귀하의 Windows 서비스를 사용하여 비동기 자바 웹 서비스 메소드를 호출하고, 다른 WCF 방법을 통해 노출 될 수 있습니다.예를 들어, 당신은 당신의 WCF 서비스에서이 방법을 할 수 :

1) inderectly 자바 웹 서비스를 호출 할 수 있으며이 호출

2) 자바 웹 서비스를 반환하는 다른 방법에 대한 식별자를 returnd하는 방법 통화 식별자를 제시하여 결과를 호출하십시오.

AJAX를 사용하여 Windows 서비스의 WCF 메소드를 호출 할 수도 있습니다.

+1

그는 대기열을 찾고 있기 때문에 데이터베이스에 대기열 테이블을 통합하여이 솔루션을 조금 더 사용할 수 있습니다. –

+1

자바 웹 서비스에 대한 호출을 처리하기 만하면된다. Windows 서비스는 대기열을 사용할 필요없이 안전하게 처리 할 수 ​​있습니다. – JotaBe