日期:2014-05-19  浏览次数:20839 次

100分求解webservice中的实体类在客户端做参数传递解决方法
webservice中定义的试题类,如何在客户端引用,
[WebMethod]
public   void   test(User   user)
{}
[Serializable]
public   class   User
{
public   User()
{}
      private   string   _uname;
      private   string   _upass;
      public   string   uName
    {
        get   {   return   _uname;   }
        set   {   _uName   =   value;}
      }
  public   stirng   uPass
    {
        get   {   return   _uPass;   }
        set   {   _uPass   =   value;}
      }
}
我在WebService   中有个类库Model,中有若干个实体类,写法如上,问题是有些有3个在客户端可以直接引用,还有的就不行,从昨天搞到今天,还是不行,也想了用别的办法,如传递数组string[],在实例实体类的对象,但也麻烦,或传递XML,XML不是很熟悉。
现请做过这样的各位大哥请指点,谢谢,分是小问题。咱是爽快人。

------解决方案--------------------
若要在WebService 中使用自定義的MODEL,可以將MODEL序列化和反序列化操作.
方法:
//序列化
public byte[] SerializeObject(object pObj)
{
if (pObj == null)
return null;
System.IO.MemoryStream memoryStream = new System.IO.MemoryStream();
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(memoryStream, pObj);
memoryStream.Position = 0;
byte[] read = new byte[memoryStream.Length];
memoryStream.Read(read, 0, read.Length);
memoryStream.Close();
return read;
}
//反序列化
public object DeserializeObject(byte[] pBytes)
{
object newOjb = null;
if (pBytes == null)
{
return newOjb;
}

System.IO.MemoryStream memoryStream = new System.IO.MemoryStream(pBytes);
memoryStream.Position = 0;
BinaryFormatter formatter = new BinaryFormatter();
newOjb = formatter.Deserialize(memoryStream);
memoryStream.Close();

return newOjb;
}
------解决方案--------------------
只有是输入参数或返回参数使用到的model你引用webservice后才可以自动生成相关代码,前端才可以使用相应的摸的拉,其它没相关的摸的拉是不可能使用到的
------解决方案--------------------
up
------解决方案--------------------
这种情况可以通过序列化成二进制来传送,即:

不管是客户到服务器,还是服务器到客户端,传送时序列化成二进制数组,接收时再将二进制数组反序列化即可....

一个原则就是转成基本类型(比如int,string,byte)等类型后再传送...
------解决方案--------------------
如果客户端是.net的开发的话是没有问题的,会在本地生成代理(c/s,b/s)都一样。其他客户端的话,就传递xml文本了。
------解决方案--------------------
有时间看看!
------解决方案--------------------

Visual Studio会自动在Reference.cs中添加类及其字段和属性的定义
直接用就可以吧,CLR会自动帮忙序列化和反序列化。

“问题是有些有3个在客户端可以直接引用,还有的就不行”,没看明白什么意思?