2011-04-05 5 views
2

우리는 100 개가 넘는 속성을 가진 비즈니스 개체와 계층 구조의 레이어로 구성된 레거시 코드를 가지고 있습니다. 우리의 목표는 WCF로 호출 할 C# 서버 응용 프로그램으로 변환하는 것입니다. 그러나 WPF 속성 시스템은 우리 도서관에 유용 할 재산 상속과 같은 다른 보너스 기능과보다 효율적이기 때문에 고용하기 좋은 도구 인 것으로 보입니다.서버 응용 프로그램에서 WPF 속성 시스템을 활용할 수 있습니까?

그러나 비 WPF 응용 프로그램에서 사용할 수 있는지 여부는 잘 모르겠습니다. 누군가 WPF가 아닌 응용 프로그램에서 사용하는 예제 프로젝트가 있다면 말해 주시겠습니까?

+2

DependencyProperties에 대해 이야기하고 있습니까? – SLaks

답변

1

WPF는 주로 DependencyProperties를 기반으로하지만, DependencyProperties는 WPF 특정 기능이 아니므로 쉽게 사용할 수 있습니다.

INotifyPropertyChanged 인터페이스에 대해서도 마찬가지입니다. WPF 외부에서 구현하고 사용할 수 있습니다.

1

DependencyProperties 지원은 해당 참조를 추가 아무런 문제가 없을 경우 수 WindowsBase.dll

에 앉아 클래스 DependencyObject에에서 온다, 절대적으로 서버 측 솔루션이 사용에 아무 문제가 없습니다.

그러나 이것은 C가 다중 상속을 지원하지 않는 문제를 일으킬 수있는 DependencyObject에서 클래스를 상속해야한다는 것을 의미합니다.

INotifyPropertyChanged를 구현하는 것이 더 쉽고 가볍지 만 변경 알림 이외의 것을 제공하지는 않습니다. DependecyProperties의 기능 세트는 당신이 언급 한 것보다 훨씬 큽니다. 또한, 바인딩을 사용하는 경우 DependencyProperties가 훨씬 빠르게 작동합니다 (INPC가 수행하는 동안). 리플렉션을 사용하지 않기 때문에 (INPC가 수행하는 동안)

귀하의 접근 방식을 시도한 서버 측 솔루션은 잘 모르겠지만, DP가 공개하는 기능을 정말로 원한다면 왜 안되는지보십시오.

--- 편집 ---

DependecyObject 단지를 만든 따라서 이러한 개체를 멀티 스레딩 것은 고통이 될 것입니다 스레드에서가 액세스 할 수 DispatcherObject에를 상속합니다. 멀티 스레딩이 필요한 경우 큰 문제가 아닙니다.

1

실현 가능? 예. 실용적인? 아마도 그렇지 않습니다.

서버 응용 프로그램이므로 거의 모든 스레드에서 비즈니스 개체에 액세스 할 수 있습니다. 그러나 종속성 오브젝트는 스레드 선호도를 가지며 필요한 경우 Dispatcher를 통해 작성된 스레드에 의해 액세스되어야합니다. 운영자를 사용하면 이벤트를 펌핑 할 필요가 있음을 의미합니다.

그리고 비즈니스 개체의 기본값이 인 이 있다고 가정합니다. "공통 기본값"이 없으면 스파 스 저장 알고리즘이 메모리를 절약하는 데 도움이되지 않습니다. 스파 스 스토리지 시스템이 WPF에서 잘 작동하는 이유는 컨트롤에 너무 많은 속성이 있기 때문입니다. 대부분 속성에는 항상 동일한 값이 있습니다.

본질적으로, 당신은 아마 고통 스러울 것이며 메모리 사용량을 줄이지 못할 수도 있습니다. 나에게있어 다른 방식으로 문제를 해결하는 것이 더 나을 것 같습니다. 그렇지 않으면 실제로 메모리 사용량을 줄이기 위해 자신의 프리 스레드 스파 스 스토리지 메커니즘을 구현하는 것이 좋습니다.

+0

+1은 그렇게 생각하지 않았습니다. –

0

종속성 속성 사용을 에뮬레이트하기 위해 많은 노력이 필요합니까?

XAML을 지원할 필요없이 충분히 쉽게 수행 할 수 있습니다.

그러나 기본 인덱서를 만들고 인덱스에 문자열을 사용하는 것이 더 쉬웠습니다.

구문 분석 된 파일에 []를 포함하면됩니다.

확실히 저렴한 동적 속성 시스템입니다.

관련 문제