示例 - 如何在NodeJS中调用SS生成的DLL
要想在NodeJS中调用SS生成的DLL, 需要借助EdgeJS.
EdgeJS: http://tjanczuk.github.io/edge/
如果你还不知道如何在SS中生成DLL, 请查看: Spider Studio 新版本 (x-mas) - 可以引入第三方程序集, 可以将脚本生成为DLL
下面以曾经写过的XML/JSON互转的脚本为例 (C#中另辟蹊径解决JSON / XML互转的问题) 说明如何在NodeJS中应用SS DLL:
1. 安装edgejs
npm install edge
2. 为www.utilities_online.info.XmlJsonConverter.dll编写一个javascript的代理脚本
一共两个方法, Xml2Json & Json2Xml:
var edge = require('edge'); exports.xml2json = edge.func({
source: function() {/* using System.Threading;
using System.Threading.Tasks;
using www.utilities_online.info; public class Startup
{
public async Task<object> Invoke(object input)
{
object result = null;
Thread t = new Thread(new ParameterizedThreadStart((p) => {
using(var proxy = new XmlJsonConverter())
{
proxy.Init();
result = proxy.Xml2Json(p.ToString());
}
} ));
t.SetApartmentState(ApartmentState.STA);
t.IsBackground = true;
t.Start(input);
while (t.ThreadState != ThreadState.Stopped)
{
Thread.Sleep(100);
}
return result;
}
}
*/},
references: [ __dirname + '\\www.utilities_online.info.XmlJsonConverter.dll' ]
}); exports.json2xml = edge.func({
source: function() {/* using System.Threading;
using System.Threading.Tasks;
using www.utilities_online.info; public class Startup
{
public async Task<object> Invoke(object input)
{
object result = null;
Thread t = new Thread(new ParameterizedThreadStart((p) => {
using(var proxy = new XmlJsonConverter())
{
proxy.Init();
result = proxy.Json2Xml(p.ToString());
}
} ));
t.SetApartmentState(ApartmentState.STA);
t.IsBackground = true;
t.Start(input);
while (t.ThreadState != ThreadState.Stopped)
{
Thread.Sleep(100);
}
return result;
}
}
*/},
references: [ __dirname + '\\www.utilities_online.info.XmlJsonConverter.dll' ]
});
3. 编写服务脚本 www.utilities_online.info.XmlJsonConverter.js
var http = require('http');
var xmlJson = require('./www.utilities_online.info.XmlJsonConverter.proxy.js'); var person = { person:{ name:'Mike', age: }}; var proxy = http.createServer(function (req, res) {
res.writeHead(, {'Content-Type': 'application/xml'});
var xml = xmlJson.json2xml(JSON.stringify(person), true);
console.log(xml);
res.end(xml);
}).listen();
4. 运行, 查看效果:
示例 - 如何在NodeJS中调用SS生成的DLL的更多相关文章
- 示例 - 如何在多线程中应用SpiderStudio生成的DLL?
>> 接上文 "示例 - 如何在Console应用程序中应用SpiderStudio生成的DLL?", 将其改成多线程: 代码: using System; using ...
- 示例 - 如何在Console应用程序中应用SpiderStudio生成的DLL?
以前面生成的XML/JSON互转DLL为例, 我们写一个Console Appliction来做这件事情, 步骤如下: 1. 创建Console Project 2. 引入www.utilities_ ...
- vs2013如何在C++中调用Lua(二)
Lua学习笔记 vs2013如何在C++中调用Lua (此为转载教程) 本人试过完全可行 一.准备工作 1.下载Lua源码,地址:http://www.lua.org/download.html(我用 ...
- 如何在Delphi中调用VC6.0开发的COM
上次写了如何在VC6.0下对Delphi写的COM进行调用,原本想马上写如何在Delphi中调用VC6.0开发的COM时,由于在写事例程序中碰到了个很怪的问题,在我机子上用VC写的接口程序编译能通过. ...
- 如何在Java中调用Python代码
有时候,我们会碰到这样的问题:与A同学合作写代码,A同学只会写Python,而不会Java, 而你只会写Java并不擅长Python,并且发现难以用Java来重写对方的代码,这时,就不得不想方设法“调 ...
- 一步一步学Silverlight 2系列(21):如何在Silverlight中调用JavaScript
概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...
- 【VS开发】【CUDA开发】如何在MFC中调用CUDA
如何在MFC中调用CUDA 有时候,我们需要在比较大的项目中调用CUDA,这就涉及到MFC+CUDA的环境配置问题,以矩阵相乘为例,在MFC中调用CUDA程序.我们参考罗振东iylzd@163.com ...
- [转]如何在Java中调用DLL方法
转载地址:http://developer.51cto.com/art/200906/129773.htm Java语言本身具有跨平台性,如果通过Java调用DLL的技术方便易用,使用Java开发前台 ...
- 转 如何在C++中调用C程序
如何在C++中调用C程序? C++和C是两种完全不同的编译链接处理方式,如果直接在C++里面调用C函数,会找不到函数体,报链接错误.要解决这个问题,就要在 C++文件里面显示声明一下哪些函数是C写 ...
随机推荐
- easyui messager alert 三秒后自动关闭提示
$.messager.alert(' ','<font size=\"2\" color=\"#666666\"><strong>数据库 ...
- android-文字的处理-随心
一.计算文字的大小 String timeStr = "00:00"; int textWidth = (int)Layout.getDesiredWidth(timeStr, 0 ...
- pring MVC过滤器-HttpPutFormContentFilter
在Spring MVC过滤器-HiddenHttpMethodFilter中我们提到,jsp或者说html中的form的method值只能为post或get,我们可以通过HiddenHttpMetho ...
- Vijos P1002 过河 (NOIP提高组2005)
链接:https://www.vijos.org/p/1002 解析: 若 p*x+(p+1)*y=Q(採用跳跃距离p和p+1时能够跳至不论什么位置Q),则在Q ≥ P*(P-1)时是一定有解的. 因 ...
- taro CSS Modules 的使用
Taro 中内置了 CSS Modules 的支持,但默认是关闭的,如果需要开启使用,请先在编译配置中添加如下配置. 小程序端开启 weapp: { module: { postcss: { // c ...
- 保护心灵窗口——防蓝光软件f.lux
一款根据时间变化来自动改变屏幕色温的软件.让你在深夜也能感受到太阳的温暖,顺便还有助于睡眠.相较于花大价钱购置防蓝光屏或者防蓝光膜,这款软件还是excellent的 首先,概念科普(蓝光的危害就略略略 ...
- iOS开发-多线程编程技术(Thread、Cocoa operations、GCD)
简介 在软件开发中,多线程编程技术被广泛应用,相信多线程任务对我们来说已经不再陌生了.有了多线程技术,我们可以同做多个事情,而不是一个一个任务地进行.比如:前端和后台作交互.大任务(需要耗费一定的时间 ...
- Android 四大组件(Activity、Service、BroadCastReceiver、ContentProvider)
转载于:http://blog.csdn.net/byxdaz/article/details/9708491 http://blog.csdn.net/q876266464/article/deta ...
- sphinx和mysql like对比
一共有3093326条企业数据,其中sphinx代码如下: <?php function microtime_float() { list($usec, $sec) = explode(&quo ...
- 详解 boost 库智能指针(scoped_ptr<T> 、shared_ptr<T> 、weak_ptr<T> 源码分析)
一.boost 智能指针 智能指针是利用RAII(Resource Acquisition Is Initialization:资源获取即初始化)来管理资源.关于RAII的讨论可以参考前面的文章.在使 ...