3

타사 제품에 대한 많은 웹 참조가있는 C# 프로젝트가 있습니다. 이러한 모든 웹 서비스 호출은 '사용자 컨텍스트'클래스를 사용합니다. 따라서 각 웹 서비스는 똑같은 XML 스 니펫을 허용합니다.동일한 클래스를 사용하는 많은 웹 참조

현재 나는 모든 다른 웹 서비스 호출을 수행 할 때 이러한 '사용자 컨텍스트'개체를 많이 유지해야합니다. 생성 된 '사용자 컨텍스트'클래스는 똑같지 만 다른 .NET 네임 스페이스에 넣어집니다 (XML 네임 스페이스는 동일합니다).

이 인스턴스 중 하나만 전달할 수 있기를 원합니다. 내가 어떻게 할 수 있니?

Visual Studio 2010을 사용하고 WebReference를 추가하여 생성 된 클래스를 사용하고 있습니다. 다른 프레임 워크 나 메커니즘을 사용하는 것에 반대하지 않습니다. 나는 심지어 내 자신의 코드를 생각해 보았지만 사용해야 할 많은 웹 메소드가있는 WebServices가 많이있다.

업데이트 : 원래 웹 참조를 추가하여 추가 했으므로 서비스 참조로 추가 할 예정입니다. InterSystems Caché를 통해 웹 서비스 자체가 노출되었으며 WS-I에 얼마나 잘 부합하는지 살펴 보지 않았습니다.

+0

+1 또한 Automapper를 사용하여 필요에 따라 네임 스페이스 관련 클래스 버전을 서로 복사했습니다. 작동했지만 더 나은 방법이 있다고 확신했습니다. –

답변

2

VS 2010에 대해서는 확실치 않지만 2008 년에는 필요한 것을 수행하는 서비스 참조 추가 마법사에서 "참조 된 어셈블리에 유형 재사용"옵션이있었습니다. 모든 웹 참조에서 동일한 유형의 어셈블리를 만들려면 해당 유형 정의를 프로젝트에서 참조한 다음 필요한 웹 참조를 추가하십시오.

+0

이전에이 옵션들을 살펴 보았으므로 나는 그것들을 시도해 보았습니다. 나는 이것이 나를 위해 일할 것이라고 생각하지 않는다. 내가 읽은 바로는 일반적으로 공유 클래스 라이브러리 (이미 갖고 있지 않은 클래스)에 이미 정의 된 유형과 관련됩니다. 이러한 유형은 웹 서비스 자체의 일부이며 내가 작성했거나 액세스 할 수있는 공유 라이브러리는 아닙니다. 이 옵션의 기능이 잘못 되었다면 저에게 계몽하십시오. –

+0

당신은이 옵션에 대해 옳은 것이지만 한 가지를 놓친다 : 당신은 스스로 필요한 공유 클래스 라이브러리를 생성 할 수있다. 실제로는 매우 쉽습니다. 1. 클래스 라이브러리 프로젝트 만들기 2. 설정 액세스 권한을 공개하려는 유형이 포함 된 서비스에 웹 참조를 추가 public 3. 프로젝트의이 클래스 라이브러리를 참조하십시오. 그게 전부입니다. 지금부터 프로젝트에 추가 할 모든 웹 참조는 클래스 라이브러리의 유형을 사용합니다. –

+0

나는 당신의 대답을 받아 들일 것이다. 그러나 나를 위해 그것은 아직도 운동하지 않았다. 나는 간단한 WCF 서비스를 만들었고 당신이 제안한 코드 인 생성되는 중복 코드의 양을 제한 할 수 있었다. 그러나, 나는이 코드에 대해 노력하고있어 웹 서비스가 작동하지 않습니다. 이 일을 저지하는 뭔가가 있어야합니다. –

0

하나의 클래스 만 사용하고 XML serialization/deserialization으로 객체를 변환하면 이런 문제가 해결되었습니다. 그러나 여전히 완벽한 해결책은 아닙니다.