2009-03-10 11 views
6

Nella società in cui lavoro abbiamo un'applicazione desktop sviluppata in .NET che ci piace aprire alcune parti per altri sviluppatori di software.Come iniziare a creare un'applicazione API in .NET

Lo vedo come una sorta di metodo pubblico a cui altri software possono accedere. Esiste un approccio standard, le migliori pratiche o altre esperienze al riguardo?

Credo che si possa fare questo con chiamate Win32, programmazione C/C++ ecc. Ma io sono principalmente uno sviluppatore .NET e ho alcuni anni di esperienza nella programmazione principalmente in VB.NET ma anche in C#. Spero di trovare un modo per farlo in .NET. Ma dovrebbe essere accessibile per software sviluppato in altre lingue.

migliori saluti/ Magnus

risposta

6

Ci sono due modi per farlo. Il primo riguarda l'utilizzo del pattern Plug In/Module. Start here per quello.

Un altro modo è di esporre semplicemente la logica dell'API attraverso assembly ben documentati.

Il modo in cui scegli si riduce a come desideri implementarlo. Ad esempio, Adobe Photoshop utilizza il pattern plug-in in larga misura. MS Office utilizza entrambi i plug-in e fornisce un'interfaccia a oggetti per lavorare con l'applicazione.

UPDATE: oggetti negli assiemi NET possono essere esposti ad essere consumati da applicazioni esterne semplicemente modificando la portata oggetti pubblica. Ciò include i moduli di Windows, gli oggetti business, enum, ecc.

Basti pensare dal punto di vista dello sviluppatore esterno. Di quali informazioni avranno bisogno per avere successo nell'estensione/controllo del prodotto? Qualunque cosa sia, mettila nel file di aiuto.

Inoltre, utilizzare le funzionalità di autocomposizione di .Net. Ciò include l'aggiunta della documentazione xml che l'IDE già sa leggere e visualizzare tramite intellisense. Ad esempio:

/// <summary> 
/// Gets all active documents for the specified customer. 
/// </summary> 
/// <param name="customerId">The Id of the customer.</param> 
/// <returns>A list of documents for this customer.</returns> 
public static List<Document> GetDocuments(int customerId) 
{ 
    //... do something ... 
} 
+0

Grazie per il suggerimento circa il modello. Per quanto riguarda le "assemblee ben documentate", speravo in un suggerimento su dove trovare maggiori informazioni a riguardo, magari un codice di riferimento. – Magnus

+3

Guarda Ghost doc per un buon plugin VS per fare il tuo XML Doc e guarda sandcastle per costruire una versione HTML del tuo documento in modo che le persone che usano la tua API non debbano guadare se per ottenere la documentazione. –

0

Lo sviluppo di un'API pubblica dipende in gran parte la funzionalità del programma. Se si desidera esporre un'API accessibile ad altre lingue, i servizi Web XML sono generalmente il modo per farlo. Tuttavia, ciò potrebbe non essere pratico per un'applicazione desktop-only.

2

"Esporre l'applicazione tramite un'API pubblica" non è una definizione dettagliata dei requisiti. Prima di progettare qualsiasi cosa, ottenere i requisiti dettagliati.

Per un'API, si consiglia di iniziare con i requisiti, quindi procedere con l'utilizzo dei casi. Poiché si tratta di un'API, dovresti effettivamente scrivere del codice utilizzando l'API proposta, per vedere come ci si sente a programmarlo. Il codice che scrivi dovrebbe riguardare i casi d'uso con cui inizi. Potresti persino scrivere quel codice nei test unitari, quindi creare l'API attraverso lo sviluppo e il refactoring basati sui test.

Tuttavia, poiché i casi di utilizzo si concentrano su come l'utente utilizzerà il software, ti aiuteranno a concentrarti su quali parti del software l'utente utilizza direttamente. Un caso d'uso può usarne un altro; ma se un utente non utilizza direttamente un particolare caso d'uso, allora questo non deve essere esposto pubblicamente.

Nota che questo mi ha aiutato anche nello sviluppo dei servizi web.I casi d'uso direttamente accessibili dall'utente diventano le operazioni da esporre attraverso il servizio. Qualsiasi caso d'uso che l'utente non invochi direttamente rimarrà nascosto, come implementazione.

+0

Hmm, non sono davvero sicuro di come leggere questa risposta, sembra OOT? La mia domanda non riguarda un servizio web o un'API pubblica a cui accedere sul web. Si tratta di un'applicazione desktop locale in cui un'azienda partner desidera accedere ad alcune funzionalità del nostro software. Grazie comunque. – Magnus

+0

Si applicano gli stessi principi. Ciò che conta è che è necessario esporre parti della tua applicazione a causa di alcuni casi di utilizzo che non possono essere realizzati senza di essa. Concentrandoti sui casi d'uso, esponi solo ciò che è necessario. –

3

creare una classe API che espone ciò funzioni che si desidera persone di avere accesso e registrarlo per il progetto COM Interop -> Proprietà -> Crea -> Registra per interoperabilità COM

+0

Interessante, esaminerò questo. – Magnus

+0

+1 L'interoperabilità COM consentirà l'uso su altri client .net. – eglasius

Problemi correlati