gpt4 book ai didi

c# - 在客户端和服务器 C# WCF 之间传递对象

转载 作者:太空宇宙 更新时间:2023-11-03 10:53:58 25 4
gpt4 key购买 nike

我正在为医疗数据实现分布式处理系统。我有多个客户端和服务器。客户端有数据,他们向服务器发送请求进行处理。

我必须将两个值传输到服务器并取回一个列表。服务器实现定义为:

[ServiceContract]
public interface ServerInterface
{
[OperationContract]
List<Triangle> ServerFunction(Grid g, double isolevel);
}

public class ServerImpl : ServerInterface
{
public List<Triangle> ServerFunction(Grid g, double isolevel)
{/*Implementation*/}
}

网格类定义为:

[Serializable]
public class Grid
{
public Point3D[] p = new Point3D[8];
public Int32[] val = new Int32[8];
}

三角形类为

  [Serializable]
public class Triangle
{
public Point3D[] p = new Point3D[3];
}

我创建了客户端和服务器端实现,并且 isolevel 值传递正常,但网格未正确传递。

服务器使用此代码创建 WCF 服务:

        Uri baseAddress = new Uri("http://localhost:6525/ServerObject");

using (ServiceHost host = new ServiceHost(typeof(ServerImpl), baseAddress))
{
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
host.Description.Behaviors.Add(smb);

host.Open();
Console.ReadKey();
}

调用服务器获取结果的代码部分是:

var myBinding = new BasicHttpBinding();
var myEndPoint = new EndpointAddress("http://localhost:6525/ServerObject");
var myChannelFactory=new ChannelFactory<ServerInterface>(myBinding,myEndPoint);
ServerInterface si=null;
si = myChannelFactory.CreateChannel();


List<Triangle> triList=si.ServerFunction(Grid g,double isoValue);

它从不返回三角形列表(总是返回 null)。

此代码在转换为分布式之前已经过测试并且可以正常工作。

我正在使用 WCF,我尝试将网格和三角形转换为字符串值并传递它们,它有效但速度很慢。该算法本身需要大量时间,因此不需要额外的处理时间。有什么想法吗?

最佳答案

您应该通过将 [DataContract] 属性添加到要序列化的类来使用 DataContractSerializer。然后将 [DataMember] 属性添加到类的每个成员。所以你会有这样的东西:

[DataContract]
public class Grid
{
[DataMember]
public Point3D[] p = new Point3D[8];

[DataMember]
public Int32[] val = new Int32[8];
}

可以在 Microsoft 网站上找到更多信息 here .

关于c# - 在客户端和服务器 C# WCF 之间传递对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20195063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com