要想在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的更多相关文章

  1. 示例 - 如何在多线程中应用SpiderStudio生成的DLL?

    >> 接上文 "示例 - 如何在Console应用程序中应用SpiderStudio生成的DLL?", 将其改成多线程: 代码: using System; using ...

  2. 示例 - 如何在Console应用程序中应用SpiderStudio生成的DLL?

    以前面生成的XML/JSON互转DLL为例, 我们写一个Console Appliction来做这件事情, 步骤如下: 1. 创建Console Project 2. 引入www.utilities_ ...

  3. vs2013如何在C++中调用Lua(二)

    Lua学习笔记 vs2013如何在C++中调用Lua (此为转载教程) 本人试过完全可行 一.准备工作 1.下载Lua源码,地址:http://www.lua.org/download.html(我用 ...

  4. 如何在Delphi中调用VC6.0开发的COM

    上次写了如何在VC6.0下对Delphi写的COM进行调用,原本想马上写如何在Delphi中调用VC6.0开发的COM时,由于在写事例程序中碰到了个很怪的问题,在我机子上用VC写的接口程序编译能通过. ...

  5. 如何在Java中调用Python代码

    有时候,我们会碰到这样的问题:与A同学合作写代码,A同学只会写Python,而不会Java, 而你只会写Java并不擅长Python,并且发现难以用Java来重写对方的代码,这时,就不得不想方设法“调 ...

  6. 一步一步学Silverlight 2系列(21):如何在Silverlight中调用JavaScript

    概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...

  7. 【VS开发】【CUDA开发】如何在MFC中调用CUDA

    如何在MFC中调用CUDA 有时候,我们需要在比较大的项目中调用CUDA,这就涉及到MFC+CUDA的环境配置问题,以矩阵相乘为例,在MFC中调用CUDA程序.我们参考罗振东iylzd@163.com ...

  8. [转]如何在Java中调用DLL方法

    转载地址:http://developer.51cto.com/art/200906/129773.htm Java语言本身具有跨平台性,如果通过Java调用DLL的技术方便易用,使用Java开发前台 ...

  9. 转 如何在C++中调用C程序

    如何在C++中调用C程序?   C++和C是两种完全不同的编译链接处理方式,如果直接在C++里面调用C函数,会找不到函数体,报链接错误.要解决这个问题,就要在 C++文件里面显示声明一下哪些函数是C写 ...

随机推荐

  1. Transform数据权限浅析1之mdl语句批量加载权限

    Cognos建模工具除了Framework之外,还有一个Transform,两者的最大区别就是在于Framework是通过结构直连关系数据库的,数据根据数据仓库的变化而变化,而Transform是生产 ...

  2. Opencv 完美配置攻略 2014 (Win8.1 + Opencv 2.4.8 + VS 2013)

    http://my.phirobot.com/blog/2014-02-opencv_configuration_in_vs.html 2012年4月给同学写了篇傻瓜式的 VS2010+Opencv- ...

  3. 怎样更爽地看PDF杂志

    下载了一些PDF的杂志,想着要是全屏双页显示,应该是很爽的,但是,下载了应该foxit reader,还是遇到一些问题: 1.全屏:F11即可 2.全屏后不双页:在选项中,"全屏" ...

  4. 读TIJ -7 多形性

    <Think in java·第 7 章  多形性> [面向对象的程序设计语言三种最主要的特征:数据抽象.继承和多态] 在这个层面是没有什么"思想"好谈的!当你依照人们 ...

  5. 第一章:走近java-深入理解java虚拟机-读书总结

    java技术体系: 1.java程序设计语言 2.硬件平台上的java虚拟机 3.class文件格式 4.java的API类库 5.第三方的类库 JDK: java语言,虚拟机,java API类库  ...

  6. com.tongyan.tutelage:bdservice_v1

    3-21 10:14:20.833 2892-2892/? E/art: No implementation found for long com.baidu.platform.comjni.map. ...

  7. OFBiz:初始RequestHandler

    RequestHandler,可以称之为请求处理器,在ControlServlet.init()中初始化: public class ControlServlet extends HttpServle ...

  8. node:爬虫爬取网页图片

    代码地址如下:http://www.demodashi.com/demo/13845.html 前言 周末自己在家闲着没事,刷着微信,玩着手机,发现自己的微信头像该换了,就去网上找了一下头像,看着图片 ...

  9. (四)hibernate关联映射之——一对多映射

    0.   映射分四种类型: 一对多 多对一 一对一 多对多 前两者最常用 1.单向一对多关联 1.1  如何在JAVA和数据库中表示一对多的关系. 2.多对一关联 以学生对应班级来解释 步骤(1)创建 ...

  10. NTP服务及时间同步(CentOS6.x)(转)

    今有一小型项目,完全自主弄,原来以为很简单的NTP服务,我给折腾了2个多小时才整撑头(以前都是运维搞,没太注意,所以这技术的东西,在简单都需要亲尝啊),这里记录为以后别再浪费时间. 目标环境,5台li ...