Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Artiklar / Titel på artikeln

.NET 3.0 en liten översikt - del 3

Postad 2006-11-23 av Simon Dahlbacka i sektionen ASP.NET, C#, Okategoriserat med 1 Kommentarer | Läst av: 5526, Betyg: 90%

Förord

Vi fortsätter att utforska .NET 3.0 frameworket med genom en fallstudie på en chatt applikation. I denna artikel koncentrerar vi oss på klienten. Vi gör en WinForms klient, i senare artiklar återkommer vi med en WPF baserad klient.
Innehåll
  » Chatt klient 1 – WinForms
  » Ansluta till servicen
  » Konfiguration via app.config
  » Programmatisk konfiguration
  » CallbackBehavior
  » Sammanfattning
Relaterade artiklar
  » .NET 3.0 en liten översikt - del 1
  » .NET 3.0 en liten översikt - del 2
  » .NET 3.0 en liten översikt - del 4 (WPF)
  » .NET 3.0 en liten översikt - del 5 (WPF)
  » .NET 3.0 en liten översikt - del 6 (WPF) - sista delen
I del 1 av artikelserien började vi med vårt chatt system och vi defineierade WCF gränssnittet för vår chatt service. I del två tittade vi på hur man kan implementera server funtionaliteten för chatten. I denna del är det följdaktligen dags för klienten.


Chatt klient 1 – WinForms

Men va nu då, WinForms är ju inte 3.0 utan 2.0 tänker du kanske. Det stämmer, och i senare artiklar kommer det en WPF klient, men eftersom WPF är stort så gör vi först en WinForms klient som enbart fokuserar på WCF delarna. Behöver du lära dej WinForms så är inte detta rätt artikel.


Ansluta till servicen

När vi vill ansluta till en service kan vi göra på ett par olika sätt.

  • Generera en proxy med hjälp av svcutil.exe
  • Generera en proxy genom ”Add service reference..” i visual studio*
  • Genom att använda (Dual)ChannelFactory


*Detta alternativ finns enbart ifall du har installerat Orcas community technical preview:en, och under ytan fungerar detta med största sannolikhet på samma sätt som alternativ ett

I detta fall använder vi oss av det tredje alternativet. För att konfigurera adressen och bindningen kan vi antingen använda oss av app.config som vi gjorde i servern, eller så kan vi åstadkomma samma sak programmatiskt. Vi ska se på båda varianterna.


Konfiguration via app.config






binding="netNamedPipeBinding" address="net.pipe://localhost/Chat"/>





Eftersom vi kör testar på samma maskin väljer vi att använda oss av named pipes, dual http bindingen finns också med kommenterad.

I koden använder vi oss sen av DualChannelFactory som följande:

DuplexChannelFactory m_factory = new DuplexChannelFactory(new InstanceContext(this), "ChatServer”);
IChat m_server = m_factory.CreateChannel(address);



Programmatisk konfiguration

Om vi vill använda oss av programmatisk konfiguration (t.ex. ifall vi vill låta användaren skriva in vilken server att ansluta till) så gör vi på följande sätt

NetNamedPipeBinding binding = new NetNamedPipeBinding();
EndpointAddress address = new EndpointAddress("net.pipe://localhost/Chat");
DuplexChannelFactory m_factory = new DuplexChannelFactory(new InstanceContext(this), binding);

IChat m_server = m_factory.CreateChannel(address);


För att få händelserna, dvs notifikationer från server till klient, att fungera så implementerar vi händelse gränssnittet i vår klass.


#region IChatEvents Members

public void MessageReceived(LemonDesign.Chat.Contract.Message message) {
if (InvokeRequired) {
txtOutput.Invoke((Action)MessageReceived, message);
} else {
txtOutput.Text = string.Format("{0}({1}): {2}{3}", message.Sender,
message.Timestamp.ToShortTimeString(), message.Content, Environment.NewLine) + txtOutput.Text;
}
}

public void ServerGoingDown() {
MessageBox.Show("Server going down");
}

#endregion



CallbackBehavior

En viktig grej att komma ihåg är att också komma ihåg att dekorera klassen med CallbackBehavior attributet, för att indikera att "re-entranta" anrop är är tillåtna och att vi inte vill att WCF synkroniserar anropet till UI tråden. (Detta för att vi i annat fall förr eller senare kommer att råka ut för deadlock.)


/// The callback behavior thing is important, otherwise we'll
/// end up with deadlock sooner or later

[CallbackBehavior(ConcurrencyMode = ConcurrencyMode.Reentrant, UseSynchronizationContext = false)]


Sammanfattning

Vi har nu skapat ett service gränssnitt och server, samt en WinForms klient för att komma igång. I nästa artikel börjar vi skapa en WPF klient.

En bild på testuppsättningen


Som vanligt, frågor och kommentarer mottages tacksamt!
Upp

1 Kommentarer


  1. Jonas Sevelin
    26 nov 2006

    Mer sånt tack

Skriv en kommentar på artikeln

Ditt betyg på artikeln



Kommentar:





Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 153
27 952
271 704
1 126
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies