2009-03-10 23 views
6

En la empresa para la que trabajo tenemos una aplicación de escritorio desarrollada en .NET que nos gusta abrir algunas partes para otros desarrolladores de software.Cómo comenzar a crear una API de aplicación en .NET

Lo veo como algún tipo de método público al que otro software puede acceder. ¿Hay algún enfoque estándar, mejores prácticas u otra experiencia de esto?

Supongo que podría hacer esto con llamadas Win32, programación C/C++, etc. Pero soy principalmente un desarrollador .NET y tengo algunos años de experiencia programmming principalmente en VB.NET pero también algo de C#. Espero encontrar una manera de hacer esto dentro de .NET. Pero debe ser accesible para el software desarrollado en otros idiomas.

Saludos/ Magnus

Respuesta

6

Hay dos formas de hacerlo. El primero implica usar el patrón Plug In/Module. Start here para eso.

Una segunda forma es simplemente exponer su lógica API mediante ensamblajes bien documentados.

La manera que elija realmente se reduce a cómo desea que se implemente. Por ejemplo, Adobe Photoshop utiliza el patrón de plug-in en gran medida. MS Office utiliza ambos complementos y también proporciona una interfaz de objetos para trabajar con la aplicación.

ACTUALIZACIÓN: objetos en ensamblados .NET pueden estar expuestos a ser consumido por aplicaciones externas simplemente estableciendo el alcance objetos al público. Esto incluye formularios de Windows, objetos comerciales, enum, etc.

Piénselo desde la perspectiva del desarrollador externo. ¿Qué información necesitarán para poder ampliar/controlar su producto? Sea lo que sea, ponlo en el archivo de ayuda.

Además, utilice las funciones de auto-documentación de .Net. Esto incluye agregar documentación xml que el IDE ya sabe cómo leer y visualizar a través de intellisense. Por ejemplo:

/// <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

Gracias por la punta sobre el patrón. En cuanto a las "asambleas bien documentadas", esperaba un consejo sobre dónde puedo encontrar más información al respecto, tal vez algún código de referencia. – Magnus

+3

Busque en Ghost doc un buen plugin de VS para hacer su XML Doc y observe sandcastle para crear una versión HTML de su documento, de modo que las personas que usen su API no tengan que pasar por la fuente para obtener su documentación. –

0

El desarrollo de una API pública depende en gran medida de la funcionalidad del programa. Si desea exponer una API que sea accesible a otros idiomas, los servicios web XML generalmente son la manera de hacerlo. Sin embargo, esto puede no ser práctico para una aplicación de escritorio.

2

"Exponer la aplicación a través de una API pública" no es una definición de requisito detallado. Antes de diseñar cualquier cosa, obtenga los requisitos detallados.

Para una API, le recomiendo que comience con los requisitos y luego proceda con los casos de uso. Como se trata de una API, en realidad debería escribir algún código con la API propuesta, para ver cómo se siente programarla. El código que escribe debe cubrir los casos de uso con los que empiece. Incluso podría escribir ese código en pruebas unitarias, luego crear la API a través de un desarrollo basado en pruebas y refactorización.

Pero, de todos modos, dado que los casos de uso se centran en cómo el usuario utilizará el software, lo ayudarán a centrarse en qué partes del software usa directamente el usuario. Un caso de uso puede usar otro; pero si un usuario no usa directamente un caso de uso particular, entonces es uno que no necesita ser expuesto públicamente.

Tenga en cuenta que esto también me ha ayudado en el desarrollo de servicios web.Los casos de uso a los que accede directamente el usuario se convierten en operaciones para exponer a través del servicio. Cualquier caso de uso que el usuario no invoque directamente permanecerá oculto, como implementación.

+0

Hmm, no estoy muy seguro de cómo leer esta respuesta, ¿se siente OOT? Mi pregunta no es sobre un servicio web o una API pública a la que acceder en la web. Se trata de una aplicación de escritorio local donde a una empresa asociada le gusta tener acceso a alguna funcionalidad de nuestro software. Gracias de cualquier manera. – Magnus

+0

Se aplican exactamente los mismos principios. Lo que importa es que necesita exponer partes de su aplicación debido a ciertos casos de uso que no se pueden lograr sin eso. Al centrarse en los casos de uso, solo expone lo que es necesario. –

3

crear una clase API que expone qué funciones que la gente tenga acceso a e inscríbete para el proyecto de interoperabilidad COM -> propiedades -> Build -> Registrar para interoperabilidad COM

+0

Interesante, se verá en esto. – Magnus

+0

+1 COM Interop permitirá el uso en otros clientes que no sean .net. – eglasius

Cuestiones relacionadas