2010-08-05 1 views
3

ADO.NET dataservice를 기반으로하는 Windows Forms 응용 프로그램 및 서버 측 서비스가 있습니다. Windows 응용 프로그램에서 하나의 정적 dataservice 클라이언트를 만들고 초기화하고 프로그램 전체에서 사용하는 것은 나쁜 습관입니까? 예를 들어, 나는 모든 열린 폼 (서비스의 datacontext의 객체에 대한 바인딩을 가짐)을 사용하여 SaveChanges()를 호출하고 추적이 느슨하지 않도록 할 수 있습니다. 또는 모든 새로운 폼에 대한 서비스 클라이언트 인스턴스를 만드는 것이 좋습니다. 하나의 정적 클라이언트가 거대한 메모리 증가가있을 것입니다)? 하지만 모든 양식에 대해 새로운 클라이언트를 만들 때마다 서비스에 대한 새로운 연결을 매번 생성한다고 가정합니다.

클라이언트 응용 프로그램에서 서비스를 사용하는 것에 대해 잘못된 정보가 있거나 약간 혼동 스러울 수 있습니다. 제대로 작동하는 방식을 이해하도록 도와주세요.ADO.NET DataService 클라이언트를 작성하는 모범 사례

답변

2

사실 DataServiceContext 클래스는 서비스에 대한 연결을 만들지 않습니다. 사용하는 OData 프로토콜은 REST를 기반으로하므로 상태 비 저장이됩니다. 문맥만으로는 서비스를 접할 수 없습니다. 각 작업 (쿼리, 변경 사항 저장)은 서비스에 대해 별도의 독립 실행 형 요청을 발행합니다. 서비스의 관점에서 보았을 때 비 관련 요청의 수가 많습니다. 위에서 언급 한 것처럼 일반적으로 응용 프로그램의 "섹션"마다 별도의 컨텍스트를 갖는 것이 좋습니다. 그게 정확히 당신의 앱에 달려 있습니다. 거대한 수의 엔티티 (적어도 1000 개)를로드/추적하지 않으려는 경우 하나의 컨텍스트가 좋을 수 있습니다. 반면에 몇몇 컨텍스트는 단순히 컨텍스트를 삭제하고 SaveChanges를 호출하지 않고 업데이트 작업을 "취소"하는 기능을 제공합니다.이 기능은 일부 응용 프로그램에서 유용 할 수 있습니다.

+0

감사합니다! 정확히 내가 원하는 대답은 ... OData 프로토콜에 대한 자세한 내용을 준비없이 이러한 질문을하지 않을거야. – 0x49D1

0

나는 말할 것이다 : 그것은 달려있다. ;) Entity Framework를 직접 사용할 때는 꼭 알아야 할 문제에 익숙합니다. 그래서 저는 그러한 기사를 검색하고 그 내용을 추출 할 것을 권장합니다.

EF에 대한 저의 경험에 비추어 볼 때, 여러 워크 플로가있는 응용 프로그램에는 모든 워크 플로에 대한 컨텍스트가 있어야합니다. 특히 하나 이상의 워크 플로를 동시에 시작할 수 있고 사용자가 두 워크 플로를 전환 할 수 있습니다.

응용 프로그램이 단순하면 하나의 컨텍스트 만 사용하는 것이 좋습니다.

+0

응용 프로그램은 단지 하나의 워크 플로로 작동합니다. 지금은 하나의 컨텍스트가 있으며 잘 작동하지만 Windows 응용 프로그램이있는 많은 클라이언트가있을 것이고 얼마나 잘 작동하는지 알 수 없습니다. 답변 주셔서 감사합니다. – 0x49D1

+1

그래서 클라이언트 애플리케이션이 아닌 서비스 자체에 대해 걱정하고 있습니다. 내가 틀렸다면 나를 바로 잡아주세요. 그러나 귀하의 게시물을 이해하지 못합니다. 시작될 모든 클라이언트 응용 프로그램에 대해 최소한 하나의 서비스 연결을 작성해야합니다. 그것은 피할 수없는 사실입니다. 서비스가 처리합니다. 그러나 WCF DataServices의 확장성에 대해서는 전혀 알지 못합니다. 작고 간단한 여러 클라이언트 응용 프로그램에 대해서는 충분하다고 생각합니다. – DHN

+0

나는 당신이 나를 올바르게 이해했다고 생각한다. 질문은 : 하나의 응용 프로그램에서 하나의 연결 또는 많은 연결을 만들어야합니다. – 0x49D1