2009-05-05 5 views
22

Quindi sto utilizzando WCF e desidero documentare le mie interfacce e i servizi da fornire a un'altra azienda per un'app interna. Qual è il modo migliore per documentare queste interfacce? Preferirei avere la documentazione in linea con il codice, e quindi avere qualcosa di utile per l'output HTML, ma non sono sicuro se c'è un modo consigliato per farlo.Il modo migliore per documentare l'interfaccia WCF?

risposta

5

Utilizzare documenti XML per questo. Ci sono molti meta-tag intelligenti che ti permetteranno di inserire esempi di codice, riferimenti tra operazioni, eccezioni generate ecc.

Quindi puoi usare Sandcastle (+ qualche GUI che puoi trovare su Codeplex) per generare chm o documentazione html.

+0

L'implementazione di WCFExtras è l'opzione superiore. – TylerY86

+0

[elaborazione] Lega direttamente i documenti XML al descrittore. L'uso di documenti XML è appropriato, ma mentre Sandcastle o SHFB sono assolutamente appropriati per la documentazione standalone, è solo di terze parti come WCFExtras, ma meno specifico per lo scenario. – TylerY86

0

L'utilizzo dell'output XML dal compilatore è piacevole ... ma è stata la mia esperienza che è difficile esprimere la completa complessità di un servizio e le sue invarianti, dipendenze, ecc. Nei commenti da soli. È meglio mantenere un documento reale separato (Word, HTML, Wiki) per coprire tutto.

3

Io uso due file XSL: uno per documentare il WSDL per le operazioni, uno per documentare l'XSD per i dati passati.

Purtroppo, finora, non ho trovato una soluzione coesiva, quindi lavoro con due file XSLT che trasformano rispettivamente il WSDL e l'XSD nella documentazione HTML.

WSDL Viewer esegue il lavoro per WSDL e produce un primo documento HTML e xs3p fa lo stesso per i dati contenuti nel file XSD.

0

Inserirò il mio contratto di interfaccia in una DLL comune e lo consegnerò. Fornisce a entrambi i commenti xml sul contratto senza fornire i dettagli del servizio e consente loro di implementare il servizio in modalità offline per testare fino a quando non sono pronti per usarlo. Inoltre, possono bypassare wsdl e utilizzare ChannelFactory per creare un canale.

36

Per questo utilizziamo WCFExtras (http://www.codeplex.com/WCFExtras).

Tra le altre caratteristiche che permette di esportare in diretta del codice commenti XML nel WSDL generato, ad esempio, verificare come questi commenti XML:

/// <summary> 
    /// Retrieve the tickets information for the specified order 
    /// </summary> 
    /// <param name="orderId">Order ID</param> 
    /// <returns>Tickets data</returns> 
    [OperationContract] 
    TicketsDto GetTickets(int orderId); 

vengono riflessi nel WSDL di tale interfaccia:

<wsdl:operation name="GetTickets"> 
    <wsdl:documentation> 
    <summary> Retrieve the tickets information for the specified order </summary> <param name="orderId">Order ID</param> <returns>Tickets data</returns> 
    </wsdl:documentation> 
    <wsdl:input wsaw:Action="xxxx" message="tns:PartnerAPI_GetTickets_InputMessage"/> 
    <wsdl:output wsaw:Action="xxxx" message="tns:PartnerAPI_GetTickets_OutputMessage"/> 
    </wsdl:operation> 

Un estratto dai loro documenti:

Aggiunta di documentazione WSDL dal codice sorgente Commenti XML Questa estensione consente s per aggiungere la documentazione WSDL (annotaiton) direttamente dai commenti XML nel file sorgente. Questi commenti saranno pubblicati come parte del WSDL e sono disponibili per gli strumenti WSDL che sanno come trarne vantaggio (ad esempio Apache Axis wsdl2java e altri). La versione 2.0 include anche un importatore WSDL lato client che trasformerà i commenti WSDL in commenti XML nel codice proxy generato.

+2

Apparirà anche nell'IDE? Come in Intellisense di Visual Studio? – Farinha

+2

Nel caso in cui qualcuno lo trovi, l'ultimo è [qui] (https://wcfextrasplus.codeplex.com).Puoi scaricare usando [nuget] (https://www.nuget.org/packages/WCFExtrasPlus/2.4.0). – Joyce

+0

Anche se non è immediatamente evidente, il commento sopra fa riferimento a WCFExtras +, un progetto diverso, ma una continuazione del lavoro su WCFExtras. Roba buona. – TylerY86