views:

29

answers:

1

I'm working on a .net system that will both expose and consume web-services with another system to pass data back and forth - the other system is java based.

Our proposed XSD contains complex types and some concern has been expressed about using complex types and how we'd be better sticking to simple types. I'd have thought .net would have been able to support complex types so was hoping someone can elaborate on what problems I'm likely to face. I've tried googling but not found anything specific.

The Exposing .NET WebService to Other Platform (Java) stackoverflow question has an answer that

"This should work out of the box, but I would advise against returning complex data structures or expecting such as input arguments. If you need complexity of that kind, I would suggest returning/accepting XML instead."

but doesn't really explain why, so any thoughts / explanation greatly appreciated

EDIT - note I'm not planning to transfer platform specific objects over these services, instead I want to model business entities in a shared XSD as complex types, built out of simple types, (so that they can be easily controlled and reused in other XSDs) and these are the element that concern has been raised about.

I plan to do some proof of concept on this to see if I can prove this working / surface any problems, but thought I'd get some views of SO users who have done this before, first.

+2  A: 

There are many platform-specific types that can be used easily as long as both endpoints are homogeneous, but which don't map cleanly to xsd or to other platforms. For example DataTable in .NET is a royal PITA from anywhere else; and anything implementing IXmlSerializable in .NET is most-likely completely lying in the schema.

In the interop scenario, it would usually be worth starting from xsd, as that gives a common standard that all reasonable clients should expect.

Marc Gravell
If in my XSD, I create a new complex type to represent a business entity (rather than using a series of simple types), presumably both platforms should be able to interpret this though as it isn't 'specific' to either platform?
Kris C
@Kris - hopefully, yes; the only way to know for sure is to try it through the various platforms you hope to support
Marc Gravell
Yep - that's going to be my next step, to fire some 'tracer bullets', from one end to the other, but thought I'd stop by here first to see what experiences others have had.
Kris C