wcf - tutorial - web service svc




Quali sono le differenze tra i servizi Web WCF e ASMX? (4)

Ci sono un sacco di discorsi sulla semplicità dei servizi web asmx su WCF. Permettetemi di chiarire alcuni punti qui.

  • È vero che gli sviluppatori di servizi Web principianti inizieranno facilmente nei servizi Web asmx. Visual Studio fa tutto il lavoro per loro e crea prontamente un progetto Hello World.
  • Ma se riesci a imparare il WCF (che ovviamente non richiede molto tempo), puoi vedere che WCF è anche abbastanza semplice e puoi procedere facilmente.
  • È importante ricordare che queste complessità nella WCF sono in realtà attribuite alle belle caratteristiche che le accompagnano. Ci sono indirizzamento, associazioni, contratti ed endpoint, servizi e clienti tutti menzionati nel file di configurazione. La bellezza è che la tua logica aziendale è segregata e mantenuta in sicurezza. Domani se hai bisogno di cambiare il binding da basicHttpBinding a netTcpBinding puoi facilmente creare un binding nel file di configurazione e usarlo. Quindi tutte le modifiche relative ai clienti, ai canali di comunicazione, ai binding ecc. Devono essere eseguite nella configurazione, lasciando la logica del business sicura e intatta, il che è davvero sensato.
  • I "servizi web" WCF fanno parte di uno spettro molto più ampio di comunicazioni remote abilitate tramite WCF. Si otterrà un grado molto più elevato di flessibilità e portabilità facendo cose nel WCF rispetto al tradizionale ASMX perché WCF è progettato, da zero, per riassumere tutte le diverse infrastrutture di programmazione distribuita offerte da Microsoft. Un endpoint in WCF può essere comunicato con altrettanto facilmente su SOAP / XML come su TCP / binario e per cambiare questo mezzo è semplicemente un file di configurazione mod. In teoria, questo riduce la quantità di nuovo codice necessario quando si trasferiscono o si cambiano esigenze aziendali, obiettivi, ecc.
  • È possibile accedere ai servizi Web solo tramite HTTP e funziona in un ambiente senza stato, in cui WCF è flessibile perché i suoi servizi possono essere ospitati in diversi tipi di applicazioni. È possibile ospitare i servizi WCF in Console, Servizi Windows, IIS e WAS, che rappresentano ancora diversi modi di creare nuovi progetti in Visual Studio.
  • ASMX è più vecchio di WCF e tutto ciò che ASMX può fare lo può fare con WCF (e altro). Fondamentalmente puoi vedere WCF come un tentativo di raggruppare logicamente tutti i diversi modi di far comunicare due app nel mondo di Microsoft; ASMX era solo uno di questi molti modi e così ora è raggruppato sotto l'ombrello di funzionalità WCF.
  • Ti piacerebbe sempre utilizzare Visual Studio per NET 4.0 o 4.5 poiché facilita la vita durante la creazione dei servizi WCF.
  • La principale differenza è che i servizi Web utilizzano XmlSerializer. Ma WCF utilizza DataContractSerializer che è migliore nelle prestazioni rispetto a XmlSerializer. Ecco perché WCF funziona meglio di altre controparti della tecnologia di comunicazione di .NET come asmx, .NET remoting ecc.

Per non dimenticare che ero uno di quei ragazzi a cui piacevano i servizi asmx più di WCF, ma quella volta non ero a conoscenza dei servizi WCF e delle sue capacità. Avevo paura delle configurazioni della WCF. Ma ho osato e ho provato a scrivere alcuni servizi WCF per conto mio, e quando ho imparato di più su WCF, ora non ho alcuna inibizione riguardo a WCF e li raccomando a chiunque e a tutti. Buona programmazione !!!

Sono totalmente confuso tra i servizi web WCF e ASMX. Ho usato molti servizi web nella mia fase precedente, e ora c'è questa nuova cosa introdotta chiamata WCF. Posso ancora creare WCF che funziona come un servizio web. Penso che ci saranno più cose nella WCF.

Quali sono le differenze tra WCF e servizi Web? Quando dovrebbero essere usati ciascuno?


I servizi Web ASMX possono essere richiamati solo da HTTP (servizio web tradizionale con .asmx). Mentre il servizio WCF o un componente WCF possono essere richiamati da qualsiasi protocollo (come http, tcp ecc.) E qualsiasi tipo di trasporto.

In secondo luogo, i servizi Web ASMX non sono flessibili. Tuttavia, i servizi WCF sono flessibili. Se crei una nuova versione del servizio, devi solo esporre un nuovo fine. Pertanto, i servizi sono agili e questo è un approccio molto pratico guardando le attuali tendenze del business.

Sviluppiamo WCF come contratti, interfaccia, operazioni e contratti dati. Come sviluppatore, siamo più concentrati sui servizi di business logic e non dobbiamo preoccuparci dello stack di canali. WCF è un'API di programmazione unificata per qualsiasi tipo di servizio, quindi creiamo il servizio e usiamo le informazioni di configurazione per configurare il meccanismo di comunicazione come HTTP / TCP / MSMQ ecc.


Questa è una domanda molto vecchia, ma non credo che i benefici di ASMX siano stati interpretati correttamente. Pur non essendo estremamente flessibile, i servizi web ASMX sono molto semplici da usare e da capire. Mentre WCF è più flessibile, è anche più complesso da gestire e configurare.

I servizi Web ASMX sono pronti per essere visualizzati e aggiunti come riferimento per i servizi Web non appena si aggiunge il file. (supponendo che il tuo progetto sia costruito)

Per il semplice flusso di lavoro di sviluppo di create webservice -> run webservice -> add webservice reference , un servizio web ASMX ha pochissime cose che possono andare storte, non molto da configurare erroneamente, e questo è il suo punto di forza.

In risposta a quelli che affermano che WCF sostituisce ASMX, vorrei rispondere che WCF avrebbe bisogno di aggiungere una modalità di configurazione KISS semplificata per sostituire completamente ASMX.

Esempio web.config per un servizio web ASMX:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings />
  <system.web>
    <compilation targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
  </system.web>
</configuration>

WCF sostituisce completamente i servizi Web ASMX. ASMX è il vecchio modo di fare servizi web e WCF è il modo attuale di fare servizi web. Tutto il nuovo sviluppo del servizio Web SOAP, sul client o sul server, dovrebbe essere eseguito utilizzando WCF.







asmx