VAIL SDK

Eigener Bereich für die Entwickler unter uns! Add-Ins, aber auch andere Programme.
Antworten
Pseudocode
Foren-Mitglied
Beiträge: 360
Registriert: 25. Aug 2007, 20:06
Wohnort: Bochum,Germany

VAIL SDK

Beitrag von Pseudocode »

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ß
Benutzeravatar
Martin
Moderator
Beiträge: 9948
Registriert: 11. Sep 2007, 10:51
Wohnort: Im wilden Süden

Re: VAIL SDK

Beitrag von Martin »

Laufen beide auf dem Server?
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
Pseudocode
Foren-Mitglied
Beiträge: 360
Registriert: 25. Aug 2007, 20:06
Wohnort: Bochum,Germany

Re: VAIL SDK

Beitrag von Pseudocode »

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:

Code: Alles auswählen

m_connector = ConnectorFactory.GetConnector<IProvider>("provider", this);
m_connector.ConnectionOpened += m_connector_ConnectionOpened;
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!
Benutzeravatar
Martin
Moderator
Beiträge: 9948
Registriert: 11. Sep 2007, 10:51
Wohnort: Im wilden Süden

Re: VAIL SDK

Beitrag von Martin »

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
Essentials 2016 unter Windows Server 2022 auf HP Microserver Gen 8.
Entwickler von Lights-Out
Pseudocode
Foren-Mitglied
Beiträge: 360
Registriert: 25. Aug 2007, 20:06
Wohnort: Bochum,Germany

Re: VAIL SDK

Beitrag von Pseudocode »

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ß
Benutzeravatar
Martin
Moderator
Beiträge: 9948
Registriert: 11. Sep 2007, 10:51
Wohnort: Im wilden Süden

Re: VAIL SDK

Beitrag von Martin »

Ändere mal
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
Pseudocode
Foren-Mitglied
Beiträge: 360
Registriert: 25. Aug 2007, 20:06
Wohnort: Bochum,Germany

Re: VAIL SDK

Beitrag von Pseudocode »

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!
cyberwaelder
Foren-Einsteiger
Beiträge: 21
Registriert: 26. Nov 2007, 18:59
Kontaktdaten:

Re: VAIL SDK

Beitrag von cyberwaelder »

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
Pseudocode
Foren-Mitglied
Beiträge: 360
Registriert: 25. Aug 2007, 20:06
Wohnort: Bochum,Germany

Re: VAIL SDK

Beitrag von Pseudocode »

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ß
Dateianhänge
ChatObjectModel.zip
ChatObjectModel
(579.98 KiB) 197-mal heruntergeladen
ChatClient.zip
ChatClient
(334.51 KiB) 195-mal heruntergeladen
cyberwaelder
Foren-Einsteiger
Beiträge: 21
Registriert: 26. Nov 2007, 18:59
Kontaktdaten:

Re: VAIL SDK

Beitrag von cyberwaelder »

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
Pseudocode
Foren-Mitglied
Beiträge: 360
Registriert: 25. Aug 2007, 20:06
Wohnort: Bochum,Germany

Re: VAIL SDK

Beitrag von Pseudocode »

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.
Mike Lowrey
Beiträge: 1181
Registriert: 6. Jan 2009, 19:42

Re: VAIL SDK

Beitrag von Mike Lowrey »

Muss mich da noch etwas in WCF einlesen.
Wenn du eine gescheite Doku abseits des msdn gefunden hast, wäre ich über einen Hinweis dankbar.
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
Pseudocode
Foren-Mitglied
Beiträge: 360
Registriert: 25. Aug 2007, 20:06
Wohnort: Bochum,Germany

Re: VAIL SDK

Beitrag von Pseudocode »

Ich habe mir 2 Bücher bestellt. Ansonsten habe ich mich am msdn orientiert.
Pseudocode
Foren-Mitglied
Beiträge: 360
Registriert: 25. Aug 2007, 20:06
Wohnort: Bochum,Germany

Re: VAIL SDK

Beitrag von Pseudocode »

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ß
Benutzeravatar
Martin
Moderator
Beiträge: 9948
Registriert: 11. Sep 2007, 10:51
Wohnort: Im wilden Süden

Re: VAIL SDK

Beitrag von Martin »

@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
Essentials 2016 unter Windows Server 2022 auf HP Microserver Gen 8.
Entwickler von Lights-Out
Antworten