1

일부 데이터를 삽입해야하며 UI에서 WCF를 호출하고 개체 목록을 전달하여 작업을 수행하고 있습니다.Entity Framework 병렬 작업과 WCF

  • : 그런 다음 서비스가 sequentialy 항목 삽입 낮은 비즈니스 계층 호출

    지금 내가 이해할 수없는 문제가 이것이다 (호출의 많은 여러 가지 다른 관리자를 호출하고 만들기를/ObjectContext를 throught를 삽입)

    서비스를 더 많이 호출하고 항목을 하나씩 전달하면 모든 것이 잘 작동하고 인서트는 병렬 처리되며 시간에 관한 성능 이점이 있습니다.

  • 서비스 클래스에서 병렬 foreach를 호출하려고하면 ObjectContext가 스레드로부터 안전하지 않기 때문에 exeception이 발생하지만 너무 많은 시간이 걸리기 때문에 코드를 잠글 수 없습니다.

왜 내가 WCF를 호출하면 작동합니까? 관리자 클래스에서 동일한 작업을 수행 할 수있는 방법이 있습니까?

새로운 인스턴스가 모든 병렬 서비스 호출에 대해 생성 서비스 구성에 따라 당신에게

답변

3

감사드립니다. 그러나 서비스 내에서 병렬 루프를 사용하면 동일한 ObjectContext가 여러 번 사용됩니다. 그래서 기본적으로 WCF를 통해 병렬 호출은 여러 ObjectContext를 만듭니다. WCF 서비스 내에서 실행하는 것은 하나만 사용합니다 (이는 알고있는 것처럼 스레드로부터 안전하지 않습니다). 삽입물의 특성에 따라 괜찮을 수도 있습니다. 또한 서비스 내에서 여러 ObjectContext를 스핀 업할 수 있습니다.

WCF 서비스의 동작에 실제로 영향을 주어 여러 인스턴스를 실행하지 않을 수 있기 때문에 일부는 자연스러운 추측이지만 사용자의 동작을 판단 할 때 이유가되어야합니다. 왜 이렇게하면 병렬 삽입을 수행 할 수 있습니까? WCF 서비스가 아니라 WCF 서비스 내에 있어야합니다.

+0

그건 내가 생각했던 것보다 많았지 만,이 경우 WCF를 호출하는 것과 같은 일을하기 전에 새로운 루프를 새 ObjectContext로 시작한다면 맞습니까? 대신 처리되지 않습니다 – MaRuf

+0

병렬 처리에 관해서는 여러 가지 함정이 있습니다. WCF 서비스와 WCF 서비스를 비교할 때 얼마나 많은 병렬 작업이 실제로 실행되는지는 어떻게 판단 할 수 있습니까? 다음을 고려하십시오. 병렬. 사용 가능한 프로세서 수에 따라 크게 달라지며 WCF 서비스가 임의의 수로 제한 될 수 있습니다. 또한 병렬 루프 내에서 ObjectContext를 인스턴스화 할 때 어떤 종류의 예외가 발생 했습니까? –

+0

"리더가 닫힐 때 잘못된 호출 시도"또는 "한 번 이상 매핑 된 엔터티 xxx"와 같은 몇 가지 다른 오류가 발생합니다. 그들은 서로 다른 컨텍스트와 함께 존재해서는 안되는 오류로 보인다. – MaRuf

관련 문제