Ho un server HTTP personalizzato costruito in C# che accetta richieste per servizi REST e risponde con XML o JSON (a seconda di cosa il cliente ha bisogno). I servizi REST sono definiti in fase di esecuzione da una configurazione basata su database, variano ampiamente nei parametri di input e nei tipi di output e funzionano in modo ottimale durante la produzione.Creare ed esporre un servizio SOAP e il suo WSDL dinamicamente in C# (con un listener TCP personalizzato!)
Tuttavia, vorrei aggiungere l'accesso SOAP agli stessi servizi, anche con WSDL appropriati. Dal momento che i servizi disponibili non sono hard-coded, questo significa:
- La pubblicazione di un WSDL generato in fase di esecuzione dalle definizioni di metodo nel database
- Parsing richieste SOAP in arrivo, la mappatura di queste definizioni, e fare in modo le richieste sono conformi alla firma del metodo prima di maneggiare loro
- una volta che la risposta viene gestita, creando un incontro risposta SOAP la WDSL per restituire i risultati
la documentazione MS (e Google) i documenti utilizzando Visual Studio per generare web Servi ces (e WSDL) in fase di progettazione, esponendo materiale tramite WebMethods, ASP.NET MVC ecc. Questo non è quello che sto cercando, in quanto non sono definizioni di metodo da cui generare i binding in fase di progettazione.
Qualcuno ha qualche idea (ad esempio toolkit per l'analisi SOAP non elaborata) e pensieri sulla generazione di WSDL da firme di metodo create in modo dinamico, ecc.? Qualche idea su come si possa andare a costruire cose del genere se no? Sto cercando di evitare di reinventare la ruota, se possibile.
PS: Chiaramente ci sono cose standardizzate nel framework .NET per questo, dal momento che Visual Studio lo fa per te - qualche idea su come accedervi a un livello più basso, in fase di runtime?
_ "I servizi REST sono definiti in fase di runtime da una configurazione basata su database" _ - I brividi quando l'ho letto. Non è un inferno di manutenzione e risoluzione dei problemi? – CodeCaster
Mi sto occupando di una situazione molto simile chiedendomi se la risposta accettata funzionasse per te –
np-hard - Ho fatto una dimostrazione di concetto e ha fatto ciò che era inteso. Non ho mai esportato nulla in produzione, tuttavia, poiché il fatto di chiedere ai clienti di implementare il servizio REST sembrava una scelta più affidabile dell'analisi manuale e di eventuali bug che potrebbero essere introdotti attraverso il complesso processo di analisi manuale delle richieste SOAP. –