[原]关于在Python和C#之间消息传递的问题

问题的描述:

鉴于Python强大的网络功能和丰富的开源组件和C#开发Windows Form程序时优秀的框架,使用Python和C#混合编程可以有效的结合二者的长处,快速开发产品。

然而在这两者之间如何进行消息/数据的传递便成为一个首要的问题。

解决思路:

想在这两者之间方便进行对象转换Json是个首选的技术(关于Json的介绍就不复述了,可以参考文献[1])。既然选定了使用Json作为消息传递的格式,我们可以有两种方案处理这个问题:

一、通过中间文件传递Json字符串

在Python中将需要传递到C#的对象组装成列表,转换为Json字符串,将该字符串写入文件,然后再在C#端将该文件读出来,反序列化为对象列表即可。

话不多说,直接上代码:

Python端代码:

注:这里只贴了核心代码。至于如何将自定义Python转换为Json字符串可以参考文献[2]。

C#端代码:

 

二、通过返回值传递Json字符串

在Python端将对象列表转换成的Json字符串直接返回,在C#端直接捕获该返回值,然后反序列化为对象列表,代码如下:

Python端

C#端

这种方式省略了对中间文件的读写操作,较少了程序运行的时空开销。

 

参考文献:

【1】介绍Json http://www.json.org/json-zh.html

【2】使用Json作为Python和C#混合编程时对象转换的中间文件 http://www.cnblogs.com/chaosimple/p/4035693.html

【3】Best way to return a value from a Python script http://stackoverflow.com/questions/18231415/best-way-to-return-a-value-from-a-python-script

时间: 2024-08-08 12:39:02

[原]关于在Python和C#之间消息传递的问题的相关文章

关于CGI:Tomcat、PHP、Perl、Python和FastCGI之间的关系

如前文所述,Web服务器是一个很简单的东西,并不负责动态网页的构建,只能转发静态网页.同时Apache也说,他能支持perl,生成动态网页.这个支持perl,其实是apache越位了,做了一件额外的事情. 现在我们看生成动态网页这件事情. CGI的定义是:外部应用程序与Web服务器之间的接口. 明白了吧?也就是说,所谓的动态网页,都是要外部应用程序生成的,而不是Web服务器能干的事情.所以,最初的.最简单的CGI,是使用C来写的,很简单. 到了后来,大家觉得老用C也不是个办法啊,效率这么慢,老板

python和redis之间的交互

python和redis之间的交互 一. redis模块 安装模块: pip3 install redis 连接方式: r = redis.Redis(host='localhost',port=6379) 连接池:为了节约资源,减少多次连接带来的消耗. pool=redis.ConnectionPool(host='localhost',port=6379,decode_responses=True) 二.redis操作 常规操作: import redis r = redis.Redis(h

2.python,pycharm,anaconda之间的区别与联系 - python基础入门

Python环境配置-Pycharm下载/Anaconda安装 中我们已经完成了 Pycharm 和Anaconda 的安装.可能对于刚接触的小伙伴还是比较懵逼的,一会python一会Anaconda一会又特么来了个pycharm,一串接一串英文,特么怎么读都还不知道!!! 一.python是什么 python是一门编程语言,当前比较流程的编程语言有C/C++  .JAVA .Object-C  .PHP等,当然python也是其中之一.每一种编程语言都有自己的语法和规范,要想通过python编

原码、反码、补码之间的快速转换和简单运算

现在很多人都在学习计算机语言,那么原码.反码.补码之间的快速转换和简单运算是怎么样的呢?今天小编为大家讲讲具体的方法,希望能够对大家有所帮助. 正数部分: 正整数的原码.反码和补码是一样的,即看到符号位(第一位)是0,就可以照着写出其他两种码. 负数部分转换: 原码和反码的相互转换:符号位不变,数值位按位取反 原码和补码的相互转换:符号位不变,数值位按位取反,末位再加1 已知补码,求原码的负数的补码:符号位和数值位都取反,末位再加1 负数部分具体情况: 1)     原码转换为反码:符号位不变,

深入浅出web服务器与python应用程序之间的联系

简单来说,Web服务器是在运行在物理服务器上的一个程序,它永久地等待客户端(主要是浏览器,比如Chrome,Firefox等)发送请求.Web 服务器接受 Http Request,返回 Response,很多时候 Response 并不是静态文件,因此需要有一个应用程序根据 Request 生成相应的 Response.这里的应用程序主要用来处理相关业务逻辑,读取或者更新数据库,根据不同 Request 返回相应的 Response.两者之间的桥梁就是WSGI. 一直喜欢研究比较底层的技术,

翻译: Python 2.7.x和Python 3.x之间的主要区别(包括示例)

许多Python初学者都想知道应该从哪个版本的Python开始.我对这个问题的回答通常是“仅需使用您喜欢的教程所写的版本,并在以后查看差异”. 但是,如果您开始一个新项目并可以选择,该怎么办?我要说的是,只要Python 2.7.x和Python 3.x都支持您计划使用的库,那么目前就没有“对”或“错”.但是,这两个最受欢迎的Python版本之间的主要区别值得一看,以此避免在为其中任何一个编写代码或计划移植项目时遇见陷阱. __future__模块 Python 3.x引入了一些Python 2

【原】iOS学习之应用之间的操作

关于应用之间的相互操作,小编一直觉得非常高大上,在一次面试中被面试官一顿暴虐,今天小编就决定学习一下!经过一顿度娘,找到一些博客,不过都比较凌乱,我就打算自己整理一下! 首先要说的是每一个APP都可以设置一个自己独有的URL,APP应用之间的操作就是通过这个URL来实现的! 1.如何配置自己应用的URL? 关于自己的URL,作为资深的程序猿都会想到 Info.plist ,在 Info.plist 中如下图配置: 2.APP中判断手机上是否存在另一个APP 核心方法: [[UIApplicati

Python不同电脑之间传输文件实现类似scp功能不输密码

SCP vs SFTP 通过paramiko还可以传输文件,如何通过paramiko在计算机之间传输文件,通过阅读官方文档,发现有如下两种方式: sftp = paramiko.SFTPClient.from_transport(ssh.get_transport()) sftp = ssh.open_sftp() 即新建一个SFTPClient对象,该对象复用之前的SSH连接,因此,我们使用sftp传输文件时,不需要再次进行用户认证. 文件上传 In [59]: sftp.put('memor

二进制正负数的原码、反码、补码之间的转化

首先,计算机都是使用二进制的补码进行计算. 1.正数的二进制原码.反码.补码都是相同的 2.负数的二进制原码:先计算该负数绝对值的二进制.之后对其每个数"取反",然后加一. 比如-32 第一步:32(10)=00100000(2) 第二步:求反:11011111 第三步:加1:11100000 3.负数的反码:等于原码的最高位不变,其余取反. 比如-32 原码为:11100000 反码为:10011111 4.负数的补码:等于原码的最高位不变,其余取反,然后加一. 比如-32 第一步,