2011-08-24 2 views
2

다중 계층 대규모 응용 프로그램의 데이터를 소비하는 가장 좋은 방법은 무엇일까 궁금합니다. 솔직히 나는 적절한 방법을 고를 충분한 경험이 아직 없다. 우리는 RIA Services가 유선을 통해 엔티티를 배포 할 것이라는 생각으로 프로젝트를 시작했습니다. 처음에는 RIA로는 괜찮 았지만, 서비스에서 응답으로 그리고 DTO에 대한 매개 변수로 일종의 복잡한 DTO를 보내야 만 문제가 시작되었습니다. 서비스 호출.대규모 비즈니스 응용 프로그램에서 데이터를 사용하는 방법

이 시점에서 RIA 서비스로 작업하는 것은 프레임 워크와 싸우는 것처럼 보이며 프론트 엔드에서 생성 된 클라이언트와 함께 원시 WCF 서비스를 사용하기로 결정했습니다. 우리는 일주일 동안이 작업을 시도했지만 긍정적 인 경험 이었지만 결국 클라이언트가 재생성되지 않았고 일부 클래스는 재사용 할 수 없으며 Visual Studio는 클라이언트 측에서 다시 생성해야한다는 단점이 있음을 보여주었습니다 다시, 등등.

나는 해결책을 찾기 시작하고 런타임 동안 비동기 클라이언트를 생성하는 방법에 대한 훌륭한 기사를 발견했다. 따라서 아이디어는 공유 어셈블리에 WCF 서비스를 설명하는 인터페이스를 배치 한 다음 서비스가있는 비동기 작업을 지원하는 자동 생성 된 (방출 된) 메서드로 WCF 클라이언트를 만드는 것이 었습니다. 그것은 내가 본 것 중에서 가장 좋은 해결책으로 입증되었지만 아직 그 단점을 발견 할 충분한 시간이 없기 때문에 ...

새로운 설계자가 우리 팀에 합류했으며 이제는 자체 작성 구현을 고려하고 있습니다. ServiceBus. 훨씬 성숙 해 보였지만 DuplexPushService를 기반으로 만들어졌으며 제작자가 말한 것처럼 확장 성이 뛰어나고 견고한 지 알 수는 없습니다.

왜 내가 이것을 쓰고 있습니까? - 완성 된 솔루션에 패턴 또는 기술을 성공적으로 통합 한 이야기를 듣고 싶습니다. 비즈니스 논리를 지원하기 위해 어떤 기술을 사용합니까? 장단점에 대해 말할 수 있습니까? 지금 새로운 Silverlight 프로젝트를 시작한 경우 어떻게 할 것입니까?

답장을 보내 주시면 감사하겠습니다.이 글의 글을 읽어 주신 데 대해 감사 드리며 코드 샘플과 링크가 부족해 죄송합니다.

그래서 진짜 질문은 ~ 50k 명을 지원해야하는 실버 라이트 애플리케이션에서 데이터를 소비하는 방법입니다.

+2

oh man ... 나는이 토론을 정말 좋아하지만 불행히도 귀하의 게시물에는 아무런 질문이 없습니다. "질문에 대한 귀하의 동기가"______에 관한 토론에 참여하고 싶습니다 "라고 대답 한 경우 여기에서 질문하지 않아야합니다. (실시간 웹 채팅에서 이와 같은 토론을 할 수 있습니다.) 그러나, 만약 당신의 동기가 "다른 사람들이 나에게 ______를 설명하기를 바란다면, 아마도 괜찮을 것입니다." "..."소프트웨어 개발에 관한 전문적인 토론에 관심있는 전문가 프로그래머는 프로그래머에게 질문합니다. " 그와 함께 stackoverflow.com/faq#dontask – SQLMason

+1

통해 ... 우리는 EF와 함께 전통적인 WCF를 사용하며 현재 RIA를 피하고 있습니다. 응용 프로그램의 첫 번째 버전은 전통적인 POCO (EF 없음)와 함께 전통적인 WCF를 사용했습니다. – SQLMason

+0

나는 진짜 질문이 된이 질문을 개편하는 것을 고려할 것이다. 댓글에 당신의 대답을 주셔서 감사합니다 :) 그것은 대답에 더 넓은 설명을 생각하는 것이 좋을 것입니다. 유선으로 엔티티를 전송합니까, 아니면 DTO에서 엔티티를 래핑하고 있습니까? 자세한 내용을 알려 드리겠습니다. 질문이 닫히지 않기를 바랍니다. – v00d00

답변

1

성능이 정말 문제가 될 때까지

  • 아무것도하지 마십시오 황금률.

보너스 규칙

  • 디자인 DTO의 너무 단 하나의 WCF 호출이 가능한 경우 사용 사례 당이 필요합니다.

DTO는 개체가 아니므로 양쪽 끝에서 처리하지 마십시오. 그것들을 직접 사용하는 대신 더 유용한 것으로 변환하십시오.

성능이 정말 세션간에 데이터를 유지하는 Silverlight 응용 프로그램

  • 사용 Local Storage 및 동기화에 많은 당신이 할 수있는 문제를

    1. 캐시됩니다.
  • 1

    JGauffin과 유사합니다. 우리는 DTO의 "부트 스트래핑"을 OnPropchange, DataErrorInfo 등을 상속하는 "모델"로 가져 가고 있습니다. 그런 다음 ViewModels에서 사용합니다. 가장 순수한 모델은 실제로 가벼운 ViewModel이지만 모델이라고 생각합니다. 우리는 LINQ2SQL에서 레코드를 가져 와서 CRUD 개체로 변환하고 (예전의 학교 방식으로 인해) CRUD 개체를 Silverlight WCF 서비스로 전송합니다. DTO 객체는 모든 속성이 가리키는 객체의 ".Source"가됩니다 (Source.Property = value를 설정하고 Source.Property를 반환합니다). EF를 사용하면 연관성 때문에 include를 사용하지 않을 것입니다. 재귀 루프로 끝나게 될 것입니다. A는 B를 가지며, B는 부모를 가리키고 B는 .... 등등입니다.

    관련 문제