Cada equipo en su trabajo se enfrenta a la necesidad de introducir una nueva tecnología o lenguaje de programación en un proyecto. A veces, esta implementación tiene éxito y otras no. En este artículo, compartimos nuestras experiencias con C ++ / CLI.
Se espera tiempo soleado
Tarea: desarrollar un paquete de software para modelar diversos procesos que ocurren en las instalaciones en los sistemas de recolección, preparación y transporte de hidrocarburos. Los objetos de modelado pueden ser pozos (tanto de producción como de inyección), tuberías, instalaciones de tratamiento de petróleo, gas y agua. En promedio, cada campo se caracteriza por más de 100 instalaciones. Además, algunos objetos tienen una dimensión en profundidad o en longitud: varios kilómetros. El tiempo aceptable para calcular un modelo de un campo es del orden de varios minutos. En pocas palabras, debes imaginar el siguiente objeto:
En forma de tal modelo, y calcule sus características.
Desarrollos: métodos existentes, un proyecto existente con funcionalidad que cubre parcialmente los objetivos del proyecto.
: .NET/WPF, C++, , .
, , , , , , . , : C++, , :
;
.
, , .NET/WPF, .NET/C# c P/Invoke. P/Invoke ( ) – , , . . . :
C# , , . . , C# C++.
(, , , P/Invoke), : " ?".
.
P/Invoke, C++/CLI.
C++/CLI (C++ modified for Common Language Infrastructure) Microsoft Managed Extensions for C++. C++/CLI .NET, C++.
CLI Common Language Infrastructure – ( ), Microsoft ISO Ecma, , . . . C++/CLI :
C++/CLI, , ++. C++/CLI P/Invoke, , .
P/Invoke . C++/CLI :
public ref class DeviceBaseClr : public IDisposable, public Figures::Models::IItemBase
{
#pragma region
protected:
/// <summary>
/// C++ unmanaged
/// </summary>
DeviceBase* obj_;
#pragma endregion
#pragma region IItemBase
public:
virtual IState^ GetState(DateTime date);
virtual IState^ SetState(DateTime date, IState^ state);
#pragma endregion
#pragma region
public:
DeviceBaseClr(IStateFactory^ stateFactory);
virtual ~DeviceBaseClr();
protected:
!DeviceBaseClr();
#pragma endregion
};
} // Simtep::Diagrams
#endif // _DEVICEBASECLR_H_
, MVVM, :
, , .
-, C# (, , – C++/CLI ).
-, - , , ++.
:
:
C++ ( ), , CLI.
LINQ CLI, , , -, – .
«» .
, , , , .NET.
, , , CLI, - ?
, . .
, .
, . C++/CLI , .
:
C++/CLI – - . . . C++, , , C++ . , , , .
C# .
, , C++/CLI, . , , , , C# C++/CLI.
, , , , – . , . , :
, . :
CLI. . , ( ) , .
, . . .
.NET, .
managed unmanaged ( ).
, , ( CLI) . . , 70 .
:
;
;
;
;
.
:
CLI , , C++. ( ) – ++, .
RabbitMQ ZeroMQ, , , , , , – . , .
3- , - , :
, 3*. , , C#. , , , , .
3 C++ .
, , :
C++/CLI – , . , , – – , . . . , , , , . . !
- C++/CLI, .
,