VAIL SDK
-
- Foren-Mitglied
- Beiträge: 360
- Registriert: 25. Aug 2007, 20:06
- Wohnort: Bochum,Germany
VAIL SDK
Hallo !
Hat sich schon jemand mit der Vail SDK beschäftigt!?
Ich versuche gerade einen Provider zu erstellen und gehe die Beispiel Anwendung Chat durch.
Alles nach Anweisung erstellt und kompiliert.Läuft ohne Probleme
Jedoch passiert da gar nichts.Host und Client Process laufen aber sons passiert nix. Keine Exception etc.
Also falls das jemand schon am laufen hat würde ich mich über Tipps freuen!
Gruß
Hat sich schon jemand mit der Vail SDK beschäftigt!?
Ich versuche gerade einen Provider zu erstellen und gehe die Beispiel Anwendung Chat durch.
Alles nach Anweisung erstellt und kompiliert.Läuft ohne Probleme
Jedoch passiert da gar nichts.Host und Client Process laufen aber sons passiert nix. Keine Exception etc.
Also falls das jemand schon am laufen hat würde ich mich über Tipps freuen!
Gruß
- Martin
- Moderator
- Beiträge: 9948
- Registriert: 11. Sep 2007, 10:51
- Wohnort: Im wilden Süden
Re: VAIL SDK
Laufen beide auf dem Server?
Ist der Clientconnect erfolgreich?
Eine Verbindung kommt im Provider erst nach dem ersten Senden von Daten zustande.
Gruß
Martin
Ist der Clientconnect erfolgreich?
Eine Verbindung kommt im Provider erst nach dem ersten Senden von Daten zustande.
Gruß
Martin
Essentials 2016 unter Windows Server 2022 auf HP Microserver Gen 8.
Entwickler von Lights-Out
Entwickler von Lights-Out
-
- Foren-Mitglied
- Beiträge: 360
- Registriert: 25. Aug 2007, 20:06
- Wohnort: Bochum,Germany
Re: VAIL SDK
Hallo Martin,
danke für die Antwort.
Es laufen beide auf dem Server. Bin das Beispiel jetzt nochmal durchgegangen.
Aber ohne Ergebnis.
Der Connect ist nicht erfolgreich. Der müsste eigentlich beim Button Connect passieren.
Was mir aufgefallen ist:
Im ChatObjectModel Datei ObjectModelImplementation.cs existiert im konstruktor folgendes:
Hier sollte, so wie ich das verstehe, die Verbindung stattfinden.
So passiert einfach nichts. Er laüft durch und beim m_connector ist dann die connected eigenschaft auf false. sollte aber auf true stehen!?
In der SDK steht jetzt zwar nichts von einer änderung. Aber im client wird der Host "chat" aufgerufen.
Hier steht aber als Provider ID "provider". Wenn man das jetzt auf "chat" ändert wird eine Exception geworfen.
Und zwar im Client:
System.InvalidOperationException wurde nicht behandelt.
Message=The InstanceContext provided to the ChannelFactory contains a UserObject that
does not implement the CallbackContractType 'ChatObjectModel.IProviderCallback'.
Source=System.ServiceModel
StackTrace:
at System.ServiceModel.DuplexChannelFactory`1.CreateChannel(InstanceContext callbackInstance, EndpointAddress address, Uri via)
at System.ServiceModel.DuplexChannelFactory`1.CreateChannel(EndpointAddress address, Uri via)
at System.ServiceModel.ChannelFactory`1.CreateChannel()
at Microsoft.WindowsServerSolutions.Common.ProviderFramework.ProviderRegistryClient.CreateWithCallback[T](ProviderInfo info, Object callback, NetworkCredential credential)
at Microsoft.WindowsServerSolutions.Common.ProviderFramework.internal.ConnectorInternals.ProviderConnectionFactory`1.CreateConnection(ProviderInfo provider, Object callback, NetworkCredential credential)
at Microsoft.WindowsServerSolutions.Common.ProviderFramework.internal.ConnectorInternals.AsyncConnector`1.Connect(ProviderConnectionInfo info)
at Microsoft.WindowsServerSolutions.Common.ProviderFramework.internal.ConnectorInternals.ConnectionCanceller`1.Connect(ProviderConnectionInfo info)
at Microsoft.WindowsServerSolutions.Common.ProviderFramework.internal.ConnectorInternals.InProcInstantiator`1.Connect(ProviderConnectionInfo info)
at Microsoft.WindowsServerSolutions.Common.ProviderFramework.internal.ConnectorInternals.ConnectionInternals`1.Connect(ProviderConnectionInfo info)
at Microsoft.WindowsServerSolutions.Common.ProviderFramework.ProviderConnector`1.DoConnection()
at Microsoft.WindowsServerSolutions.Common.ProviderFramework.ProviderConnector`1.Microsoft.WindowsServerSolutions.Common.ProviderFramework.internal.ConnectorInternals.IProviderQueryListener.HandleResult(ProviderInfo info)
at Microsoft.WindowsServerSolutions.Common.ProviderFramework.internal.ConnectorInternals.AsyncProviderQuery.HandleResult(ProviderInfo info)
at Microsoft.WindowsServerSolutions.Common.ProviderFramework.internal.ConnectorInternals.AsyncProviderQuerySender.DoQuery(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
at System.Threading.ThreadPoolWorkQueue.Dispatch()
at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()
InnerException:
Jetzt könnte man in WCF seine eigenen Endpunkte definieren etc.
Aber dann macht der Provider irgendwie keinen Sinn da ich dann ja meinen eigenen WCF Dienst schreiben kann.
Ich weiss jetzt nicht genau nach welchen Fehler ich hier genau suchen muss.
Wäre für Hilfe und Tipps dankbar!
danke für die Antwort.
Es laufen beide auf dem Server. Bin das Beispiel jetzt nochmal durchgegangen.
Aber ohne Ergebnis.
Der Connect ist nicht erfolgreich. Der müsste eigentlich beim Button Connect passieren.
Was mir aufgefallen ist:
Im ChatObjectModel Datei ObjectModelImplementation.cs existiert im konstruktor folgendes:
Code: Alles auswählen
m_connector = ConnectorFactory.GetConnector<IProvider>("provider", this);
m_connector.ConnectionOpened += m_connector_ConnectionOpened;
So passiert einfach nichts. Er laüft durch und beim m_connector ist dann die connected eigenschaft auf false. sollte aber auf true stehen!?
In der SDK steht jetzt zwar nichts von einer änderung. Aber im client wird der Host "chat" aufgerufen.
Hier steht aber als Provider ID "provider". Wenn man das jetzt auf "chat" ändert wird eine Exception geworfen.
Und zwar im Client:
System.InvalidOperationException wurde nicht behandelt.
Message=The InstanceContext provided to the ChannelFactory contains a UserObject that
does not implement the CallbackContractType 'ChatObjectModel.IProviderCallback'.
Source=System.ServiceModel
StackTrace:
at System.ServiceModel.DuplexChannelFactory`1.CreateChannel(InstanceContext callbackInstance, EndpointAddress address, Uri via)
at System.ServiceModel.DuplexChannelFactory`1.CreateChannel(EndpointAddress address, Uri via)
at System.ServiceModel.ChannelFactory`1.CreateChannel()
at Microsoft.WindowsServerSolutions.Common.ProviderFramework.ProviderRegistryClient.CreateWithCallback[T](ProviderInfo info, Object callback, NetworkCredential credential)
at Microsoft.WindowsServerSolutions.Common.ProviderFramework.internal.ConnectorInternals.ProviderConnectionFactory`1.CreateConnection(ProviderInfo provider, Object callback, NetworkCredential credential)
at Microsoft.WindowsServerSolutions.Common.ProviderFramework.internal.ConnectorInternals.AsyncConnector`1.Connect(ProviderConnectionInfo info)
at Microsoft.WindowsServerSolutions.Common.ProviderFramework.internal.ConnectorInternals.ConnectionCanceller`1.Connect(ProviderConnectionInfo info)
at Microsoft.WindowsServerSolutions.Common.ProviderFramework.internal.ConnectorInternals.InProcInstantiator`1.Connect(ProviderConnectionInfo info)
at Microsoft.WindowsServerSolutions.Common.ProviderFramework.internal.ConnectorInternals.ConnectionInternals`1.Connect(ProviderConnectionInfo info)
at Microsoft.WindowsServerSolutions.Common.ProviderFramework.ProviderConnector`1.DoConnection()
at Microsoft.WindowsServerSolutions.Common.ProviderFramework.ProviderConnector`1.Microsoft.WindowsServerSolutions.Common.ProviderFramework.internal.ConnectorInternals.IProviderQueryListener.HandleResult(ProviderInfo info)
at Microsoft.WindowsServerSolutions.Common.ProviderFramework.internal.ConnectorInternals.AsyncProviderQuery.HandleResult(ProviderInfo info)
at Microsoft.WindowsServerSolutions.Common.ProviderFramework.internal.ConnectorInternals.AsyncProviderQuerySender.DoQuery(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
at System.Threading.ThreadPoolWorkQueue.Dispatch()
at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()
InnerException:
Jetzt könnte man in WCF seine eigenen Endpunkte definieren etc.
Aber dann macht der Provider irgendwie keinen Sinn da ich dann ja meinen eigenen WCF Dienst schreiben kann.
Ich weiss jetzt nicht genau nach welchen Fehler ich hier genau suchen muss.
Wäre für Hilfe und Tipps dankbar!
- Martin
- Moderator
- Beiträge: 9948
- Registriert: 11. Sep 2007, 10:51
- Wohnort: Im wilden Süden
Re: VAIL SDK
Du musst im Client die Methode Connect() aufrufen. Hast du das implementiert?
Wenn der Connect erfolgreich war, wird der Event ausgelöst aus deine m_connector_ConnectionOpened() Methode aufgerufen.
Gruß
Martin
Wenn der Connect erfolgreich war, wird der Event ausgelöst aus deine m_connector_ConnectionOpened() Methode aufgerufen.
Gruß
Martin
Essentials 2016 unter Windows Server 2022 auf HP Microserver Gen 8.
Entwickler von Lights-Out
Entwickler von Lights-Out
-
- Foren-Mitglied
- Beiträge: 360
- Registriert: 25. Aug 2007, 20:06
- Wohnort: Bochum,Germany
Re: VAIL SDK
Hallo Martin,
ja das mache ich. Im Client wird der Aufruf gemacht wobei ein Name übergeben wird.
objModel.Connect(this.UserName.Text);
Dann passiert folgendes:
Das Programm springt in die ObjectModel.cs Klasse führt dort die Connect Procedur aus ( public void Connect(string userName) )
In dieser Procedur kommt dann der Backend Aufruf. ( m_backend.Connect(userName); )
Hier spring der auch erfolgreich in die ObjectModelImplementation.cs Klasse.
Und hier kommt jetzt der dritte Connect Aufruf ( m_connector.Connect(m_name); ) wobei der Connector ein ProviderConnector ist --> private ProviderConnector<IProvider> m_connector;
Wenn jetzt im Konstruktor der Klasse ObjectModelImplementation steht:
m_connector = ConnectorFactory.GetConnector<IProvider>("provider", this); ( orginal )
bekomme ich beim m_connector.Connect(m_name) ein false zurück und die Methode m_connector_ConnectionOpened() wird nicht aufgerufen
oder
ich versuche mit
m_connector = ConnectorFactory.GetConnector<IProvider>("chat", this);
dann bekomme ich die oben genannte Fehlermeldung beim Client und der springt auch nicht in die m_connector_ConnectionOpened() Methode rein.
Gruß
ja das mache ich. Im Client wird der Aufruf gemacht wobei ein Name übergeben wird.
objModel.Connect(this.UserName.Text);
Dann passiert folgendes:
Das Programm springt in die ObjectModel.cs Klasse führt dort die Connect Procedur aus ( public void Connect(string userName) )
In dieser Procedur kommt dann der Backend Aufruf. ( m_backend.Connect(userName); )
Hier spring der auch erfolgreich in die ObjectModelImplementation.cs Klasse.
Und hier kommt jetzt der dritte Connect Aufruf ( m_connector.Connect(m_name); ) wobei der Connector ein ProviderConnector ist --> private ProviderConnector<IProvider> m_connector;
Wenn jetzt im Konstruktor der Klasse ObjectModelImplementation steht:
m_connector = ConnectorFactory.GetConnector<IProvider>("provider", this); ( orginal )
bekomme ich beim m_connector.Connect(m_name) ein false zurück und die Methode m_connector_ConnectionOpened() wird nicht aufgerufen
oder
ich versuche mit
m_connector = ConnectorFactory.GetConnector<IProvider>("chat", this);
dann bekomme ich die oben genannte Fehlermeldung beim Client und der springt auch nicht in die m_connector_ConnectionOpened() Methode rein.
Gruß
- Martin
- Moderator
- Beiträge: 9948
- Registriert: 11. Sep 2007, 10:51
- Wohnort: Im wilden Süden
Re: VAIL SDK
Ändere mal
host.Open("provider");
Und am Client entsprechend
ConnectorFactory.GetConnector<IProvider>("provider", this);
Gruß
Martin
host.Open("provider");
Und am Client entsprechend
ConnectorFactory.GetConnector<IProvider>("provider", this);
Gruß
Martin
Essentials 2016 unter Windows Server 2022 auf HP Microserver Gen 8.
Entwickler von Lights-Out
Entwickler von Lights-Out
-
- Foren-Mitglied
- Beiträge: 360
- Registriert: 25. Aug 2007, 20:06
- Wohnort: Bochum,Germany
Re: VAIL SDK
Hallo Martin,
habe ich auch schon versucht. Einmal beide mit "provider" und einmal beide mit "chat".
Da bekomme ich immer:
The InstanceContext provided to the ChannelFactory contains a UserObject that
does not implement the CallbackContractType 'ChatObjectModel.IProviderCallback'.
Muss hier vielleicht irgendwo im Client WPF noch das Interface IProviderCallback eingebunden werden ?
Habe es zwar schon probiert, aber ohne Erfolg!
habe ich auch schon versucht. Einmal beide mit "provider" und einmal beide mit "chat".
Da bekomme ich immer:
The InstanceContext provided to the ChannelFactory contains a UserObject that
does not implement the CallbackContractType 'ChatObjectModel.IProviderCallback'.
Muss hier vielleicht irgendwo im Client WPF noch das Interface IProviderCallback eingebunden werden ?
Habe es zwar schon probiert, aber ohne Erfolg!
-
- Foren-Einsteiger
- Beiträge: 21
- Registriert: 26. Nov 2007, 18:59
- Kontaktdaten:
Re: VAIL SDK
hallo,
wenn du m_connector = ConnectorFactory.GetConnector<IProvider>("chat", this); verwendest muss du IProviderCallback in der klasse implementiert haben, da der 2. parameter das callbackobject sein sollte.
so sollte es funktionieren:
public class ObjectModelImplementation : IProviderCallback
{
public ObjectModelImplementation ()
{
InstanceContext context = new InstanceContext(this);
m_connector = ConnectorFactory.GetConnector<IProvider>("chat", context);
}
}
lg
wenn du m_connector = ConnectorFactory.GetConnector<IProvider>("chat", this); verwendest muss du IProviderCallback in der klasse implementiert haben, da der 2. parameter das callbackobject sein sollte.
so sollte es funktionieren:
public class ObjectModelImplementation : IProviderCallback
{
public ObjectModelImplementation ()
{
InstanceContext context = new InstanceContext(this);
m_connector = ConnectorFactory.GetConnector<IProvider>("chat", context);
}
}
lg
-
- Foren-Mitglied
- Beiträge: 360
- Registriert: 25. Aug 2007, 20:06
- Wohnort: Bochum,Germany
Re: VAIL SDK
Hi!
Vielen Dank für die Antwort. Leider ist der Fehler aber immer noch da.
Ich habe mal das komplette Chat Beispielprojekt hochgeladen c# .
Vielleicht kann das ja bei der Fehlersuche helfen, da ich hier leider nicht mehr weiss wo ich suchen soll!?
Gruß
Vielen Dank für die Antwort. Leider ist der Fehler aber immer noch da.
Ich habe mal das komplette Chat Beispielprojekt hochgeladen c# .
Vielleicht kann das ja bei der Fehlersuche helfen, da ich hier leider nicht mehr weiss wo ich suchen soll!?
Gruß
- Dateianhänge
-
- ChatObjectModel.zip
- ChatObjectModel
- (579.98 KiB) 197-mal heruntergeladen
-
- ChatClient.zip
- ChatClient
- (334.51 KiB) 195-mal heruntergeladen
-
- Foren-Einsteiger
- Beiträge: 21
- Registriert: 26. Nov 2007, 18:59
- Kontaktdaten:
Re: VAIL SDK
das problem liegt bei:
m_connector.Connect(m_name);
hier sollte der callback übergeben werden. du übergibst aber den namen.
da der callback schon vorher übergeben wurde, musst du hier nichts mehr übergeben.
lg
m_connector.Connect(m_name);
hier sollte der callback übergeben werden. du übergibst aber den namen.
da der callback schon vorher übergeben wurde, musst du hier nichts mehr übergeben.
lg
-
- Foren-Mitglied
- Beiträge: 360
- Registriert: 25. Aug 2007, 20:06
- Wohnort: Bochum,Germany
Re: VAIL SDK
Ja! Das war es !
Vielen Dank für eure Hilfe. Hätte das jetzt nicht so schnell gefunden.
Muss mich da noch etwas in WCF einlesen.
Vielen Dank für eure Hilfe. Hätte das jetzt nicht so schnell gefunden.
Muss mich da noch etwas in WCF einlesen.
-
- Beiträge: 1181
- Registriert: 6. Jan 2009, 19:42
Re: VAIL SDK
Wenn du eine gescheite Doku abseits des msdn gefunden hast, wäre ich über einen Hinweis dankbar.Muss mich da noch etwas in WCF einlesen.
WHS: ASRock NF6 G-DVI | AMD e4350 | 2 TB Samsung F4 + 2 x Samsung 1TB + 2x 1.5 TB + 0.5 TB (7,5 TB)| 1 GBit@ Home, 20/1 MBit @ www
-
- Foren-Mitglied
- Beiträge: 360
- Registriert: 25. Aug 2007, 20:06
- Wohnort: Bochum,Germany
Re: VAIL SDK
Ich habe mir 2 Bücher bestellt. Ansonsten habe ich mich am msdn orientiert.
-
- Foren-Mitglied
- Beiträge: 360
- Registriert: 25. Aug 2007, 20:06
- Wohnort: Bochum,Germany
Re: VAIL SDK
Eine Frage hätte ich noch!
Was ist eigentlich der Vorteil der Provider?
Ich sehe hier nicht so richtig den Unterschied zu einer "normalen" WCF Anwendung?
Gruß
Was ist eigentlich der Vorteil der Provider?
Ich sehe hier nicht so richtig den Unterschied zu einer "normalen" WCF Anwendung?
Gruß
- Martin
- Moderator
- Beiträge: 9948
- Registriert: 11. Sep 2007, 10:51
- Wohnort: Im wilden Süden
Re: VAIL SDK
@Mike: Juval Löwy: Programming WCF Services, O'Reilly
Der Vorteil der Provider soll die einfache Konfiguration sein (keine Bindings, keine Endpoints usw. zu definieren).
Der zweite Vorteil soll die einfache Wiederverbindung bzw. das Handling der Wiederverbindung sein (so lese ich das aus der SDK Doku).
Der dritte Vorteil ist das identische Programmiermodell, egal ob Serverseitig oder Clientseitig kommuniziert werden soll.
Gruß
Martin
Der Vorteil der Provider soll die einfache Konfiguration sein (keine Bindings, keine Endpoints usw. zu definieren).
Der zweite Vorteil soll die einfache Wiederverbindung bzw. das Handling der Wiederverbindung sein (so lese ich das aus der SDK Doku).
Der dritte Vorteil ist das identische Programmiermodell, egal ob Serverseitig oder Clientseitig kommuniziert werden soll.
Gruß
Martin
Essentials 2016 unter Windows Server 2022 auf HP Microserver Gen 8.
Entwickler von Lights-Out
Entwickler von Lights-Out
© Home Server Blog · Streamline theme by StudioPress ·