Dve*_*Dve 58 c# serverside-javascript node.js edge.js
我有一个宠物项目是一个在线游戏,整个游戏引擎是用C#编写的,我想知道是否有任何我可以从使用Node.JS构建的解决方案中调用这个现有程序集(.dll)的功能. ,Socket.IO,Express等?
游戏引擎本身非常完整; 经过测试和强大 我希望有一些巧妙的方式来暴露它的功能,而不需要太多的开销.
更新:
为了回答我自己的问题..我已经结束了构建自己的Web套接字服务器(基于最新的Web套接字协议文档).它是用C#编写的,并使用Mono编译,因此它可以托管在运行单声道的Linux机器上,因此(通过一些调整)我可以使用我现有的游戏引擎.
更新2 一个完全符合我原本想要的项目现在存在 - http://tjanczuk.github.io/edge/#/
Tom*_*zuk 29
看看我开始的edge.js项目(http://tjanczuk.github.com/edge).它提供了一种在进程中运行.NET和node.js代码的机制.Edge.js允许您从node.js调用.NET代码,从.NET调用node.js代码.它在.NET和node.js之间编组数据,并协调多线程CLR和单线程V8之间的线程模型.
使用edge.js,您可以从node.js访问预先存在的.NET代码岛,这似乎与您的方案相匹配.
Kyb*_*ias 26
我最近遇到了同样的挑战(要求从node.js javascript调用C#代码).我有1000多行复杂的C#代码,我真的不喜欢移植到javascript.
我解决了如下.
如果只想在一个方向上进行呼叫,这就解决了这个问题.我还要求从C#调用javascript.这要困难得多.一个人必须:
也许如果我有一些额外的时间,我可能会做一个示例项目.
.Net插件可以编写,简而言之,您可以编写常规本机插件,并通过CLI/C++调用.Net dll添加.Net调用.
实际上,您通常会创建一个C#dll库,然后从CLI/C++节点addon项目调用该库.有一些美食,例如确保在没有CLR支持的情况下编译实际节点添加定义文件,因此节点可以正确加载它.
您可以查看:https://github.com/saary/node.net ,了解如何实现这一目标.
以下答案已过时,但仍然有助于从
第一版发布 Node.js了解 Node.js现在也可以在nodejs.org上本地用于Windows.没有cygwin要求或其他.
首先,目前还没有Node.js的原生Windows端口,只有一个cygwin版本(但我怀疑你已经知道了).
有一个节点模块浮动在GitHubs的某个地方,提供了用于调用本机库的包装器,但iirc只能用于.so
libs.
因此,如果要使用C#DLL,首先必须编写本机Node.js扩展名作为接口:https:
//www.cloudkick.com/blog/2010/aug/23/writing-nodejs-native -Extensions /
从该扩展中,您必须加载DLL并将来自Node.js的调用包装到C#代码中,这意味着您必须编写一些低级C/C++代码并将C#值转换为V8内容.
我只有C++和V8的经验,因为代码示例有点稀疏所以它有点难以开始,而且包装C++类并不是那么简单.但是我确实编写了小型JS游戏引擎类的东西,它使用的是C++ OpenGL后端,它还没有完成(并且几乎没有任何评论),但它可能会给你一些想法.
注意:有些项目在野外为V8提供了一些自动生成的包装器,但这些只是C++.
总而言之,我认为让C#包装器工作会非常冒险,但它应该是可能的.
归档时间: |
|
查看次数: |
47245 次 |
最近记录: |