Silverlight 4: Wie WCF-Service-DLL benutzen?
-
Ich habe einen einfachen WCF-Service erstellt. Das Resultat, eine DLL, würde ich nun gern aus einem Silverlight 4-Projekt heraus benutzen. Leider weiß ich nicht wie. Die MSDS-online-Hilfe und die Google-Suche haben keine wirklich brauchbaren Hinweise oder Hilfestellungen gegeben.
Vielen Dank im Voraus!
-
Hmm,
also du machst dir ein Silverlight-Projekt, dann wird auch eine Webprojekt mit erstellt. Dem Webprojekt fügst du ein neues Element hinzu "Silverlight-aktivierter WCF-Dienst".
dann bekommst du sowas:
using System; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.ServiceModel.Activation; namespace wcftest.Web { [ServiceContract(Namespace = "")] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] public class Service1 { [OperationContract] public void DoWork() { // Hier die Vorgangsimplementierung einfügen. return; } // Hier weitere Vorgänge hinzufügen und mit [OperationContract] kennzeichnen. } }
Nun könntest du es folgendermaßen testweise ändern:
using System; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.ServiceModel.Activation; namespace wcftest.Web { [ServiceContract(Namespace = "")] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] public class Service1 { [OperationContract] public string DoWork() { // Hier die Vorgangsimplementierung einfügen. return "hello world"; } // Hier weitere Vorgänge hinzufügen und mit [OperationContract] kennzeichnen. } }
Nun rechtsklick auf deinen Silverlight Projektordner, Dienstverweis hinzu fügen.
Dann ermitteln und den Dienst hinzu fügen.
Meiner heißt in diesem Fall Service1.
Dann kannst du z.B. in der Codebehind der MainPage folgendes Schreiben:using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using wcftest.ServiceReference1; namespace wcftest { public partial class MainPage : UserControl { ServiceReference1.Service1Client client = new Service1Client(); TextBlock tb = new TextBlock(); public MainPage() { InitializeComponent(); LayoutRoot.Children.Add(tb); client.DoWorkAsync(); client.DoWorkCompleted += new EventHandler<DoWorkCompletedEventArgs>(client_DoWorkCompleted); } void client_DoWorkCompleted(object sender, DoWorkCompletedEventArgs e) { tb.Text = e.Result; } } }
Resultat sollte eine Textbox sein, auf der Hello World steht.
Viel Spaß
-
Und was mache ich mit meiner DLL?
-
Den Code übernehmen nach da?
WCF ist ja ein Sammelsorium an Diensten. WebDienste(z.b.SOAP), Windows-Dienste etc,
Ich denke Du hast einen Windowsdienst genommen und der müsste
installiert/registriert werden am System. Da solltest zu mal mehr zum
Stichwort "Verteilte Anwendungen" lesen.Für Silverlight nimmt man aber eher Webdienste. Silverlight ist für das
Web ausgelegt und ist rein Clientseitig.Was hast du denn vor?