Observando as "condições climáticas" em um projeto C ++ / CLI

Cada equipe em seu trabalho se depara com a necessidade de introduzir uma nova tecnologia ou linguagem de programação em um projeto. Às vezes, essa implementação é bem-sucedida e às vezes não. Neste artigo, compartilhamos nossas experiências com C ++ / CLI.





Previsão de tempo ensolarado

Tarefa: desenvolver um pacote de software para modelagem de diversos processos que ocorrem em instalações nos sistemas de coleta, preparação e transporte de hidrocarbonetos. Os objetos de modelagem podem ser poços (tanto de produção quanto de injeção), dutos, instalações de tratamento de óleo, gás e água. Em média, cada campo é caracterizado por mais de 100 instalações. Além disso, alguns objetos têm uma dimensão em profundidade ou comprimento - vários quilômetros. O tempo aceitável para calcular um modelo de um campo é da ordem de vários minutos. Para simplificar, você precisa imaginar o seguinte objeto:





Na forma de tal modelo - e calcular suas características.





Desenvolvimentos: métodos existentes, um projeto existente com funcionalidade que cobre parcialmente os objetivos do projeto.





: .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, .









,








All Articles