일반적인 문자열을 반환하는 대신 고전적인 개체를 반환 할 수있는 방법이 있습니까? 그렇지 않은 경우 : 모범 사례는 무엇입니까? 당신은 당신의 객체를 xml로 옮기고 반대편에있는 객체를 다시 빌드합니까? 다른 가능성은 무엇입니까?WebService에서 객체를 반환 할 수 있습니까?
답변
앞서 언급했듯이 직렬화를 통해 .net에서이를 수행 할 수 있습니다. 기본적으로 모든 원시 유형은 직렬화 가능하므로 자동으로 발생합니다.
그러나 복잡한 유형이있는 경우 객체를 [Serializable] 속성으로 표시해야합니다. 복잡한 유형의 속성도 마찬가지입니다.
그래서 예를 들어, 당신은해야합니다
[Serializable]
public class MyClass
{
public string MyString {get; set;}
[Serializable]
public MyOtherClass MyOtherClassProperty {get; set;}
}
예 : .NET에서이 클래스는 개체를 XML로 직렬화 한 다음 소비하는 서비스에서 다시 원래 개체 유형 또는 동일한 데이터 구조를 갖는 대리자로 재구성하는 직렬화를 호출합니다.
개체를 XML로 직렬화 할 수 있고 WSDL에서 설명 할 수 있다면 예, 웹 서비스에서 개체를 반환 할 수 있습니다.
자동으로 직렬화있는 개체로이 작업을 수행 닷넷. 나는 자바가 같은 방식으로 작동한다는 것을 확신한다. 이 웹 서비스는 휴대 성을 의미 - - 그때의 서비스에 액세스 할 수 , 내가 XML로 개체를 바꾸어 가능 http://www.codeguru.com/Csharp/Csharp/cs_syntax/serialization/article.php/c7201
: 여기
는 .NET에서 객체 직렬화에 대해 이야기 기사입니다 어떤 언어이든간에, 나는 그 언어로 파서/객체 트랜스 포저를 생성하기 만하면된다.서비스를 설명하는 WSDL 파일이 있기 때문에 일부 시스템에서는 거의 자동화되어 있습니다.
(예를 들어, C로 작성된 서버, C++/gSOAP로 작성된 클라이언트 및 Cocoa/Objective-C로 작성된 클라이언트를 대체하는 pure python으로 작성된 서버가 있습니다. 우리는 soapUI를 테스트로 사용합니다 프레임 워크, 자바로 작성).
XML을 사용하여 웹 서비스에서 객체를 반환 할 수 있습니다. 그러나 웹 서비스는 플랫폼 및 운영 체제에 무관심해야합니다. 객체를 직렬화하면 파일과 같은 바이트 스트림에서 객체를 저장하고 검색 할 수 있습니다. 예를 들어, Java 객체를 직렬화하고, 이진 스트림을 Base 64 인코딩을 통해 CDATA 필드로 변환 한 다음 서비스의 클라이언트로 전송할 수 있습니다.
그러나 클라이언트는 Java 기반 개체 인 경우에만 해당 개체를 복원 할 수 있습니다. 또한 개체를 직렬화하고 정확하게 복원하려면 전체 복사본이 필요합니다. 깊은 사본은 비쌀 수 있습니다.
가장 좋은 방법은 문서를 나타내는 XML 스키마를 만들고 해당 개체의 인스턴스로 해당 스키마의 인스턴스를 만드는 것입니다.
@ 브라이언 : 자바에서 어떻게 작동하는지 모르지만 .net 객체는 base64 문자열이 아닌 XML로 직렬화됩니다. webservice는 웹 서비스에 필요한 메소드 및 객체 정의를 포함하는 wsdl 파일을 게시합니다.
나는 아무도 단순히 다른 사람들이 말했듯이 base64로 문자열
을 만들 웹 서비스를 생성 없다는 것을 희망, 그것은 가능하다.그러나 서비스와 클라이언트가 모두 도메인 동작이 동일한 객체를 사용하는 경우, 처음에는 서비스가 필요하지 않았을 것입니다. 다른 사람이 말했듯이
, 그것은 가능하다. 그러나 서비스와 클라이언트가 쪽 모두 정확히 동일한 도메인 동작을 가진 개체를 사용하는 경우 처음에는 서비스가 필요하지 않은 것 같습니다.
다소 좁은 설명이므로이 내용에 동의해야합니다. 도메인 객체를 XML로 직렬화 할 수있는 웹 서비스를 사용하면 동일한 도메인 객체로 작업하는 클라이언트가 쉽게 사용할 수 있지만 해당 클라이언트가 노출 된 특정 웹 서비스를 사용하는 것으로 제한된다는 것을 의미합니다. 다른 클라이언트가 도메인 객체에 대해 알지 못하지만 XML을 통해 서비스와 상호 작용할 수 있도록하여 역순으로 지정하십시오.
다니엘 오거는 : 다른 사람이 말했듯이
것이 가능하다. 그러나 서비스와 클라이언트가 쪽 모두 정확히 동일한 도메인 동작을 가진 개체를 사용하는 경우 처음에는 서비스가 필요하지 않은 것 같습니다.맥스 : 그것은 다소 좁은 주석의로 나는이 동의해야합니다. XML이는 같은 도메인 객체로 작업 클라이언트 그것을 쉽게 것을 의미하지만, 그것은 또한 특정 웹 서비스 를 사용하는 클라이언트가 로 제한됩니다 의미에 도메인 객체를 직렬화 할 수있는 웹 서비스를 사용하면 ' 노출 된 적이 그리고 그것은 또한 도메인 객체에 대한 지식이 없다하지만 여전히 XML을 통해 서비스와 상호 작용 에 다른 클라이언트를 허용하여 역으로 작동합니다.
맥스 @
: 당신은 두 가지 시나리오를 설명했습니다. 시나리오 1 : 클라이언트가 xml 메시지를 정확히 동일한 도메인 개체로 다시 채우고 있습니다. 저는 이것을 "객체를 반환하는 것"이라고 생각합니다. 내 경험상 이것은 나쁜 선택이며 아래에서이 점을 설명 할 것입니다. 시나리오 2 : 클라이언트는 동일한 도메인 객체가 아닌 다른 무언가로 XML 메시지를 재수 : 나는 그러나 나는이 도메인 객체를 반환 할 생각하지 않는다, 100 % 배후입니다. 실제로 메시지 나 DTO를 보내고 있습니다.
이제 웹 서비스에서 true/pure/not DTO 객체 직렬화가 인 이유는 무엇입니까? 나쁜 아이디어입니다. 주장 : 첫 번째 장소에서이 작업을 수행하기 위해, 당신이 중 하나는 클라이언트와 서비스 모두의 소유자, 또는 사실 유형의에 그들이 개체를 다시 재수 할 수 있도록 사용하는 라이브러리와 클라이언트를 제공해야합니다. 문제 : 유형으로이 도메인 객체는 이제 두 개의 준 관련 도메인에 존재하며 두 개의 준 관련 도메인에 속합니다. 시간이 지남에 따라 다른 도메인에서 의미가없는 하나의 도메인에 동작을 추가해야 할 수 있으며 이로 인해 오염 및 잠재적으로 고통스러운 문제가 발생할 수 있습니다.
나는 보통 이렇게하는 압도적 인 이유가있을 때 난 단지 시나리오 1을 사용 시나리오 2. 기본.
나는 처음 대답에 너무 간절히 여겨서 사과드립니다. 나는 이것이 내 견해만큼이나 일을 깨끗이 해주기를 바란다. Lomax, 그것은 우리가 동의하는 것처럼 보일 것입니다;).
JSON은 자바 스크립트의 하위 집합으로 웹에서 객체를 전달하는 꽤 일반적인 방법입니다. 많은 언어에는 JSON 코드를 기본 객체로 변환하는 라이브러리가 있습니다 (예 : simplejson, Python 참조).
JSON 용 라이브러리에 대한 자세한 내용은 JSON webpage
을 참조하십시오.- 1. 클래스가 자체 객체를 반환 할 수 있습니까?
- 2. JMock 모의 객체가 다른 모의 객체를 반환 할 수 있습니까?
- 3. 어떻게하면 PDO에서 객체를 간단하게 반환 할 수 있습니까?
- 4. 함수가 객체를 반환 할 수 있습니까? Objective-C 및 NSMutableArray
- 5. Zend_Auth가 클래스를 클래스로 반환 할 수 있습니까?
- 6. C# webservice에서 vba로 다차원 배열 데이터 반환
- 7. asp.net webservice에서 반환 할 수있는 데이터 유형은 무엇입니까?
- 8. webservice에서 반환 된 xml의 네임 스페이스
- 9. NSFetchRequest - 속성 배열을 반환 할 수 있습니까?
- 10. JSON 객체를 사용하여 webservice에서 데이터를 전달하는 방법
- 11. ASP.NET의 webservice에서 System.Drawing을 사용할 수 있습니까?
- 12. 이벤트 처리기에서 값을 반환 할 수 있습니까?
- 13. Json 객체를 반환 할 수없는 이유는 무엇입니까?
- 14. JSON/PHP/Mysql으로 자바 객체를 저장하면 사용자가 반환 할 때 다시로드 할 수 있습니까?
- 15. C++ 객체를 자동으로 직렬화 할 수 있습니까?
- 16. Kinect를 사용하여 객체를 식별 할 수 있습니까?
- 17. NHibernate 세션에서 객체를 분리 할 수 있습니까?
- 18. 아이폰에서 더미 객체를 시뮬레이션 할 수 있습니까?
- 19. jquery.cookie가 객체를 값으로 처리 할 수 있습니까?
- 20. Perl의 객체를 어떻게 조롱 할 수 있습니까?
- 21. 어떻게이 JSON 객체를 직렬화 할 수 있습니까?
- 22. CryptVerifySignature() 해시 객체를 재사용 할 수 있습니까?
- 23. UITableView에 객체를 어떻게 추가 할 수 있습니까?
- 24. Cipher 객체를 재사용 할 수 있습니까?
- 25. WPF 객체를 어떻게 복제 할 수 있습니까?
- 26. 생성자의 객체를 참조 할 수 있습니까?
- 27. LotusScript 함수에서 목록을 반환 할 수 있습니까?
- 28. void 함수로 반환 할 수 있습니까?
- 29. actionPerformed가 값을 반환 할 수 있습니까?
- 30. 절약 목록에서지도 목록을 반환 할 수 있습니까?