문제

나는 최근에 Biztalk Mapper의 멀티 스레드 특성과 외부 어셈블리를 처리하는 방법에 문제가 생겼습니다.

MSDN 의이 인용문에서 알 수 있듯이 :

중요한 스크립팅 functoid에 사용하기 위해 외부 어셈블리로 작성된 모든 코드는 스레드 안전해야합니다. 이는 맵의 여러 인스턴스가 응력 조건에서 실행 시간 에이 .NET 인스턴스를 사용할 수 있으므로 필요합니다.

맵퍼는 외부 어셈블리 인스턴스를 재사용합니다.

유틸리티 어셈블리에서 우리 팀은 다음과 같은 코드를 사용했습니다.

public class MapUtil
{
    private string _storeReference;

    public void SetStoreReference(string ref)
    {
       _storeReference = ref;
    }

    public string GetStoreReference()
    {
        return _storeReference;
    }
}

이로 인해 한 파일의 StoreReerences가 다른 파일에 매핑되었습니다.

나는 개인 필드를 [ThreadStatic]

[ThreadStatic]
private static string _storeReference;

내 질문은 - Biztalk Mapper에서 이것에 대한 문제를 아는 사람이 있습니까? 사용하는 문제가 있다는 것을 알고 있습니다 [ThreadStatic] ASP.NET for Destmble에서 스레드가 재사용 되었기 때문에 Biztalk Mapper가 스레드를 다루는 방식에 대한 문서를 찾을 수 없습니다.

도움이 되었습니까?

해결책 2

나는 아직도 'Biztalk Mapper 내의 스레딩 동작이 XYZ라는 선을 따라 결정적인 진술을 찾지 못했습니다. 그래서 당신은 당신이 당신에게 당신을주의해야합니다. Biztalk 제품 팀 외부.

제품 팀과 직접 연락을 취하는 저의 동료 한 동료는 연장 된 크리스마스 휴가 (럭키 도그)에 있습니다. 대량 제작 서버.

글쎄 - 그것은 사실이 아닙니다. 나는 도우미 클래스의 한 속성에서 정적 키워드를 놓칠 수 있었고 그 속성에 대해 우리는 여전히 스레딩 문제를 보았습니다. 나는 그것을 증거로 받아 들일 것이다 ThreadStatic 지금은 올바른 방법입니다.

다른 팁

나는 ThreadStatic을 사용하여 변수를 설정 한 다음 사용자 정의 수신 파이프 라인 인 다음 Biztalk 맵 내에서 값에 액세스 할 수 있습니다 (도우미 클래스를 통해). 지금까지 문제가 발생하지 않았습니다. ~ 50 개의 호출로 테스트되었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top