如何通过对类的序列化实现WCF的远程接口调用?
--------------------编程问答-------------------- 我调用WCF服务的时候没有用系列化,我用的是异步传输,在COMPLETE事件通过遍历获取数据在客户端专门有个对象来接数据我用的是LIST来接的。你如果在客户端用User类的话,应该用Serivicereference1.User而不是直接用User。 --------------------编程问答-------------------- 不好意思我是个WCF新手,问一下如何实现客户端对服务器端类的引用,ServiceReference1对远端自定义类不可见怎么办? --------------------编程问答-------------------- 你在调用服务的时候第一步不是添加服务引用吗?添加过后,默认服务名就叫做ServiceReference1以下 是我异步方法里面事件
1.在load()事件里面声明
ServiceReference1.Service1Client sc = new ServiceReference1.Service1Client();
sc.JQHotSpotCompleted += new EventHandler<ServiceReference1.JQHotSpotCompletedEventArgs>(sc_JQHotSpotCompleted);
2.在Completed事件里面调用
void sc_JQHotSpotCompleted(object sender, ServiceReference1.JQHotSpotCompletedEventArgs e)
{
List<Hot> lst = new List<Hot>();
double east, west, south, north;
foreach (ServiceReference1.HotSpot s in e.Result)
{
QuadTree.Quadtree2Geodetic(s.QTREE.ToString(), out east, out south, out west, out north);
Hot h = new Hot();
h.X = (west + east) / 2;
h.Y = (north + south) / 2;
h.Weight = Convert.ToDouble(s.NUM);
lst.Add(h);
}
this.hotspot.ISQuickSearch = true;
this.hotspot.ItemSource = lst;
this.hotspot.Bind();
} --------------------编程问答-------------------- 没错,ServiceReference1确实实现了远端定义的一些方法,但我是想引用远端定义的类(其实跟结构体没什么区别,纯数据包而已),请问怎么实现这个服务器端自定义类的客户端引用呢? --------------------编程问答-------------------- ServiceReference1.类名,我上面的Complete事件中ServiceReference1.HotSpot就是引用服务器端的类。这样就保持一致了 --------------------编程问答-------------------- 我换了种更cuo的方式:本来想在IService1.cs文件里的[DataContract]域添加自定义类User,但是Update Service Reference之后在Object Browser->Client->{}Client.ServiceReference1里找不到User,之后我果断在默认的CompositeType类里添加了自己需要的属性、方法,这样才最终实现了远程调用...请问:是否可以在IService1.cs文件里定义多个[DataContract](数据契约)类?除了重写CompositeType类之外还有别的方法引用自定义类吗? --------------------编程问答-------------------- [DataContract]定义借口要和你方法一致,多少个无所谓,数据模型你可以建一个工程专门存放。服务端引用,客户端调用就和那个工程基本没什么关系了,你需要用的数据模型就是服务器端的。而不是那个工程的了。
补充:.NET技术 , C#