Как передать сообщение структуры (или класса) назад и вперед между службой C# и отдельным приложением VB 6?

Мне нужно передать данные между сервисом a C# и работающим приложением vb 6, учитывая использование Windows Messaging. Как передать данные между службой C# и запущенным приложением vb 6? Ниже приведен сокращенный образец данных, которые я передаю взад и вперед:

namespace MainSection
{
    public struct Info
    {

    private int _Id;
    private string _TypeCode;
    private float _Calc;
    private DateTime _ProcessDate;
    private bool _ProcessFlag;

    public int Id
    {
        get { return _Id; }
        set { _Id = value; }
    }

    public string TypeCode
    {
        get { return _TypeCode; }
        set { _TypeCode = value; }
    }

    public float Calc
    {
        get { return _Calc; }
        set { _Calc = value; }
    }

    public DateTime ProcessDate
    {
        get { return _ProcessDate}
        set { _ProcessDate = value; }
    }

    public bool ProcessFlag
    {
        get { return _ProcessFlag}
        set { _ProcessFlag = value; }
    }
   }
}

3 ответа

WCF - это рекомендуемая в настоящее время технология Microsoft для создания приложений, требующих межплатформенного взаимодействия. Существует привязка MSMQ (я полагаю, это то, что вы называете "Windows Messaging"), которая позволит вам отправлять и получать сообщения в паре очередей MSMQ. Классы MSMQ также представлены в виде COM-объектов, поэтому приложение VB6 также сможет читать и писать из очередей. Вам нужно было бы пометить ваши объекты передачи данных с правильными атрибутами DataContract в.NET, и вы даже можете избежать представления ваших объектов.NET как объектов COM и избежать повторения.

Вы можете написать обертку вокруг службы C# на любом языке.NET, а затем представить обертку как объект COM. Затем он может быть использован из приложения VB6. Сделайте так, чтобы служба C# размещала службу WCF, затем обертка использовала "Добавить ссылку на службу" для доступа к ней как к клиенту.

Я согласен с подходом Джона Сондерса о предоставлении кода C# через COM. Я должен также добавить, что обратное также работает, и может быть более естественным, если вы привыкли к VB6. COM-компонент VB6 легко потребляется кодом C#.

Другие вопросы по тегам