Sveiki,
Galit paaiskinti esminius skirtumus tarp šitų web servisų? Nes ieškant google kažkokios info, tai susidaro toks įspūdis kad gaunamas vienas ir toks pat rezultatas tik su sudėntingesnėmis funkcijomis. Kaip sakant - nori programavimo sudėtingai - imk WCF. Įdomi jūsų nuomonė šiuo klausimu.
Šiaip tiesios yra :)
WCF turi pakankamai sudėtingą XML konfigūracijos failą, reikia laiko perprasti ABC (Address, Binding, Contract). Jeigu reikia prie esamo puslapio prikabinti vieną kitą web servisą - gal ASMX vis dar nėra blogai. BET...
Jeigu perprasi WCF, galėsi naudoti tą patį modelį programuojant tiek HTTP protokolui, tiek TCP, MSMQ ar dar kokiam kitam. Šiuo metu egzistuoja WCF servisai, kurie leidžia nesunkiai kurti REST servisus ir t.t. Bendrai paėmus, WCF yra tai, su kuo turėtų būti daromi bet kokie nauji Web (ir ne tik) servisai .NET, nors tai reikalauja tam tikrų pirminių pastangų.
Žinau keli iš mūsų (pvz., Giedrius) labai daug dirba su WCF, gal galės jie dar ką pridurti.
Šiaip atsiperka po to tie sudėtingesni/lankstesni konfigūravimai per XML.
Diegėm pas klientą į gamybinę WCF webserviso klientą. Viskas atrodo ištestuota pas save, o pas klientą pasirodo išjungta Kerberos autentifikacija, ir veikia tik Basic. Užteko tik config'ą patvarkyti. ASMX atveju reiktų jau tvarkyti kodą, rebuild'ą ir reinstall'ą daryti.
Man yra tekę susidurti su dviem webserviso paskirtimis: webservisai integracijoms tarp sistemų ir webservisai skirti AJAX prifarširuotiems puslapiams maitinti. Jeigu kalbame apie antrą variantą, tai ASMX gal nėra labai blogai, bet jeigu galbam apie integracijas - vienareikšmiškai - WCF.
Su konfigūracija pradžioje padeda gaudytis Configuration Editor Tool (SvcConfigEditor.exe), perpratus esminius principus ir rankomis redaguotis nesunku. Iš kitos pusės 4 versijoje standartinių atvejų konfigūravimas kažkiek supaprastėja.
Mano akimis žiūrint, tai WCF už ASMX visų pirma yra geriau dėl lankstumo, kuris bus reikalingas dirbant su kitų platformų klientais - galima labai daug ką perrašyti kaip atrodo geriau, todėl yra daug visko ir perrašyta. Mano asmenine nuomone, MS darydamas ASMX galvojo apie save, o darydamas WCF jau pradėjo galvoti ir apie kitus :)
O aš šiek tiek pakritikuosiu WCF, bent tiek kiek galiu, nebent kas nors paneigs.Elemntarus pavizdys, ka man reikėdavo grąžinti duomenis DataSet formatu.
Aš irgi užsidegaiu padaryti tai per WCF. Viskas pavyko. Ištestavau. Viskas veikia.Tačiau pasigedau vienos paprastos funkcijos- greito testavimo.Kartais reik patikrinti, ką web servisas grąžina. Tai pasikraudavau tą web servisų puslapį, kuris kuriamas automatiškai, ir pratestuodavau. O su WCF reik turėti tą WCFTestClient programėlę. Ir su ja testuoti. Mane tai užnervino.Aišku, jei tuo WCF naudosis daug visokių kitų aplikacijų, kurios naudoja kitokius prtokolus, tada vienareikšmiškai WCF imčiau. Bet jei tu nedarau kažkokių workflowinių mechanizmų, ar dar kokių nors sudėtingų variacijų, aš vis dėl to rinkčiausi Web servisus.
Dėl WCF ir kitų web servisų testavimo - norėčiau rekomenduoti SoapUI, www.soapui.org. Yra nemokama versija, kuri turi tikrai daug galimybių, naudotis tikrai paprasta ir tai daug galingiau nei asmx automatiškai generuojamas puslapis. Plius SoapUI yra parašytas naudojant Java, todėl busit ištestavę ir kaip kita platforma dirba su jūsų servisu/serviso WSDL.
Ir dar norėčiau paraginti nenaudoti DataSet kaip web serviso rezultato, nes DataSet yra specifinė .NET struktūra, dažnai kelianti įvairias problemas kitoms platformoms.
Dar vienas dalykas, kurio reikia nepamiršt. WCF nepavyks paleisti ant senesnių windowsų pvz. Windows 2000.
dziedrius: Ir dar norėčiau paraginti nenaudoti DataSet kaip web serviso rezultato, nes DataSet yra specifinė .NET struktūra, dažnai kelianti įvairias problemas kitoms platformoms.
Labai sutinku su šituo. Šiaip jau savaime pats DataSet yra gana didelis evil, ką jau kalbėti ,kai norėsi iš Java arba Python komunikuoti su tokiu webservicu.