문제

서비스 프록시 클래스에 적합한 이름 지정 전략이 있습니까?

예를 들어, 다음과 같이 두 프로젝트 내에서 세 가지 웹 서비스가 제공되는 경우.

XWs
  AService.asmx
YWs
  BService.svc
  CService.svc

서비스 참조 이름 및 네임 스페이스로 사용하는 것 AService, BService 그리고 CService ?

일반적으로 프록시 이름/네임 스페이스에 사용되는 것이 구체적인 클래스가 아니라 프록시를 나타내는 것을 나타내는 것을 원합니다. 둘 다 콘크리트 클래스의 사용과 충돌하지 않으므로 별명 또는 네임 스페이스의 사용을 강제로 사용합니다. -Qualified Class Names], 따라서 우리는 홉이 발생한다는 사실을 숨기고 있지 않습니다 (WCF 서비스 프록시 생성기의 기본 접미사 클라이언트 표지가이를 덮고 있습니다). 또한 다른 참조 서비스에 [하위] 통화 세트를 전달하는 래퍼/심 서비스를 작성하는 경우를 다루는 것도 중요합니다.

다양한 스타일을 사용했습니다 (추가 Ws, ServiceProxy, Ref 또는 Proxy 접미사? 접두사 ServiceName.), 그러나 그들에게 완전히 만족 한 적이 없습니다.

당신에게 잘 작동하는 것은 무엇입니까? 스타일 가이드가 이름 지정 스타일을 참조합니까?

편집 : Cheeso의 답변은 내 질문의 대부분을 다루고 있지만 여전히 다음에 대한 답변에 관심이 있습니다.

  1. 위의 예에서와 같이 프록시 클래스 네임 스케이션 전략
  2. 프록시에 대한 명명 전략을 언급하는 스타일 가이드
도움이 되었습니까?

해결책

나는 원래 ServiceName과 같은 이름을 사용했습니다대리 그리고 ServiceNamesvcproxy. 그러나 당신과 마찬가지로, 나는 그 이름에 특히 만족하지 않았으며 결과적으로 나는 그들을 고수하지 않았습니다. 이제 나는 단지 ServiceName에 의지합니다서비스 또는 ServiceNameSVC.

수업 사용자에게 의사 소통하고 싶은 핵심 사항은 클래스는 대리입니다? 프록시 클래스와 구체적인 클래스 사이의 구별은 적용되는 것처럼 보입니다. 콘크리트의 반대는 추상적입니다. 그리고 svcutil.exe에 의해 생성 된 프록시 클래스는 실제로 콘크리트입니다.

이름 지정 컨벤션을 통해 프록시 클래스가 원격 서비스와 통신한다는 것을 나타내려고 노력하고 있다고 생각합니다. (우리가 그것을 "프록시"라고 부르면, 우리는 그것이 무언가의 앞에 서있는 것을 의미한다는 것을 의미합니다.서비스 또는 ServiceName연결, 또는 비슷한 줄을 따라? system.data.oledb.oledbconnection 또는 system.data.sqlclient.sqlconnection.

내 자신의 선택된 명명 대회는 그것과 일치합니다. 클래스가 서비스를 나타내며 원격으로 간주되는 서비스를 나타냅니다. 나는 그것이 대리-서비스라는 사실을 강조하기 위해별로 신경 쓰지 않습니다. 실제 목적을 위해 그것이 서비스라는 사실이 핵심입니다.

다른 팁

나는 또한 여기에서 옵션을 탐색하고 있습니다. 방금 읽었습니다 이 기사 Miguel Castro와 그는 서비스, 서비스 호스트, 데이터 계약 및 서비스 계약을 분리하는 것이 좋습니다. 주로 모든 서비스 계약을 별도의 계약 네임 스페이스로 유지하거나 각 서비스 네임 스페이스에 살도록 해야하는지 결정하려고합니다. 그들을 자신의 네임 스페이스로 분리하는 이유는 다른 서비스가 이용되면 더 중립적 인 위치에 있기 때문입니다.

예를 들어 이것은 다음과 같습니다.

companyname.services.contracts.service1contract
companyname.services.service1

아니면 이거:

companyname.services.service1
companyname.services.service1contract
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top