Pregunta

Entiendo el valor de las tres partes de servicio/host/cliente modelo ofrecido por la WCF.Pero es sólo a mí o ¿no le parece que WCF tomó algo muy directa y sencilla (la ASMX modelo) y se hizo un lío fuera de él?

Hay una alternativa al uso de SvcUtil de la línea de comandos paso atrás en el tiempo para generar el proxy?Con ASMX servicios de un arnés de prueba se proporciona automáticamente;hay una buena alternativa en la actualidad con WCF?

Soy consciente de que la WS* la materia que está más estrechamente integrado con WCF y la esperanza de encontrar algún beneficio para WCF allí, pero geeze, de lo contrario, estoy perplejo.

También, el estado de los libros disponibles para WCF es abismal en el mejor.Juval Lowy, un excelente autor, ha escrito un buen O'Reilly libro de referencia "Programación de Servicios WCF", pero no hace mucho (para mí de todos modos) para el aprendizaje de ahora el uso de WCF.Ese libro precursor (y un poco mejor organizado, pero no mucho, como un tutorial) es Michele Leroux Bustamante Aprendizaje de WCF.Tiene buenos puntos, pero es anticuado en su lugar y su sitio Web correspondiente se ha ido.

¿Tienes un buen WCF de aprendizaje referencias además de continuar a Google la bejebus de las cosas?

¿Fue útil?

Solución

Bien, aquí vamos.En primer lugar, Michele Leroux Bustamante del libro ha sido actualizado para VS2008.El sitio web del libro no se ha ido.Es hasta ahora, y tiene un montón de grandes WCF info.En ese sitio web que proporciona código actualizado compatible con VS2008 para todos los ejemplos de su libro.Si el fin de Amazon, usted va a obtener la reimpresión que se actualiza.

WCF no es sólo un reemplazo para ASMX.Seguro de que puede (y lo hace bastante bien) reemplazar ASMX, pero el beneficio real es que permite que sus servicios se auto-organizada.La mayoría de la funcionalidad de WSE ha sido horneados, desde el inicio.El marco es muy configurable, y la capacidad para servir a múltiples estaciones a través de varios protocolos es increíble, de la OMI.

Mientras que usted todavía puede generar las clases de proxy desde la opción "Agregar Referencia de Servicio" opción, no es necesario.Todo lo que tienes que hacer es una copia de su ServiceContract interfaz y dígale a su código de dónde encontrar el punto final para el servicio, y eso es todo.Usted puede llamar a los métodos del servicio con muy poco código.Usando este método, usted tiene el control completo sobre la implementación.Independientemente del método que elija para generar una clase de proxy, Michele muestra y se usa tanto en su excelente la serie de webcasts sobre el tema.

Michele tiene un montón de grandes material por ahí, y te recomiendo que echa un vistazo a su sitio web(s).He aquí algunos enlaces que eran increíblemente útil para mí como yo estaba aprendiendo de WCF.Espero que venga a darse cuenta de lo fuerte que WCF realmente es, y como es fácil de implementar.La curva de aprendizaje es un poco empinada, pero la recompensa por su inversión de tiempo son bien vale la pena:

Me recomiendan ver al menos 1 de Michele webcasts.Ella es una muy eficaz presentador, y ella obviamente, es muy bien informado cuando se trata de WCF.Ella hace un gran trabajo de desmitificar el funcionamiento interno de WCF desde el suelo hacia arriba.

Otros consejos

Estoy teniendo un hardtime a ver cuando me debería o podría utilizar WCF.Por qué?Porque yo puse la productividad y la simplicidad en la parte superior de mi lista.¿Por qué fue el ASMX modelo tan exitoso, debido a que se trabajó, y conseguir que funcione rápido.Y con VS 2005 y .NET 2.0 wsdl.exe fue escupir bastante agradable y compatible con los servicios.

En la vida real, usted debe tener muy pocos los protocolos de comunicación en su arquitectura.Esto mantiene la sencillez de un mantenible.Si usted necesita para acceder a los sistemas de legado, escribir adaptadores específicos para ellos, por lo que puede jugar en el bonito y brillante y hermoso SOA mundo.

WCF es mucho más poderoso que ASMX y se extiende en varias formas.ASMX es limitado a solo HTTP, mientras que WCF puede utilizar varios protocolos de comunicación (concedido, HTTP es todavía la forma en que la mayoría de la gente va a usar, al menos para los servicios que necesitan para ser interoperables).WCF también es más fácil de extender.Al menos, es posible extender de una manera que ASMX no puede ser extendida."Fácil" puede ser de estiramiento.=)

