Edge.js enables in-process interoperability between Node.js and .NET, allowing you to call .NET from Node.js and vice versa.
Edge.js is an open-source library that enables in-process interoperability between Node.js and .NET. It allows developers to call .NET code from Node.js and Node.js code from .NET, facilitating integration between the two ecosystems without requiring separate processes or IPC mechanisms. It solves the problem of combining the strengths of both platforms, such as using .NET libraries in Node.js applications or leveraging Node.js modules in .NET apps.
Developers working in mixed Node.js and .NET environments, such as teams migrating between stacks, integrating legacy .NET systems with Node.js microservices, or building applications that require libraries from both ecosystems.
Edge.js provides a unique, high-performance bridge that runs .NET and Node.js in the same process, avoiding the overhead of inter-process communication. It supports multiple .NET languages and platforms, making it a versatile tool for polyglot programming and system integration.
Run .NET and Node.js code in-process on Windows, MacOS, and Linux
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Enables direct calling between Node.js and .NET within the same process, eliminating serialization and IPC overhead, as shown in the hello world examples for both directions.
Allows scripting of C#, F#, Python, PowerShell, Lisp, and T-SQL from Node.js, leveraging the CLR ecosystem for diverse use cases like database access or CPU-intensive tasks.
Works on Windows, macOS, and Linux with .NET Framework, Mono, or .NET Core, demonstrated by setup instructions for each OS and Docker support.
Handles conversion between JavaScript objects and CLR types (e.g., Buffer to byte[]) asynchronously, preventing blocking of the Node.js event loop during interop calls.
Requires specific runtime versions (e.g., Mono 4.2.4 or .NET Core) and environment variables like EDGE_USE_CORECLR for dual-runtime setups, making installation and deployment error-prone.
Native binary Node.js modules may not work unless rebuilt for Edge's runtime, restricting access to parts of the NPM ecosystem, as noted in the 'using external Node.js modules' section.
Debugging embedded .NET code is primarily Windows-focused, requiring EDGE_CS_DEBUG environment variable and managed debugger attachment, with poor support for other platforms.
The project has moved to a new maintainer (agracio/edge-js), with issues and PRs redirected, indicating potential instability and slower updates for the original repository.