2014-01-28 3 views
0

이 클래스를 직렬화하여 웹 서비스에 전달되는 C# 엔터티 클래스를 사용하고 웹 서비스에서 사용자 인터페이스를 역 직렬화 한 C#에서 웹 서비스를 만들었습니다 방법은 여기 내 직렬화 코드C# API의 웹 서비스 클라이언트 만들기

string xmlText; 
var msg = new System.Xml.Serialization.XmlSerializer(obj.GetType()); 
var ms = new MemoryStream(); 
using (var xmlTextWriter = new XmlTextWriter(ms, Encoding.ASCII) { Formatting = Formatting.Indented }) 
{ 
    msg.Serialize(xmlTextWriter, obj); 
    ms = (MemoryStream)xmlTextWriter.BaseStream; 
    xmlText = new UTF8Encoding().GetString(ms.ToArray()); 
    ms.Dispose(); 
} 
return xmlText; 

내가이 클래스의 XML을 얻고 내 웹 메소드에 전달하고 난 그냥 직렬화하고이 클래스를 사용합니다. 이제이 웹 메서드를 모든 클라이언트에 공개하려고합니다. 클라이언트는 Java, PHP 또는 기타 프로그래밍 언어 일 수 있습니다. 해당 고객에게이 클래스를 어떻게 제공합니까? Google에서 검색 한 wsdl 파일을 찾았습니다. 내 엔터티 클래스를 wsdl 파일로 변환하는 방법?

도움이 될 것입니다. 감사합니다.

+0

왜 먼저 직렬화해야합니까? 당신은 그렇게 할 필요가 없습니다. –

답변

-1

나는 최선의 방법은 당신이 이미하고있는 것 : 객체를 XML 또는 Json으로 직렬화하여이 문자열을 클라이언트에 전달하는 것입니다. 그러면 이러한 클라이언트는 객체를 다시 만들어야합니다 (예 : PHP 용 json_decode와 같은 특정 메소드 사용). WSDL 파일은 웹 서비스의 public 메소드를 설명합니다. 클라이언트를 만드는 데 도움이되지만 개체 직렬화 및 비 직렬화에 도움이되지는 않습니다.

+0

하지만 Java 및 PHP 클라이언트가 내 C# 엔터티 클래스를 어떻게 얻고 어떻게 내 웹 서비스를 사용합니까 ?? 이 고객들에 대해 걱정해야합니까 ?? 또는이 클래스를 만들고 클래스를 직렬화 및 비 직렬화하는 데 사용해야합니까 ?? 내 접근 방식이 맞습니까? – Jahangeer

+0

문자열 입력으로 웹 메소드를 만들어야 만하고 클라이언트가 거기에 XML을 보낼 것인가 ?? 직렬화 및 역 직렬화 대신 내 xml 파서 코드를 작성해야합니까 ?? – Jahangeer

+0

클라이언트는 .NET에서 실행되지 않으므로 .NET 객체를 제공 할 방법이 없습니다. 객체는 대부분 문자열로 변환되며 클라이언트는이 문자열에서 객체를 작성해야합니다. 내가 말했던 해결책은 이것입니다 : 여러분의 웹 서비스는 XML/JASON 문자열로 변환 된 객체를 보내고 모든 클라이언트는이 문자열을받습니다. 그런 다음 어떤 종류의 도구 (예 : XSD.EXE, .NET 용) 또는 코드 (JAVA 용 : http://bit.ly/Mty19R)를 사용하여 문자열에서 개체를 다시 만들어야합니다. 서비스에서 제공 할 XML/JASON을 문서화해야합니다. 일부 클라이언트는 파일을 구문 분석하는 데 필요할 수 있습니다. 건배 – SRO