2011-04-27 5 views
1

동적 프록시를 사용하는 비용은 얼마입니까?.net 동적 프록시 비용

저는 인터페이스 구현으로 프로젝트를 어지럽히고 싶지 않습니다. 그래서 LinFu, Castle, Unity 등과 같은 일부 타사 라이브러리에서 만든 동적 프록시를 사용하려고합니다. 인터페이스마다 인스턴스 하나를 생성합니까? 각 통화.

웹 앱이므로 장기적으로 성능 문제는 무엇입니까?

또한 EF 4.1 (현재 CTP5)을 사용하고 있으므로 프록시 클래스 자체를 만들면 EF 자체 동적 프록시에서 도구를 만들 수 있는지 궁금합니다.

P. 예, 내 인터페이스는 다른 인터페이스 및 기본 클래스와 함께 구체적인 클래스에 의해 구현되지만, 때로는 인터페이스 클래스가 필요하며 구체적인 클래스에 포함 된 추가 요소는 필요하지 않습니다.

모든 인터페이스는 EF4.1 POCO의 일부를 선언합니다. 그래서 getters와 setters.

답변

0

동적 프록시가 아닌 스텁이 더 필요해 보입니다. 아마도 Moq을보고 싶을 것입니다. 내가 아는 한 모의를 만들 때마다 다른 인스턴스를 생성하지만 내부적으로 일종의 유형 캐시를 유지하는지는 알 수 없습니다. 단위 테스트를 목표로하는 라이브러리이기 때문에 당신을 생각해보십시오, 그래서 이런 종류의 사용은 아마도 정통이 될 것입니다.

1

opensource Impromptu-Interface에는 C# 4.0이 필요하며 사용하는 각 인터페이스 및 구현 유형 콤보에 대해 간단한 프록시 유형을 만들고 캐시를 유지합니다.

주어진 구현에 대해 인터페이스 프록시를 만드는 경우 (설정하는 방법과 상관없이 하나의 유형으로 계산되는 ExpandoObject는 프록시 유형을 생성하는 데 한 번만 비용이 부과됩니다), 프록시 유형을 생성 할 때마다 Activator.CreateInstance가 생성됩니다. 프록시 (나쁜 것은 아닙니다) 그리고 각각의 호출마다 정적 인 호출이 있습니다. 이것은 당신이 프록시를 가지고 + dlr 동적 인 호출을 가지고 있는데 그것은 마이크로 소프트 덕분에 매우 최적화되었습니다.