Как передать сообщение структуры (или класса) назад и вперед между службой 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#.