2010-02-11 26 views
6

Para un proyecto, debo implementar una comunicación entre una base de datos alojada en un servidor web y varios clientes en Internet. Después de leer un poco y ver algunos videos introductorios sobre posibles tecnologías (Microsoft) me di cuenta de que me parece que tiene (al menos) tres opciones:WCF, servicios web o servicios de datos ADO.NET: ¿Qué debo usar?

1) Windows Communication Foundation (WCF)
2) ASP. los servicios web NET
servicios de datos 3) ADO.NET

Porque no estoy familiarizado con cualquiera de esas tres tecnologías que tengo que aprender (esperemos solamente) una de ellas en profundidad - y la pregunta es: ¿Cuál?

O para ser más precisos: ¿Cuál para la siguiente tarea?

Los datos deben cargarse desde un cliente al servidor/base de datos y también se deben descargar algunos otros datos. En el lado del cliente, esto no ocurrirá de forma interactiva por un usuario que trabaja en un navegador sino como un proceso automático en el cliente que se ejecutará periódicamente (cada 2 horas, por ejemplo).

a) Por el lado servidor web habrá:

  • Una base de datos de SQL Server
  • .NET Framework 3.5 SP1
  • Una biblioteca de clases que representa la estructura de base de datos y modelado con ADO.NET Entity Framework
  • (Una aplicación web ASP.NET que presentará los datos en la base de datos en un navegador: pongo esto entre paréntesis aquí porque esta aplicación web realmente no importa ya que la descarga/descarga de datos mencionada no se activará a través de una GUI del navegador.)

b) El lado del cliente es menos claro y debe ser más flexible. Aquí tengo que distinguir entre dos requisitos:

i) Prioridad Uno (en términos del tiempo que tengo disponible para el desarrollo):

  • El lado del cliente está bajo mi control, que significa: tengo alguna Windows OS en el cliente, puedo instalar .NET Framework y puedo decidir desarrollar un servicio de Windows, una aplicación de consola, una aplicación de Windows Forms o lo que sea. Y tengo conocimiento y acceso a la biblioteca de clases mencionada anteriormente.

ii) menor prioridad, pero debe ser una opción de futuro:

  • necesito para exponer cualquier tipo de descripción de la interfaz que permite a otros desarrolladores crear sus propias aplicaciones para cargar/descargar datos.
  • Los clientes que otros desarrollarán se pueden operar con cualquier tipo de sistema operativo (Windows, UNIX, MacOS y más). También deberán ser lo más libres posible para seleccionar su propio lenguaje de programación preferido.

Debido al último punto que obliga a los desarrolladores a utilizar .NET Framework en el lado del cliente no es una opción. La comunicación en el lado del cliente debe ser cualquier tipo de tecnología "estándar" accesible desde diversas plataformas e idiomas.Estaba leyendo términos como "SOAP", "REST" o "AtomPub" durante mi pequeña investigación y estos parecen ser un tipo de protocolo estándar o tecnología de comunicación (no una invención patentada de Microsoft). Pero no estoy seguro ni sé qué tecnología está "actualizada", tiene el "mejor futuro", es más común y más conocida, es la más poderosa o la más fácil de usar (desde el punto de vista de esas otras posibles ¡Así que la pregunta es qué tengo que apoyar para hacer felices a la mayoría de los desarrolladores del lado del cliente).

Un último punto: ¡La seguridad es importante! La carga/descarga de datos debe estar restringida a personas dedicadas. No debería ser posible usar o explorar la interfaz sin las credenciales apropiadas.

¿Qué tecnología es la mejor para usar ahora? (1), (2) o (3)? ¿Y por qué lo recomendarías?

Muchas gracias de antemano por cualquier consejo!

+0

WCF se puede comunicar con casi ** cualquier lado del cliente ** - Ruby en Mac, iPhone, .NET, Java - lo que sea.Es compatible con más estándares de la industria que cualquier otra cosa .... –

Respuesta

10

Bueno, no. (2) los servicios web ASP.NET de estilo antiguo están a punto de desaparecer, es viejo, ya no se está desarrollando, ha sido reemplazado por WCF.

Esto deja las opciones 1 (WCF directo) y 3 (Servicios de datos ADO.NET - renombrados servicios de datos WCF recientemente).

Ambos usan WCF como su tecnología básica, por lo que aprender y saber sobre WCF es imprescindible en ambos casos.

Con WCF recto (Opción 1) tiene más opciones: puede autohospedarse, alojar su servicio en IIS, usar diferentes protocolos y enlaces, y así sucesivamente. Pero con la elección viene la complejidad, necesitas aprender y saber todo eso, al menos hasta cierto punto. Su cliente necesita poder hablar con SOAP: cualquier idioma (.NET por supuesto, Java, Ruby, PHP, lo que sea) puede hablar SOAP de una forma u otra.

Si está muy interesado en exponer los datos de las bases de datos a clientes externos, creo que los Servicios de datos de WCF son realmente una buena opción. Se basa en REST, por lo que puede acceder a su Servicio de datos WCF con un navegador y simplemente ver qué sucede. Es bastante potente, e incluso ofrece un soporte lateral del cliente LINQ: usted formula una consulta LINQ y esto se traduce en su llamada REST apropiada a su servicio de datos.

Con WCF Data Services, su cliente necesita nada más que una pila HTTP, incluso el iPhone tiene eso :-) Pero con un cliente .NET, las cosas son, por supuesto, más agradables, cómodas y eficientes.

Diría que revise primero el WCF Data Service y vea si eso satisface sus necesidades, y si no, investigue más profundamente en WCF. También echa un vistazo a WCF Data Service at a glance para una introducción.

ACTUALIZACIÓN:

Marc, no he entendido bien que WCF en el servidor cumple este requisito ? ¿Y ADO.NET (WCF) Data servicios también?

Absolutamente. WCF (normal o con servicios de datos) en el lado del servidor no NOT dicta el cliente de ninguna manera, forma o forma. Puede conectar un iPhone a un Servicio de datos de WCF, si realmente lo desea :-) WCF se ha diseñado desde cero para ser muy interoperable. De hecho, es la única plataforma que implementa la mayor parte de la industria WS- *. estándares para comunicaciones multiplataforma.

+0

"Bueno, no. (2) los antiguos servicios web de ASP.NET están a punto de desaparecer, es viejo, ya no se está desarrollando, ha sido reemplazado por WCF". ¿Qué sabor tiene el refresco allí, orujo? lol. Y es posible que desee revisar los requisitos establecidos. –

+0

+1 porque soy un idiota. –

+0

Interesante, no sabía que realmente podría escribir Linq contra los servicios de datos. ¿Puede hacer uniones, subconsultas, etc., o está básicamente limitado a lo que esperaría de un servicio REST, consultas simples contra un tipo de objeto? – Aaronaught