[C#] WCF Service toevoegen aan al bestaand project

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb nu een windows form application die ook deels dienst zou moeten doen als server. Daarvoor heb ik data die ik beschikbaar zou willen stellen via webservices.
Om dat te doen heb ik aan het project via "Add" > "New item" een "WCF Service" toegevoegd. Deze noemt nu gewoon Service1.

In Service1 staan alle annotaties zoals [ServiceContract] en [OperationContract] boven respectievelijk de class en de methodes.

In app.config is het volgende bijgekomen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    <services>
      <service name="Proxy.Service1">
        <endpoint address="" binding="wsHttpBinding" contract="Proxy.IService1">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8732/Design_Time_Addresses/Proxy/Service1/" />
          </baseAddresses>
        </host>
      </service>
    </services>
  </system.serviceModel>


Als ik nu het project laat draaien verwacht ik dat de webservice online komt op http://localhost:8732/Design_Time_Addresses/Proxy/Service1/ maar dit is nu niet het geval.
Ook krijg ik nergens geen errors of warnings.
Ik heb zitten zoeken op google maar kon niet direct een oplossing vinden. Daarom stel ik mijn vraag dus hier. Wat moet je nog meer doen om de webservice te laten werken? Alvast bedankt voor de antwoorden!

Acties:
  • 0 Henk 'm!

Verwijderd

de localhost:8732 is de plek waar je dev-webserver op draait, deze kan elke keer verschillen tenzij je hem vast zet.

Wat ik meestal doe is de webservice in IIS zelf neerzetten en dan met VS de directory openen cia local IIS. Deze manier kun je alsnog debuggen en hoef je je minder zorgen te maken over andere omgevingen.

Misschien dat dat helpt?

Acties:
  • 0 Henk 'm!

  • D-Raven
  • Registratie: November 2001
  • Laatst online: 10-09 20:32
Als je hem in een Winforms app gaat draaien moet je hem natuurlijk ook zelf hosten. Je hebt de service aan je project toegevoegd, dus de service definitie is er, maar je host nog niks.

Het is geen magisch ding wat ineens een webservice voor jou start. Je moet altijd nog ergens in je winforms app een ServiceHost starten met daarin je service.

Acties:
  • 0 Henk 'm!

  • lier
  • Registratie: Januari 2004
  • Laatst online: 20:23

lier

MikroTik nerd

Volgens mij kan je ook meerdere opstartprojecten definiëren in een solution.
Tevens kan je de webservice binnen je winforrms app hosten, dat is misschien ook nog een optie (hoe lelijk ook :P ).

Eerst het probleem, dan de oplossing


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Een forms application was eigelijk niet echt het juiste woord. Het is eigelijk een gewone applicatie zonder form die later nog een windows service moet worden. Ik maak er nu nog geen service van om makkelijker te kunnen debuggen.
De applicatie voert dus dingen op de achtergrond uit op een server en blijft dus draaien. De bedoeling is via een externe beheerderstool het zaakje op afstand te beheren. Ik had gedacht dat ik makkelijk data over en weer ging kunnen pompen via een webservice maar dat is blijkbaar (volgens de poster boven mij) niet zo proper.
Iemand dan een beter idee?
Door mijn webservice nu te hosten als Servicehost met ServiceHost serviceHost = new ServiceHost(typeof(Webservice)); is mijn webservice nog steeds niet beschikbaar.

Acties:
  • 0 Henk 'm!

  • D-Raven
  • Registratie: November 2001
  • Laatst online: 10-09 20:32
Als je hem binnen een windows service wilt hosten dan moet je wel zorgen dat je Servicehost op het juiste moment gestart wordt en dergelijke.
Het Topshelf project is een ideaal OpenSource project om dit mee te doen.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dan toch maar via tcp sockets werken best. Dit zal eenvoudiger zijn. Dacht nogtands dat het met webservices makkelijk moest gaan.

Acties:
  • 0 Henk 'm!

  • D-Raven
  • Registratie: November 2001
  • Laatst online: 10-09 20:32
Verwijderd schreef op woensdag 13 april 2011 @ 21:37:
Dan toch maar via tcp sockets werken best. Dit zal eenvoudiger zijn. Dacht nogtands dat het met webservices makkelijk moest gaan.
WCF kan je ook prima via TCP exposen. In jou situatie zou dit ook prima werken, je moet alleen even googlen naar de basic WCF dingen van hoe je die host in je winforms applicatie.

Sterker nog, ik denk dat je beter af bent om WCF te gebruiken dan zelf te gaan zitten klooien met tcp sockets, er zijn zoveel dingen die daarmee fout kan doen. Helemaal gezien hoe eenvoudig het is om WCF te gebruiken weegt het er niet tegenop om zelf een implementatie met TCP sockets te bouwen.

my 2 cents

Acties:
  • 0 Henk 'm!

  • SiErRa
  • Registratie: Februari 2000
  • Laatst online: 16:38
Misschien is dit wat: http://msdn.microsoft.com/en-us/library/ms731758.aspx

Maar als je serieus webservices zou willen draaien, zou ik toch IIS aanraden.
Pagina: 1