我抬头看了WCF,我无法弄清楚它是什么。我找到了this page,这似乎是应用程序允许其他应用程序调用函数的一种方式。加载DLL和调用函数的类型,但使用TCP而不是加载DLL但强制用户运行应用程序。
我仍然对此感到困惑。有人可以解释它的用途吗?
看起来如果我运行两个可以托管相同服务的应用程序,只有第一个将运行其余的将获得错误? 我可以调用函数,但是有内存限制吗?我可以在堆栈或堆上分配时将byte []作为params传递吗? 我无法传递文件句柄吗? (我无法想出原因)。
我可以将3个应用程序作为客户端并且相当容易吗?就像我打开app1并打开图像一样。我可以打开app2和3并让它们对当前加载的图像执行不同的操作吗? (app 1)编辑,2)在内存中导出图像作为不同类型(动画gif,avi,png等)3)不同的编辑工具或应用程序,看看它在运行时的外观
答案 0 :(得分:5)
@ acidzombie24,反驳你对Ryan回答的评论:
WCF NOT 远程函数调用 - 完全没有。恰恰相反!
WCF是基于消息的通信系统 - 您的客户端将拥有与服务器具有相同方法的代理。当您在客户端代理上调用此类函数时,WCF运行时所执行的操作是将这些方法参数,方法名称和一些标头包装到序列化消息中,然后将其发送到服务器。 / p>
在客户端和服务器之间始终没有像远程协议或数据库连接一样打开的常量连接。客户端打包消息并将其发送出去。客户端和服务器之间的传输媒体甚至可以是SMTP(电子邮件)!
服务器收到消息后,WCF运行时将实例化服务类的实例以处理该请求。将调用该服务类的适当方法,传入参数,服务完成其工作,并生成响应。然后,响应以相同的方式返回 - 通过传输媒体将序列化消息传回给客户端。
WCF是一种通用的,基于消息的通信系统,可以让您创建分布式系统 - 您的服务器上有一堆服务,可以在客户呼叫时代表客户端执行某些功能。 WCF就像Web服务 - 只是远不止于此。它也是消息队列(使用Microsoft的MSMQ产品),网络/ TCP通信等等。它比以前的任何通信API都更具可扩展性。
答案 1 :(得分:3)
WCF实际上只是一个网络/通信平台。你用它做什么取决于你的要求和技能。通常,它用于您拥有客户端的情况 - >服务器或n层应用程序。最常见的是,它由服务器上的IIS或Process Hosting服务托管。然后由一些客户连接。
WCF确实能够传输数据,包括图像作为字节流等,这可能听起来像你正在逃避的。传递句柄也是正确的,因为通常是跨多个边界(上下文,appdomain,机器,甚至域/网络)连接应用程序。
不确定你想要了解的是什么,但希望它有所帮助。
答案 2 :(得分:1)