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个在客户端可以直接引用,还有的就不行”,没看明白什么意思?