银光客户端-服务器通信

3
我有一个WPF应用程序,想要将其移植到Linux/Mac。最合理的方式似乎是将应用程序分成两个部分:客户端和服务器,并使用Silverlight作为客户端UI,在Mono中运行服务器部分(作为不可见的控制台应用程序)。
但是,让这两个部分如何通信是最好的方式呢?Silverlight 4支持COM互操作性,但我不能使用它,因为在Moonlight中会失败。所以我考虑通过套接字连接到本地主机,并使用JSON或类似的东西。或者是否有更好的方法,不需要我编写所有包含在服务器DLL中的函数的包装器?因为通信将在Mono<>Moonlight之间进行,也许我可以使用类似于跨平台的COM互操作性的东西?
3个回答

1

你走在正确的道路上。

你应该创建一个Web服务器应用程序,Silverlight应用程序将通过REST或SOAP通过http://localhost与其通信。


是的,但如何创建服务器端呢?只需打开一个套接字并自己处理所有REST / SOAP请求的处理,还是有更好的方法吗? - Maestro
@Drazic:阅读一些关于Web开发和Silverlight(以及RIA服务)的书籍即可,您不需要打开任何套接字。当你拿起一本书时,你会理解更多的东西。 - Gabriel McAdams
@Gabriel:我认为你忘记了这一部分:“到本地主机”。最终用户将不会安装IIS,因此没有真正的Web服务器参与。只是一个回环连接到127.0.0.1,以分离前端/后端。我不托管应用程序,它在用户的桌面电脑上本地运行。 - Maestro
@Joshua:我自己没有尝试过,但我同意通过本地主机使用套接字连接是我能想到的最有前途的方法。考虑在双方都使用System.Runtime.Serialization来减少你需要编写的代码量。在幕后,WCF是一个“消息传递”系统,它使用序列化将MethodName +属性传递给接收器,然后调用相应命名的委托... - Jay

1

0

Joshua - 我有点困惑(我不是指负面的意思)。如果应用程序在用户的机器上运行,那么就没有“服务器”可连接了,对吧?

服务器端组件的性质是什么?它们是做什么的?难道你不能在SilverLight内部运行整个应用程序吗?

SilverLight为.Net提供了运行时主机,在这个意义上,它可以包含你的整个应用程序 - 仍然可以像“传统”的基于Web的解决方案一样进行分层,因此你仍然可以为业务逻辑等拥有单独的程序集。


我不能使用纯Silverlight,因为我的应用程序需要打开套接字连接到受限制的端口/访问文件系统等。我知道没有“真正”的服务器可以连接,这就是为什么我正在研究从控制台应用程序托管WCF服务,或编写自己的基于TCP的通信协议。 - Maestro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接