.net的web服务注册产生实体的问题

liuweihug 2008-04-06 10:34:41
.net的web服务注册后,实体会产生一个代理类。
我引用的实体层都是一个,为什么不能直接用实体赋值?
如:Model.Entity在注册web服务后就编程了webService.entity。
这样就不能从web页面上直接用Model的实体赋值。
请各位给个建议。谢谢
...全文
67 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
flyerwing 2009-07-27
  • 打赏
  • 举报
回复
属性添加序列化标记
红街咖啡 2009-07-23
  • 打赏
  • 举报
回复
哦.学习哈.
badtank 2008-04-07
  • 打赏
  • 举报
回复
web service服务的代理会根据使用的实体类来生成一份经过xml序列化的实体类,这个序列化前后的2个实体类是不同的。
所以客户端是不能直接给你定义的实体类进行赋值。
如果要在客户端也能够直接调用实体类来操作,需要自行实现序列化方法。
具体内容请参照
/////////////////////////////////////Webservice:////////////////////////////////////
using System;
.................
using HumanResource;
namespace ServiceTest
{
public class MyService : System.Web.Services.WebService
{
public MyService()
{
.........
}
...............
//方法
[WebMethod]
public string GetEmployee( )
{
Employee m_emp = new Employee();
return Serializer.Serialize(m_emp);
}
}
}

在访问webservice的一端,先将返回的序列化之后的对象反序列化为实体类后再来使用。
using HumanResource;
namespace ServiceClientTest
{
public class MyServiceClient
{
public MyServiceClient()
{
.........
}
...............
//方法

public Employee GetEmployee( )
{
string strm_emp = service.GetEmployee( );
return Serializer.DeSerialize(m_emp) as Employee;
}
}
}
客户端程序(可能也是个web程序)通过调用MyServiceClient的方法来访问WebService.
二进制序列化反序列化的方法:
public static string Serialize(object obj)
{
string serializedObject = null;
if (obj != null)
{
IFormatter formatter = new BinaryFormatter();
using (Stream stream = new MemoryStream())
{
formatter.Serialize(stream, obj);
long count = stream.Length;
byte[] buff = new byte[count];
stream.Seek(0, SeekOrigin.Begin);
stream.Read(buff, 0, Convert.ToInt32(count));
stream.Close();
serializedObject = Convert.ToBase64String(buff);
}
}
return serializedObject;
}

public static object DeSerialize(string serializedObject)
{
object @object = null;
if (serializedObject!="")
{
IFormatter fter = new BinaryFormatter();
byte[] buff = Convert.FromBase64String(serializedObject);
using (Stream stream = new MemoryStream(buff))
{
@object = fter.Deserialize(stream);
stream.Close();
}
}
return @object;
}
搬了一下刚才在另外一个问题中的回复,希望对你的问题有帮助. :)

12,162

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 Web Services
社区管理员
  • Web Services社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