Mengamati "kondisi cuaca" dalam proyek C ++ / CLI

Setiap tim dalam pekerjaannya dihadapkan pada kebutuhan untuk memperkenalkan teknologi atau bahasa pemrograman baru ke dalam sebuah proyek. Terkadang implementasi ini berhasil dan terkadang tidak. Pada artikel ini, kami membagikan pengalaman kami dengan C ++ / CLI.





Diperkirakan cuaca cerah

Tugas: mengembangkan paket perangkat lunak untuk memodelkan berbagai proses yang terjadi di fasilitas dalam sistem pengumpulan, persiapan, dan transportasi hidrokarbon. Objek pemodelan dapat berupa sumur (baik produksi maupun injeksi), jaringan pipa, fasilitas pengolahan minyak, gas dan air. Rata-rata, setiap bidang memiliki lebih dari 100 fasilitas. Selain itu, beberapa benda memiliki dimensi baik dalam maupun panjang - beberapa kilometer. Waktu yang dapat diterima untuk menghitung model satu bidang berada di urutan beberapa menit. Sederhananya, Anda perlu membayangkan objek berikut:





Dalam bentuk model seperti itu - dan menghitung karakteristiknya.





Perkembangan: metode yang sudah ada, proyek yang sudah ada dengan fungsionalitas yang sebagian mencakup tujuan proyek.





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