FIX протоколен двигател за Delphi?

Може ли някой да препоръча FIX Engine (търговски или с отворен код) за използване с Delphi?

Възможно ли е да се използва QuickFIX с Delphi?


person hohoho    schedule 26.07.2011    source източник
comment
Според страницата на проекта на QuickFix: API са налични за C++, .NET, Python и Ruby. От този списък C++ API са тези, които най-вероятно ще бъдат полезни. Разследвахте ли?   -  person Cosmin Prund    schedule 26.07.2011
comment
@Cosmin, C++ API използва класове и пространства от имена, които не са тривиални за импортиране в среда, различна от C++. (Те също не са тривиални за импортиране в C++ среда, ако C++ средата не е идентична със средата за разработка на DLL.)   -  person Rob Kennedy    schedule 26.07.2011


Отговори (4)


Разгледайте B2BITS FIX антена. Има два възможни варианта:

  • FIX Antenna C++ има ANSI C интерфейс, който може да се използва в Delphi (има пример в пакета)

http://www.b2bits.com/trading_solutions/fix_engines/fix_engine_cpp.html

  • FIX Antenna .NET може да се използва в Delphi .NET (отново има пример в пакета; също ръководството на програмиста съдържа Delphi.NET примери)

http://www.b2bits.com/trading_solutions/fix_engines/fix_enginenet.html

Чувствайте се свободни да се свържете директно с мен, ако имате нужда от повече подробности.

person Alik Rivkind    schedule 12.01.2012

QuickFix е проект на C++.

Както Python, така и Ruby използват SWIG, за да изложат C++ класовете като естествени класове на Python и Ruby.

.NET обвивката звучи като смесица от C++ и C# код.

Не е възможно да импортирате C++ класове директно в Delphi. Ще трябва да използвате „плоско API“ преобразуване, излагайки всички C++ методи като обикновени C декларации, за да импортирате външни структури и функции в Delphi единица.

Доколкото ми е известно, няма наличен такъв „плосък API“ на QuickFIX и няма SWIG версия, която да може да генерира Delphi код. Ще трябва да напишете своя собствена обвивка на C++ или може би да напишете своя собствена реализация на FIX в Delphi.

Единствената FIX библиотека, която знам за Delphi, е тази от http://www.b2bits.com - тя съществуваше преди няколко години, но не съм сигурен, че все още се продава/поддържа - изглежда, че поддържат само DotNet версия. Струва си да ги попитате за цена и наличност във всички случаи.

person Arnaud Bouchez    schedule 26.07.2011

Един от начините за интегриране на протокола с Delphi би бил изграждането на .Net или Java мост, например:

  • използвайте внедряването на .Net C#, за да създадете малко приложение за комуникация със страната FIX
  • след това изложете методите (и може би дори обектите) на това .Net приложение през SOAP уеб услуги
  • използвайте генератора на клиентски код на уеб услуга на Delphi, за да импортирате SOAP WSDL
  • достъп до уеб услугата от страна на Delphi
person mjn    schedule 27.07.2011

Това вероятно е по-скоро хак, отколкото нещо друго, но вие можете да използвате свързванията на Python QuickFIX в Delphi, чрез python4delphi. Това обаче са много слоеве (Delphi към Python към C++).

Python е лесен за използване и научаване език и е лесно да се извикват и създават обекти на Python (или собствени C обвивки, които се представят за обекти на Python) и да ги извиквате директно от API на Python4Delphi.

Като изключим това, може да е много малко работа за вас да създадете процедурен (плосък) API, както каза ABouchez. Вместо да пиша милион функции, бих написал само тези, от които имах нужда, и след това бих внедрил тези прости функции във VC++ DLL:

   QuickFixInit;
   QuickFixCleanup;
   handle := QuickFixLoadFile(filename)
   QuickFixSaveFile(handle)
   handle2 := QuickFixGetObjectHandle(handle,index,...); 
   QuickFixModifyObjectProperty(handle2, propertyname, propertyvalue );
   QuickFixExecuteSomeAction( handle2, actionname, param1,param2,param3 );

Горните са само за да ви дадат вкуса. Не знам нищо за вътрешния API, но това, което ви показвам по-горе, е, че не е необходимо да се съобразявате на 100% с API, за да напишете обвивка. Вероятно бихте могли (ако знаете C/C++) да напишете функционална обвивка, която прави това, от което се нуждаете, и да я експортирате, да я свържете в DLL и след това да импортирате QuickFix.dll в Python с много малко (2-4 часа работа на експерт време) работят, ако познавате Visual C++ достатъчно добре, за да напишете няколко прости функции в стил C (не OOP), които инстанцират C++ класове и извикват C++ методи.

Може да е възможно да се изложат C++ API на Delphi чрез пакет C++Builder (BPL), съдържащ QuickFIx, но (a) ще са необходими някои модификации на източника и (b) C++ кодът в QuickFix или неговите зависимости може да не се изгражда в C++Builder без значителни модификации.

person Warren P    schedule 27.07.2011