工具软件   办公软件   操作系统   网络安全   设计在线   程序开发   教程宝典   软件下载   软件论坛
您的位置:软件 > 开发者网络 > 微软开发专栏 > 技术专题 > 正文
.NET框架和VS.NET中的SOAP
[文章信息]
作者:Keith Ballinger,Jonathan Hawkins,Pranish Kumar
时间:2004-11-07
出处:msdn
责任编辑:方舟
[文章导读]
本文的主要目的是对 .NET 框架和 Visual Studio.NET 中的 SOAP 功能作一个总体的介绍
advertisement
热点推荐
· Java加密和数字签名编程快速入门
· 在VB6中用命令行为模式控制GUI动作
· Excel图表向导详解
· 浅析各种计算机病毒应对方法
· 2月16日软件精选 春节文章精彩回顾
[正文]

上一页  1 2 3 4 5  下一页


  样例:SOAP 受控代码事件

  下列代码演示如何在两个应用程序之间引发受控代码事件。客户端有一个本地对象,注册为接收远程对象的事件通知。客户端呼叫服务器对象时,就引发事件,产生对客户端本地对象的回叫。

  服务器端

zap.cs
using System;

namespace Zap
{
// 定义事件参数
public class GreetingEventArgs : EventArgs
{
public GreetingEventArgs(string greeting)
{
this.greeting = greeting;
}

public string greeting;
}

// 定义事件
public delegate void GreetingEvent(object sender,
GreetingEventArgs e);

// 定义服务
public class Waz : MarshalByRefObject
{
// 客户端将预定和取消预定此事件
public event GreetingEvent Greeting;

// 由客户端远程调用的方法
public void HelloMethod(string greeting)
{
Console.WriteLine("Received String {0}", greeting);

// 将字符串打包到 GreetingEventArgs 中
GreetingEventArgs e = new GreetingEventArgs(greeting);

// 引发事件
if (Greeting != null)
{
Greeting(this, e);
}
}
}
}

host.cs

using System;
using System.IO;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels.HTTP;

public class Host
{
public static void Main(string[] args)
{
// 手动加载 http 通道。
// 这也可以在 Remoting 配置文件中完成。
ChannelServices.RegisterChannel(new HTTPChannel(999));

// 注册服务器类型。
// 这也可以在 Remoting 配置文件中完成。
RemotingServices.RegisterWellKnownType(
"Zap", // 程序集
"Zap.Waz", // 完整的类名
"host/Waz.soap", // URI
WellKnownObjectMode.Singleton); // 对象模式

// 完成操作,等候用户退出
Console.WriteLine("主机已经准备好处理远程消息。");
Console.WriteLine("请按 ENTER 键退出");
String keyState = Console.ReadLine();
}
}

客户端
client.cs

using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels.HTTP;

using Zap;

// 将对象按引用本地封送到要引发的事件
public class Baz : MarshalByRefObject
{
public void GreetingHandler(object sender, GreetingEventArgs e)
{
Console.WriteLine("GreetingHandler 回叫: 问候: {0}\n",
e.greeting);
}
}

public class Client
{
public static void Main(String[] args)
{
Baz baz = new Baz();

// 这也可以在 Remoting 配置文件中完成。

// 注册 HTTP 通道
ChannelServices.RegisterChannel(new HTTPChannel(0));

// 获取 SOAP URL 代理
Waz waz = (Waz)Activator.GetObject(
typeof(Waz),
"http://localhost:999/host/Waz.soap"
);


// 预定事件: 通过 SOAP 进行
waz.Greeting += new GreetingEvent(baz.GreetingHandler);

for (int i = 0; i < 5; i++)
{
// 通过 SOAP 向 waz 发送
waz.HelloMethod("Bill" + " " + i);
}

// 取消预定事件: 通过 SOAP 进行
waz.Greeting -= new GreetingEvent(baz.GreetingHandler);
}
}

  Makefile

makefile

all: Host.exe Zap.dll Client.exe

Host.exe: Host.cs
csc /r:System.Runtime.Remoting.dll Host.cs

Zap.dll: Zap.cs
csc /t:library -out:Zap.dll Zap.cs

Client.exe: Zap.dll Client.cs
csc /r:System.Runtime.Remoting.dll /r:Zap.dll Client.cs

  在一个窗口中启动 host.exe 文件,然后在另一个窗口中启动 client.exe 文件。您将会看到事件被引发回到客户端。

  这是诸多 .NET Remoting 应用程序中的一个小例子。.NET Remoting 提供了网络上的完全 CLR 受控代码类型系统,它还是优秀的 SOAP 服务器和客户端,因为它完全符合 SOAP 1.1 规范。

上一页  1 2 3 4 5  下一页

发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
相关内容焦点新闻
  • 五种常见的ASP.NET安全缺陷
  • ADO.NET2.0的十大新特性
  • 使用ADO.NET的最佳实践
  • .NET Web应用框架构建模式
  • .NET框架中基于角色的安全性
  • 中兴携手阿尔卡特 全球逐鹿CDMA
  • 用友总裁王文京:誓将ERP变成“大众消费”
  • 香港消费者委员会:数码相机最贵未必最好
  • 外电称中兴正评估西门子手机业务 或能并购
  • 国信办督战八大行业灾难备份 将出台国家标准
  • 中国IT企业走进欧盟 搭第六框架计划直通车
  • 美邦银行用户注意 警惕新型“钓鱼”邮件
  • 微软三年时间磨出新IE 具有更强大安全性能
  • Advertisement