2011-07-04 2 views
4

현재 웹 서비스를 개발하는 과정에서 비교적 많은 수의 방법으로 상호 작용해야합니다.WCF : 부분 클래스를 사용하여 복잡한 웹 서비스를 분할합니까?

예를 들어, 클라이언트는 데이터베이스의 사용자 또는 프로젝트를 관리하기 위해 웹 서비스와 상호 작용할 수 있습니다.

  • 두 서비스는 인터페이스를 계약합니다 IUsersServiceContract 및 IProjectsServiceContract : IUsersServiceContract 및 IProjectsServiceContract는
  • 내 질문은 다음이

    • 두 데이터 계약 : 그 효과에

      , 나는 다음과 같은 클래스를 만들었습니다 :

      서로 다른 두 개의 웹 서비스를 작성하는 것이 바람직합니까? 서비스 계약 인터페이스를 모두 구현하는 하나의 큰 클래스를 만드는 대신 엔드 포인트 (들)를 사용해야합니까?

      사실 나는 여러 종류의 데이터를 처리하는 더 많은 서비스 계약 인터페이스가 있음을 명심하십시오.

      내가 이해 한 바로는, 부분 클래스 (여러 파일로 분할)를 사용하면 하나의 엔드 포인트로 하나의 큰 웹 서비스를 만들 수 있습니다.

      이것은 여러 파일에서 하나의 큰 클래스 분할을 처리하는 단점이 있습니다. 즉, 개발자가 "큰 그림을 보지 못하면 유지 관리하기가 어렵고 오류가 발생하기 쉽습니다".

      다른 솔루션은 서비스 계약 인터페이스 당 하나의 웹 서비스를 구현하는 것입니다.

      본질적으로 X Service Contracts Interfaces가있는 경우 X 웹 서비스가 X 종단점이됩니다.

      어떤 솔루션을 선택하겠습니까? 그 이유는 무엇입니까?

      입력 해 주셔서 감사합니다.

    답변

    4

    개인적으로 클래스 분할에 부분 클래스를 사용하지 않습니다. tgis split을 유발하는 엄청난 크기는 클래스가 너무 커서 리팩토링이 필요하다는 것을 나타냅니다. 제 생각에는 부분 클래스의 주요 목적은 자동 생성 된 코드에 변경 사항을 추가하는 것입니다.

    web.config에서 명명 된 동작을 사용하여 서비스 및 끝점 구성을 공유 할 수 있으므로 서비스를 분할하는 것이 번거롭지 않아야합니다. 그러나 분할은 기능성을 그룹화하여 동기를 부여해야합니다.

    서비스의 성격을 정확히 알지 못하면 두 가지 서비스에서 자연 분리가 발생할 수 있습니다. 하나는 사용자 관련 작업을위한 것이고 다른 하나는 프로젝트 지향 작업을위한 것입니다.

    구현 클래스가 합리적인 크기보다 커지면 별도의 클래스 또는 선호 인터페이스를 사용하여 각 메서드 내부 논리를 처리하고 서비스 구현 자체가 자신의 메서드 매개 변수를 위임하는 얕은 외면이되게하는 것이 좋습니다. 올바른 logoc 인스턴스

    +2

    Thanks Faester, 귀하의 의견은 부분 수업에 대한 내 두려움을 확인시켜줍니다. 귀하의 의견을 보내 주시면 감사하겠습니다. 귀하의 지침을 따르 겠습니다. 하나의 질문이지만 "web.config에서 명명 된 동작을 사용하여 서비스 및 끝점을 공유 할 수 있습니다"라는 것은 무엇을 의미합니까? (나는 WCF에 익숙해 져있다 :)). 행동 (Behaviors)을 사용하여 서비스 및 종점을 "구성"할 수 있음을 이해하지만 서비스 및 Enpoints를 공유함으로써 얻으려는 것이 무엇인지 확신 할 수 없습니까? 행동 자체가 공유 될 수 있다는 의미였습니까? –

    +0

    죄송합니다. 오타였습니다. 내가 공유 설정을 제안했다는 것. (대부분의 사람들은 WCF 구성을 꺼리는 이유를 여기 저기에서 재사용하는 것이 좋습니다. 오타가 이제 수정되었습니다.) 내 의견을 사용할 수 있다는 것을 배우게되어 기쁩니다. – faester

    +0

    우수 감사합니다! –

    1

    여기에서 고려해야 할 중요한 사항은 n 서비스 계약 수를 말하는 경우 각 서비스 계약을 구현하는 데 드는 비용입니다.여기에 좋은 블로그 게시물이 있습니다. "Service Contracts Factoring and Design",이 기사를 게시 한 Juval Lowy가 아니라면 누군가가 분명히 그 사람을 찢어 버렸습니다 (Juval의 책 "Programming WCF Services"93 페이지 참조).