网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > ASP.NET技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.开发时复制aspx网页的方法_AX.
.使用UTF-8编码/JMail组件发送邮件.
.用 md5 加密数据库中的用户密码.
.ASP.NET随机码生成示例.
.ASP.NET2.0实现无刷新客户端回调.
.ASP.NET2.0中themes、Skins轻松实.
.把.NET程序部署到没有安装.NET F.
..net 下用javascript调用webserv.
.如何实现asp.net 2.0的SqlCacheD.
.通过数据捆绑将数据添加到ASP.NE.
.权限树中Checkbox的操作[Asp.Net.
.ASP.NET 2.0高级数据处理之数据绑.
.正则表达式提取数字.
..net打包自动安装数据库.
.URL重写可删节日期模式---正则表.
..NET 连接到 Oracle的oci.dll加载.
.ASP.NET 2.0下的条件编译.
.分析ASP.NET服务器控件开发-控件.
.通过系统配置来提高ASP.NET应用程.
.一个读取扩展名为xml的资源文件的.

通过Remoting service上传文件

发表日期:2006-5-14


最近在因为在学习Remoting,纯粹只是了解一下,发现Remoting确实是好东西。

我们通常有三种方式来使用remoting,一种是

第一种:Publishing a public object
公开的对象创建在本地
第二种:Remote creation of a public object (SAO)
对象创建在客户端请求中
第三种:Remote creation of a private object (CAO)
对象创建在HOST上,客户端引用服务器上的对象

目次我也没有很好理解这三种的本质区别在哪里。而这三种方式的remoting创建方式也不相同。

第一种方式
Host:
ChannelServices.RegisterChannel (new TcpChannel(1500));
cTransfer Trans = new cTransfer();
RemotingServices.Marshal (Trans, "TestService");Client:
cTransfer T = (cTransfer) Activator.GetObject(typeof(cTransfer),
                                 "tcp://host:1500/TestService");
第二种方式
Host:
ChannelServices.RegisterChannel (new TcpChannel(1500));
RemotingConfiguration.RegisterWellKnownServiceType(typeof(cTransfer),
    "TestService", WellKnownObjectMode.Singleton);Client:
cTransfer T = (cTransfer) Activator.GetObject(typeof(cTransfer),
                                 "tcp://host:1500/TestService");
第三种方式
Host:
ChannelServices.RegisterChannel (new TcpChannel(1500));
RemotingConfiguration.RegisterActivatedServiceType(typeof(cTransfer));Client:
object[] attr = {new UrlAttribute("tcp://host:1500")};
object[] args = {"Sample constructor argument"};
cTransfer T = (cTransfer) Activator.CreateInstance(typeof(cTransfer), args, attr);
如果我们需要一个对象(object)允许远程调用处理,那么这个对象(object)需要继承于MarshalByRefObject这个类。

如何在remoting中传送文件呢?基本思路就是在client打开client的文件,转换在Byte[]类型之后调用host的对象。
Client与Host之间传送的对象
[Serializable]
    public struct kAction
    {
        public string filename;
        public byte[] context;       
       
    };打开文件,将流字节保存到Context中去
Stream  fileStream=File.Open(this.transFileName.Text,FileMode.Open);
            fileStream.Position=0;
            byte[] Content = new byte[((int) fileStream.Length) + 1];
            fileStream.Read(Content,0,Content.Length) ;
在Host在读取到Kaction之后,把它保存到指定文件夹下面
MemoryStream meoeryStream=new MemoryStream(k_Action.context);
            FileStream fileStream=new FileStream(@"d:\"+k_Action.filename,FileMode.Create);
            meoeryStream.WriteTo(fileStream);
            fileStream.Close();
            meoeryStream.Close();           
发现不能在对象中又定义新的对象。在准备发送到HOST上会提示“包含潜在危险的类型”。
[Serializable]
    public struct kAction
    {
        public string filename;
        public byte[] context;
                public FineInfo fileInfo;//这里

    };
记录一下自己的心得。有空我会好好整理下下回做篇完整点的。

cnzc's blogs

上一篇:在atlas里面的UpdatePanel控件中调用javascript,以及updatePanel的一些原理 人气:8495
下一篇:ASP.NET2.0 WebRource,开发微调按钮控件 人气:6717
浏览全部Remoting service的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