所以我想通过Web服务将wpf c#客户端连接到java后端。 我对此有几个问题,我对网络服务有点新意,所以请耐心等待..
我是否会使用wcf网络服务,或者它很可能是一个java构造(如果是这样的话?)
我会使用肥皂还是休息?我知道这是一个很大的话题,但我只是在寻找最有可能使用哪一个。
最后,我能通过我的c#运行java方法吗?例如,我说服务器上有一个名为“Customer GetCustomer(int id);”的方法。 ...我可以在我的c#客户端中调用此方法吗?客户如何回来将它作为xml回来然后我必须解析这个xml并在客户端构建一个Customer对象?意思是,我是否在服务器和客户端上都有重复的类定义,或者我会以某种方式共享相同的客户参考?
提前致谢!
答案 0 :(得分:6)
从Java后端公开SOAP服务,并使用WCF访问它。轻松无痛
使用WCF时,SOAP更容易,工作量更少。
是。 SOAP允许您定义代表您的类的ComplexTypes,因此C#映射与您的Java几乎相同。
我建议一般性地阅读有关SOAP和WebServices的内容,这应该回答你的很多问题。
答案 1 :(得分:3)
关于问题3,当您将Java中的逻辑公开为Web服务时...现在我没有足够的知识来介绍如何部署Java Web服务,但是当您部署它时,剩下的就是创建一个在C#中代理并开始调用您的Web方法。
<强>精化:强> 创建代理(在.NET Web服务或WCF中)(AKA添加Web /服务引用)意味着您将Java WS方法中的所有公开类/类型重新创建为C#中的本地类型。将使用名为WSDL(Web服务定义语言)的XML文档公开这些类型(在Java WS端)。这将是C#程序中Java WS webmethods中使用的所有类型的第二个副本,您可以调用此redundent,但这是您可以从.NET与Java WS进行通信的唯一方法
之后,当您的C#程序运行并且到达对Java WebMethod的代理的调用时,代理将把WS代理使用的Web方法调用的参数(类实例)转换为XML表示。这称为使用SOAP编码对象,客户端创建一个SOAP信封,其中包含所有必需的数据/对象 - 参数(用SOAP编码)并将SOAP信封发送到JAVA WS。 Java WS将信封中嵌入的对象解码(将XML转换为java实例),并根据SOAP信封中的一些提示调用正确的Web方法。
当完成对Java WS的调用时,必须返回给客户端的所有实例(如果有的话)也使用SOAP进行编码,并作为对WS调用的响应发送到客户端。