We have to integrate our project with back end Oracle Platform. And this integration is via various WebServices. I have all WSDLs and XSDs for all these integrations. And I need to generate DataContracts from these WSDLs & XSDs.
Now the problem is, mostly all of these integration shares some common data types. and I want to reuse them.
e.g,
Integration1: oracle/common/commonDataTypes.xsd oracle/integration1/someXSD.xsd oracle/ebo/baseTypes.xsd Integration2: oracle/common/commonDataTypes.xsd oracle/integration2/someXSD.xsd oracle/ebo/baseTypes.xsd Integration3: oracle/commonDataTypes.xsd oracle/integration2/someXSD.xsd oracle/ebo/baseTypes.xsd
in this case, I want to reuse the oracle.common.CommonDataTypes between integration1 & 2.
so far I have tried WSCF.blue & WSCF. But these tools generating all the code in a single folder(and single namespace) and not following namespaces.
I want to generate classes under namespaces like oracle, oracle.commonData, oracle.integration1, oracle.ebo etc.
so is that any way that generated Datacontracts follows exact namespace notation as the XSDs have?
There is no tool which will do this for you I'm afraid. Or none that I know of. The best way to acheive what you want is:
Extract the data contracts for integration 1 using the /dconly flag on svcutil. You need to include all the schema names in the call to svcutil. This will generate a class file with all the types.
Go into the file and manually hack around until your classes are all in the right namespaces. Compile this into an assembly.
Then go back to the integration 1 service and generate your proxy code using the /r flag in svcutil to reference your assembly containing your common types which you want to reuse. This will create a class file containing your proxy which should reference your common types.
You can then do the same for integration 2 and 3.
However, this approach is based on svcutil using the DataContractSerializer to do the work, as the /r flag is not available to XmlSerializer. And this will only work if the schemas exposed on the oracle services adhere to the rather strict DCS rules (can be found here: http://msdn.microsoft.com/en-us/library/ms733112.aspx). If these rules are not adhered to then svcutil will fall back to using XmlSerializer which does not support reuse of types.
Hope this helps.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With