2011-03-14 3 views
1

정적 클래스에서 정적 메서드를 호출하는 오케스트레이션이 있습니다. 나는 Linq 쿼리를 여러 번 실행해야하는 경우 컴파일 된 쿼리를 작성하는 것이 좋습니다. 그리고 내 오케스트레이션은 많은 시간에 산란됩니다.biztalk에서 사용하는 정적 메서드로 컴파일 된 쿼리

하지만 컴파일 된 쿼리로 만들면 아무 것도 얻지 못할지 확실하지 않습니다.

각 오케스트레이션은 쿼리를 컴파일해야합니까, 아니면 공유 할 예정입니까?

답변

0

각 오케스트레이션은 자체 스레드에서 실행되므로 각 오케스트레이션에는 linq 쿼리를 비롯한 메서드의 로컬 변수 복사본이 있습니다. 따라서 쿼리가 호출 될 때마다 쿼리가 컴파일됩니다.

정적 클래스의 수명이 오케스트레이션의 수명으로 결정되므로이 문제를 어떻게 해결할 수 있을지 잘 모릅니다. 비 정적 메서드를 호출 할 수있는 싱글 톤 오케스트레이션을 구현할 수 있습니다. 그런 식으로 첫 번째 호출에서 쿼리를 컴파일하고 모든 후속 호출에서 동일한 쿼리를 사용할 수 있습니다.

+1

설명에 문제가 있다고 생각하지 않습니다. 정적 클래스의 수명은 오케스트레이션의 수명이 아닌 애플리케이션 도메인의 수명이며, 앱 도메인이 재활용되기 전에 동일한 호스트에서 실행되는 경우 정적 값이 인스턴스간에 재사용됩니다. 일부 반 관련성은 여기에서 발생합니다 - http://blog.sabratech.co.uk/2007/08/thoughts-about-static-members-and-local.html –

+0

물론 Yossi는 정확합니다. –