2010-04-13 12 views
0

longue histoire, longue:
J'ajoute une interface web (ASPX.NET: VB) à un système d'acquisition de données mis au point avec LabVIEW qui produit des fichiers de données brutes. Ces fichiers de données brutes sont la représentation binaire d'un cluster LabVIEW (essentiellement une structure). LabVIEW fournit des fonctions pour instancier une classe ou une structure ou appeler une méthode définie dans un fichier DLL .NET.Structure Copier vers un autre programme

Je prévois de créer un fichier DLL contenant une définition de structure et une classe avec des méthodes pour transférer la structure. Lorsque la page Web demande des données, elle appelle un exécutable LabVIEW avec un paramètre de nom de fichier. Le code LabVIEW instancie la structure, remplit la structure à partir du fichier de données, puis appelle la méthode pour transférer les données sur le site Web.

Histoire longue, courte: Comment recommandez-vous de transférer (copier) une instance d'une structure d'un programme .NET vers le programme VB.NET qui l'a exécutée?

idées considérées: prises, fichiers temporaires, fichiers XML, sortie de la console, fichiers de configuration, services Web, CSV, un certain type de sérialisation, mémoire partagée

Répondre

2

XML sérialisé serait mon premier coup initial à elle. (Espace de noms System.Xml.Serialization). Il est spécifique à Microsoft mais il est "assez" standard que vous puissiez probablement obtenir un autre programme avec une autre technologie pour le lire avec un minimum de finagling, comparé aux anciennes technologies de sérialisation d'objets MS dont j'ai entendu parler.

+0

Quel mécanisme fait transférer les données XML sérialisés entre les programmes? – Steven

+0

J'ai eu beaucoup de chance en utilisant HTTP pour transférer un objet REST complètement. Cependant WCF dans .NET 3.0 & 3.5 prend beaucoup de pliage et de rupture afin que vous puissiez vous retrouver avec un service Web qui prend n'importe quel type de téléchargement HTTP. (Pour accepter les POST de type standard bog, votre méthode Web doit prendre un paramètre Stream qui n'est pas intuitif.) Vous pouvez également utiliser le modèle de services Web pris en charge par WCF. – Broam

+0

SerializedXML devrait être un transporteur parfait pour les données. Je prévois de transférer les données en demandant au serveur Web d'appeler le programme client à l'aide de Process.Start() et de sortir le XML sérialisé via la console que le serveur Web lirait, désérialiserait puis gérerait. http://stackoverflow.com/questions/2638686/send-a-string-from-child-application-to-parent – Steven

0

Je voudrais construire le code LabVIEW (file -> (XML) -string) dans une DLL que vous pouvez appeler directement et retournerait la chaîne sérialisée.

Ou vous pouvez lire le fichier de données «tel quel», les structures LabVIEW ne sont pas si difficiles. et ils sont assez bien documentés:

Questions connexes