Du menar att webservicen skulle kunna gå av sig själv utan win form applikationen då?
Om vi för enkelhetens skull delar upp din winapplikation i 3 lager.
1. Presentationslagret
2. Affärslogiklagret
3. Datalagert.
Om du delar upp din applikation så här och verkligen inte har någon logik i presentationslagret så skall du (iprincip) bara kunna lyfta bort WinFormen och lägga ditt en WebForm istället, eller för den delen en WebService. Så länge du bara presenterar data i ditt presentationslager så spelar det ingen roll vad lagret är skrivet i, det är ju bara anrop ner till ditt affärslogik lager och där gör du allt.
Säg så här. Du vill kunna hämta en kund och presenterar hans uppgifter i din WinApplikation.
Det du gör du är att du i ditt affärslogik lager skapar en metod som tar emot typ ett Personnummer och sedan returner ett kundobjekt (eller ett kundentity) tillbaka.
public Customer GetCustomer(decimal number){}
om du sedan anropar denna kod från en winapplikation eller en webform eller en webservice är helt ointressant och inget som ditt affärslogik skall verken brysig om eller ens veta.
Så om du gör så så behövs inte WinApplickation vara igång på servern eftersom du då bara lägger referenser till ditt affärslogiks dller i från din webservice.
Grejen är den att man ska kunna göra inställningar i win form applikationen som ska beröra vad som går att få av webservicen. (Annars hade det inte varit några konstigheter, allt kunde ha legat i webservicen)
Nu är du inne på något helt annat, det du vill ha här är någon typ av säkerhet eller kompetens kontrol. Alltså typ om jag är inloggad via min WinApplication så skall jag få göra detta och detta, medans om jag kommer från webservicen så skall jag bara få göra detta och detta.
Den enklaste lösningen är helt enkelt att du inte visar utställer de metoder i din webservice som man inte får använda från webservicen. Om vi går tillbaka till vår GetCustomer() metod så säger vi att det får man bara göra från winapplikationen. Så fall har du en knapp på din WinForm där det står 'Hämta kunduppgifter' och när man trycker på knappen så kallar du på metoden. Din Webservice fungerar på liknande sätt, om du vill att man skall kunna hämta kunduppgifter via en webservice så måste du utställa den funktionallitetn i din webservice, så om du inte vill att man skall kunna göra det, så skriver du helt enkelt inte någon method i din webservice som kallar på metoden GetCustomer() i affärslogikslagret.
Det gör då att du inte behöver ställa in i din WinApplikation vad som får och inte får hämtas från webservicen, eftersom du redan i koden till din webservice har bestämt vad som får göras och inte göras.
- M