WCF 第十二章 对等网 使用PNRP注册名字

WCF可以使用PNRP在一个网状网络上寻找其他参与者。在它的实现,WCF对等信道从使用PNRP中抽象出来所以一个应用程序不需要直接与PNRP打交道。然而,一些对等应用程序可能想要在WCF对等信道外面自己发布并解决标识符(对等名字)。不幸的是,在.NET Framework3.5之前没有任何方式从托管代码中注册PNRP名字。.NET Framework3.5中添加了一个新的叫做System.Net.Peer命名空间来使用托管代码使用PNRP结构。

System.Net.Peer

正如之前提到的,PNRP用来发布并解决对等名称。为了发布一个对等名称,我们首先需要创建类PeerName的一个实例。PeerName确定了标识符(对等名字)以及标识符是安全的还是不安全的。我们使用PeerNameRegistration类来注册对等名字。为了实现这个我们需要设置PeerName和Port属性然后调用Start方法。Stop方法用来反注册对等名字。列表12.5系那是注册一个对等名字的例子。

注意 应用程序拥有对等名字
应用程序拥有一个对等名字并注册它。如果应用程序因为一些原因退出了,对等名字会被反注册。这意味着应用程序为了解决一个对等名字必须一致运行。

列表12.5 发布一个对等名字

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.PeerToPeer;

namespace PublishName
{
    class Program
    {
        static void Main(string[] args)
        {
            PeerName peerName = new PeerName("PeerChat", PeerNameType.Unsecured);
            PeerNameRegistration pnReg = new PeerNameRegistration();
            pnReg.PeerName = peerName;
            pnReg.Port = 8080;
            pnReg.Comment = "My Registration";
            pnReg.Data = Encoding.UTF8.GetBytes("Some data to include with my registration.");
            pnReg.Start();
            Console.WriteLine("Hit [Enter] to exit.");
            Console.ReadLine();
            pnReg.Stop();
        }
    }
}

  列表12.6显示了如果解析列表12.5中显示的同样的对等名字。在这个例子中我们使用PeerNameResolver类来获得一个PeerNameRecord实例集合。我们接下来遍历这个集合并输出包含在每条记录中的信息。

列表12.6 解析一个对等名字

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.PeerToPeer;
using System.Net;

namespace ResolveName
{
    class Program
    {
        static void Main(string[] args)
        {
            PeerNameResolver resolver = new PeerNameResolver();
            PeerName peerName = new PeerName("0.PeerChat");
            PeerNameRecordCollection results = resolver.Resolve(peerName);
            PeerNameRecord record;

            for (int i = 0; i < results.Count; i++)
            {
                record = results[i];
                Console.WriteLine("Record #{0}", i);
                if (record.Comment != null)
                {
                    Console.WriteLine(record.Comment);
                }
                Console.WriteLine("Data: ");
                if (record.Data != null)
                {
                    Console.WriteLine(Encoding.ASCII.GetString(record.Data));
                }
                else
                {
                    Console.WriteLine();
                }
                Console.WriteLine("Endpoints:");
                foreach (IPEndPoint endpoint in record.EndPointCollection)
                {
                    Console.WriteLine("Endpoint:{0}", endpoint);
                }
                Console.WriteLine();
            }
            Console.WriteLine("Hit [Enter] to exit.");
            Console.ReadLine();
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的公寓报修管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本公寓报修管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此公寓报修管理系统利用当下成熟完善的Spring Boot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。公寓报修管理系统有管理员,住户,维修人员。管理员可以管理住户信息和维修人员信息,可以审核维修人员的请假信息,住户可以申请维修,可以对维修结果评价,维修人员负责住户提交的维修信息,也可以请假。公寓报修管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:公寓报修管理系统;Spring Boot框架;MySQL;自动化;VUE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值