El añadido de la funcionalidad ofrecida por la WCF es mucho mayor que la complejidad se añade, en mi opinión.También creo que el modelo de programación es más fácil.DataContracts son mucho mejor que tener que serializar el uso de la serialización XML con las propiedades públicas para todo, por ejemplo.También es mucho más declarativo en la naturaleza, que es también agradable.

Esperar....¿alguna vez uso .NET Remoting, la causa de eso es la cosa real en su sustitución..NET Remoting es bastante complicado en sí mismo.Me parece WCF más fácil y mejor establecidos.

Yo no lo veo mencionado a menudo lo suficiente, pero se puede implementar bastante sencillo de servicios con WCF, muy similar a la ASMX servicios.Por ejemplo:

[ServiceContract]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class SimpleService
{
    [OperationContract]
    public string HelloWorld()
    {
        return "Hello World";
    }

}

Usted todavía tiene que registrar el punto final en su web.config, pero eso no es tan malo.

Eliminando el nivel de detalle de los datos separados, el servicio y los contratos de operación va una manera larga hacia la fabricación de WCF más manejable para mí.

VS2008 incluye el "Agregar Referencia de Servicio" en el menú contextual del elemento que se va a crear el proxy de detrás de las escenas.

Como se mencionó anteriormente, WCF no es concebido como un reemplazo para el servicio web ASMX tipos, pero para ofrecer una consistente, segura y escalable metodología para todos los interoperable de servicios, ya sea a través de HTTP, tcp, canalizaciones o MSMQ de transportes.

