MarshalByRefObject和Serializable

news/2024/7/4 1:45:38 标签: webservice, soap, string, xml, web, class
class="baidu_pl">
class="article_content clearfix">
class="htmledit_views">

class="postTitle">MarshalByRefObject和Serializable

class="postBody">

转自:http://hi.baidu.com/smile8021/blog/item/f6b81e0aa870713db1351d82.html(天天向上)

最近在看class="tags" href="/tags/WEB.html" title=web>web sevice 方面的东西,顺便看了下序列化,懂了不少啊 :

从MarshalByRefObject派生的类和有[Serializable]的类都可以跨越应用程序域作为参数传递。
从MarshalByRefObject派生的类按引用封送,有[Serializable]标志的类,按值封送。
如果此类即从MarshalByRefObject派生,也有[Serializable]标志也是按引用封送。

序列化有3种情况:

  1. 序列化为XML格式:
    class="tags" href="/tags/WEBSERVICE.html" title=class="tags" href="/tags/WEB.html" title=web>webservice>class="tags" href="/tags/WEB.html" title=web>webservice里,写个class="tags" href="/tags/WEB.html" title=web>web method,传个自定义类做参数,就是这种情况。系统会帮你搞定,把自定义的类转换为默认XML格式。
  2. 序列化为2进制:
    要加[Serializable]标志,可以把私有变量和公共变量都序列化。
  3. 序列化为class="tags" href="/tags/SOAP.html" title=soap>soap格式:
    需要实现ISerializable接口,定义序列化函数ISerializable.GetObjectData,和还原序列化的构造函数。
    一个class="tags" href="/tags/SOAP.html" title=soap>soap参数类的sample:
[Serializable]
    
public class
serialze:ISerializable
    
{
        
// 序列化函数,由 SoapFormatter 在序列化过程中调用

        void ISerializable.GetObjectData(SerializationInfo info, StreamingContext
             ctxt)
        
{
            
// 向 SerializationInfo 对象中添加每个字段

             info.AddValue("UserName" , UserName);
             info.AddValue(
"UserID"
,UserID);
         }


        
// 还原序列化构造函数,由 SoapFormatter 在还原序列化过程中调用
        public serialze(SerializationInfo info, StreamingContext ctxt)
        
{
            
// 从 SerializationInfo 对象中还原序列化出各个字段

             UserName = (class="tags" href="/tags/STRING.html" title=string>string)info.GetValue("UserName", typeof(class="tags" href="/tags/STRING.html" title=string>string ));
             UserID
= (int) info.GetValue("UserID",typeof(int
));
         }

  
        
public serialze()
        
{}


        
public class="tags" href="/tags/STRING.html" title=string>string UserName;
        
public int
UserID;
     }

http://www.niftyadmin.cn/n/1221509.html

相关文章

深入理解Java接口

一、Java接口的基本内容 [1].Java编程语言中不支持多重继承(即Java中一个类不能有多于一个的直接父类),但可以实现多个接口,这就间接地实现了多重继承。 [2].接口(Interface)将产生一个完全抽象的类,它是用来建立类与类之间的协议的&#x…

Exchange Server2010系列之十六:客户端访问方式

在给某国企邮件管理员进行培训时,很多朋友提出在OutLook里有些功能实现不了,如联系人同步、日历同步等。遇到这种情况可能是Exchange客户端访问方式造成的。在Exchange Server2010 中,客户端访问服务器角色支持 Outlook Web App 、 Microsoft…

C#装箱与拆箱

C#装箱与拆箱 要掌握装箱与拆箱,就必须了解CTS及它的特点。 NET重要技术和基础之一的CTS(Common Type System)。顾名思义,CTS就是为了实现在应用程序声明和使用这些类型时必须遵循的规则而存在的通用类型系统。.Net将整个系统的类型分成两大类 ——Value…

Linux命令之watch

watch命令功能:watch 可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行。语法:watch [-n] [-d] command参数:-n :指定时间间隔,默认为2s的时间间隔重复运行命令-d :以高亮显示变化的区…

Android中adb的使用

一提到adb,搞Android的肯定不会陌生,那adb到底是什么,adb全称为Android Debug Bridge,即Android调试桥,那adb到底是干什么的: 通过adb我们可以在Eclipse中方面通过DDMS来调试Android程序,说白了就是debug工…

数据中心自动化-活动目录账户密码过期自动提醒

客户公司里的帐户安全策略是90天密码过期的,但是有些用户由于出差或者其他原因没有修改密码导致无法登录***等公司应用,客户想了解下如何通过微软最新的数据中心自动化工具System Center Orchestrator实现在用户密码即将到期时提前发送邮件通知。 为了简…

异步调用

异步/同步调用 asynchronous call(异步调用) :一个可以无需等待函数的返回值就让操作继续进行的函数。同步方法调用在程序继续执行之前需要等待同步方法执行完毕返回结果;异步方法则在被调用之后立即返回以便程序在被调用方法完成…