Jag sitter med ett gammalt projekt (.NET Framework 1.1) som nu ska integreras i en större miljö. Jag kommer att behöva anropa en del externa webbtjänster från code behind. Har bara minimal erfarenhet av att jobba mot webservices tidigare, då har det varit tjänster som funnits i samma projekt. Hur går jag tillväga för att lösa detta? Enklaste sättet är att du ber om att då länken till wsdl till webservicen och sedan i VS så väljer du ditt projekt, högerklickar, väljer Add Web Referens och sedan klistrar in länken där och vips så är du reda att köra på. Det känns som om det skulle kunna bli nån typ av cirkulärt referensberoende mellan min applikation och den applikation som den ska integreras med. Vi kommer ju att behöva "prata" med varandra och alltså skapa referenser i respektive projekt. Är detta inte något problem? Nej det är inget problem, men webservices är enkelriktade, så om du vill att din server skall kunna skicka data till din klient så måste du sätta upp en webservices på din klient också, och det är inte att rekommendera eftersom det kräver en webserver hos maskinen som hostar klienten.Web Services
Sv: Web Services
När du fått kläm på hur det fungerar, så flytta ut kommunikatione till webservicen till ditt Repository assembly skapa en ny klass (typ xxxWSRepository) där i sköter du alla kommunikation till denna externa webservicen, en ny klass för varje webservices som du anropar. Och när du är färdig så skapar du ett interface av denna klass, och så använder du bara detta interface när du vill accessa webservicen.
Då blir det enkelt att byta ut något om något ändras i din kommunikation, samt att du enklare kan göra dina enhetestester utan att behöva hämta data från webservicerna (kräver DI).
- MSv:Web Services
Sv: Web Services
En lösning skulle kunna vara att använda dig av WCF som kan agera både klient och server, och där du kan välja vilket transportprotokoll som du vill använda dig av, SOAP/TCP IP/MSMQ osv osv....
Sök mer information om WCF så hittar du säkert allt du behöver.
- M
(oj, såg att det var .NET 1.1 då fungerar inte WCF). Antingen så lägger du själva kommunikationen i ett separat projekt och bygger det i .NET 3.0 som du sedan anropar från ditt 1.1 projekt. Eller så får du lösa det med Remoting eller bygga en egen TCP/IP kommunikation mellan din klient och din server.