Voy a confesar que tengo otros problemas con WCF (por ejemplo,re-escritura de las firmas de método al exponer un servicio a través de basicHTTP - ver aquí, pero en general creo que es una clara imrovement

Si usted está utilizando el VS2008 y crear un proyecto WCF, a continuación, obtendrá automáticamente un arnés de prueba cuando usted presione run/debug y usted puede agregar una referencia sin tener que utilizar svcutil.

Mis pensamientos iniciales de WCF eran exactamente el mismo!Aquí están algunas soluciones:

  1. Programa tu propio proxy/cliente de la capa de la utilización de medicamentos genéricos (ver clases ClientBase, La unión).He encontrado que esto es fácil conseguir trabajo, pero es difícil perfecto.
  2. Utilizar a un tercero la ejecución de 1 (SoftwareIsHardwork es mi favorito)

WCF es un reemplazo de todos los anteriores servicio web tecnologías de Microsoft.También hace un montón más de lo que se considera tradicionalmente como "servicios web".

WCF "web services" son parte de un espectro mucho más amplio de comunicación remota habilitada a través de WCF.Usted recibirá un mucho mayor grado de flexibilidad y portabilidad de hacer las cosas en WCF que a través de la tradicional ASMX porque WCF está diseñado, desde el suelo, a resumir todos los diferentes distribuidos programación de infraestructuras que ofrece Microsoft.De un extremo en WCF puede ser comunicada, con tan fácilmente a través de SOAP/XML como se puede a través de TCP/binario y a cambio de este medio es simplemente un archivo de configuración del mod.En teoría, esto reduce la cantidad de código necesario al trasladar o las cambiantes necesidades del negocio, objetivos, etc.

ASMX is older than WCF, and anything ASMX can do so can WCF (and more).Básicamente, usted puede ver WCF como tratando de agrupar lógicamente juntos todas las diferentes maneras de conseguir dos aplicaciones para comunicarse en el mundo de Microsoft;ASMX fue solo una de estas muchas maneras y así es ahora que se agrupan bajo el WCF paraguas de capacidades.

Los Servicios Web se puede acceder sólo a través de HTTP y funciona en entorno sin estado, donde WCF es flexible, ya que sus servicios pueden ser alojados en diferentes tipos de aplicaciones.Escenarios comunes para el alojamiento de servicios WCF son IIS,FUE, Self-hosting, Servicio de Windows Administrado.

La principal diferencia es que en la Web de Uso de los Servicios de XmlSerializer.Pero WCF Utiliza DataContractSerializer cual es mejor en Rendimiento en comparación con los XmlSerializer.

En qué escenarios debe ser utilizado WCF

  • Un servicio seguro para procesar las transacciones de negocios.Un servicio que
  • proporciona datos actualizados a otros, tales como un informe de tráfico o de otro
  • el servicio de vigilancia.Un servicio de chat que permite a dos personas
  • comunicar o intercambiar datos en tiempo real.Una aplicación de panel
  • que las encuestas de uno o más servicios de datos y los presenta en una lógica
  • presentación.Exponer un flujo de trabajo implementado utilizando Windows Workflow
  • La fundación como un servicio WCF.Una aplicación de Silverlight para sondear un
  • servicio para las fuentes de datos más recientes.

Características de WCF

  • Servicio De Orientación
  • La interoperabilidad
  • Varios Modelos De Mensajes
  • Servicio De Metadatos
  • Los Datos De Los Contratos
  • Seguridad
  • Varios Transportes y Codificaciones
  • Fiable y Mensajes en Cola
  • Durable Mensajes
  • Las transacciones
  • El AJAX y el RESTO de Apoyo
  • Extensibilidad

fuente: principal fuente de texto

MSDN?Yo suelo hacer bastante bien con la referencia de la Biblioteca de sí mismo, y yo normalmente esperan encontrar artículos de valor allí.

En términos de lo que ofrece, creo que la respuesta es la compatibilidad.El ASMX servicios eran bastante Microsofty.No quiere decir que no tratamos de ser compatible con otros consumidores;pero el modelo no estaba hecho para encajar mucho además ASP.NET las páginas web y algunos otros personalizado de Microsoft a los consumidores.Mientras que WCF, debido a su arquitectura, permite a su servicio a tener muy en estándar abierto basado en los extremos, por ejemplo,REST, JSON, etc.además de la habitual de JABÓN.Otras personas probablemente tendrá un tiempo mucho más fácil de consumir su servicio WCF que su ASMX uno.

(Todo esto es básicamente inferirse de la comparativa de MSDN de la lectura, así que alguien que sepa más debe sentirse libre de corregirme.)

WCF no debe ser pensado como un reemplazo para ASMX.A juzgar por cómo está posicionado y cómo está siendo utilizada internamente por Microsoft, es realmente fundamental de la arquitectura de la pieza que se usa para cualquier tipo de cruzar los límites de la comunicación.

Creo que WCF realmente los avances ASMX implementación de servicios web en muchas maneras.En primer lugar se ofrece un muy buen capas del modelo de objetos que ayuda a ocultar la complejidad intrínseca de las aplicaciones distribuidas.En segundo lugar, usted puede tener más de solicitud de reproducción de mensajería patrones, incluyendo notificaciones asincrónicas desde el servidor al cliente (imposible con puro HTTP), y en tercer lugar abstracción de la subyacente protocolo de transporte de mensajería XML y por lo tanto elegantemente apoyo a HTTP, HTTPS, TCP y otros.Compatibilidad con "1-st generación" de los servicios web también es un plus.WCF utiliza el estándar XML como la representación interna de formato.Esto podría ser percibido como ventaja o desventaja, especialmente con la creciente popularidad de "libre de grasa alternativas a XML" como JSON.

Las cosas difíciles me encuentro con WCF es la gestión de las configuraciones para los clientes y servidores, y la solución de problemas de la no tan agradable con la falla del estado de excepciones.

Sería genial si alguien tenía algún accesos directos o consejos para las personas.

Me parece que es un dolor;en lo que tengo .La RED en ambos extremos, tienen el mismo "contrato" dll cargado en ambos extremos, etc.Pero entonces tengo que ensuciar alrededor con un montón de detalles como "KnownType" atributos.

WCF también de forma predeterminada sólo dejar 1 o 2 clientes conectarse a un servicio, hasta que se cambie un montón de configuración.Cambio de la configuración de código no es fácil, envío un montón de comfig de los archivos no es una opción, ya que es demasiado difícil para combinar nuestros cambios en cualquier cambio que un cliente puede haber hecho en el momento de una actualización (también no queremos que los clientes jugando con las configuraciones de WCF!)

.NET remoting tendían a sólo trabajan la mayor parte del tiempo.

Creo que tratando de pretender que .NET .RED de objetos de base de comunicaciones es el mismo que el envío de bits de modo de Texto (xml) para un sistema desconocidos, era un paso demasiado lejos.

(Las pocas veces que hemos utilizado WCF para hablar con un sistema Java, se encontró que el XSD que el sistema java dio no coinciden con lo XML que quería de todos modos, por lo que se tuvo a mano el código de un montón de los XML de las asignaciones.)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top