HelloGitHub icon indicating copy to clipboard operation
HelloGitHub copied to clipboard

AREG Framework

Open aregtech opened this issue 1 year ago • 2 comments

推荐项目

  • 项目地址: https://github.com/aregtech/areg-sdk

  • 类别: C++

  • 项目标题: Interface-centric ORPC (Object RPC) framework for embedded and desktop applications.

  • 项目描述: Traditionally, devices act as connected clients to stream data to the cloud or fog servers for further processing. As data is generated and collected at the edge of the network (mist network), it is logical to redefine the role of connected Things and enable network-accessible services (Public Services) on them, thereby extending the Cloud to the extreme edge. AREG (Automated Real-time Event Grid) is a communication engine to transmit data in IoT fog- and mist-network. It creates a grid of services where devices and software nodes operate like distributed servers and clients using both Client-Server and Publish-Subscribe models.

  • 亮点: Edge Computing, Embedded, Distributed, IPC, RPC, Event Driven, Asynchronous Programming, Concurrency, Parallel Computing

  • 示例代码:(可选) A Demo repository: https://github.com/aregtech/areg-sdk-demo An example codes:

Easy hierarchical modeling and object initialization for multithreading and multiprocessing. Here is an example for multithreading application initialization (simiar in IPC):

// Define the model and describe components
BEGIN_MODEL("ServiceModel")
    BEGIN_REGISTER_THREAD( "Thread1", NECommon::WATCHDOG_IGNORE )
        BEGIN_REGISTER_COMPONENT( "ServiceComponent", ServiceComponent )
            REGISTER_IMPLEMENT_SERVICE( NEHelloService::ServiceName, NEHelloService::InterfaceVersion )
        END_REGISTER_COMPONENT( "ServiceComponent" )
    END_REGISTER_THREAD( "Thread1" )

    BEGIN_REGISTER_THREAD( "Thread2", NECommon::WATCHDOG_IGNORE )
        BEGIN_REGISTER_COMPONENT( "ServiceClient", ClientComponent )
            REGISTER_DEPENDENCY( "ServiceComponent" )
        END_REGISTER_COMPONENT( "ServiceClient" )
    END_REGISTER_THREAD( "Thread2" )

END_MODEL("ServiceModel")

int main( void )
{
    constexpr char const model[]{ "ServiceModel" };
    
    Application::initApplication();   // initialize internals
    Application::loadModel(model);    // load model, initialize components
    Application::waitAppQuit();       // wait to receive quit signal
    Application::unloadModel(model);  // stop and unload components
    Application::releaseApplication();// release resources

    return 0;
}
  • 截图:(可选)gif/png/jpg AREG Engine

  • 后续更新计划: Planned major features are

  • Multichannel and multi-protocol communication;

  • Logging Service and log view tool;

  • GUI Tools

  • Internet category Service

  • Bridges for Java, C#, Python, JavaScript.

aregtech avatar Jun 16 '23 09:06 aregtech

Really useful.

Horsediedmanrun avatar Jun 18 '23 01:06 Horsediedmanrun

@Horsediedmanrun, thank you for opinion

aregtech avatar Jun 18 '23 08:06 aregtech