`
deepfuture
  • 浏览: 4413023 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
博客专栏
073ec2a9-85b7-3ebf-a3bb-c6361e6c6f64
SQLite源码剖析
浏览量:80136
1591c4b8-62f1-3d3e-9551-25c77465da96
WIN32汇编语言学习应用...
浏览量:70372
F5390db6-59dd-338f-ba18-4e93943ff06a
神奇的perl
浏览量:103608
Dac44363-8a80-3836-99aa-f7b7780fa6e2
lucene等搜索引擎解析...
浏览量:286603
Ec49a563-4109-3c69-9c83-8f6d068ba113
深入lucene3.5源码...
浏览量:15056
9b99bfc2-19c2-3346-9100-7f8879c731ce
VB.NET并行与分布式编...
浏览量:67825
B1db2af3-06b3-35bb-ac08-59ff2d1324b4
silverlight 5...
浏览量:32293
4a56b548-ab3d-35af-a984-e0781d142c23
算法下午茶系列
浏览量:46075
社区版块
存档分类
最新评论

VB.NET并行与分布式编程(8)-net 分布式计算环境

 
阅读更多

更多请看

 http://msdn.microsoft.com/zh-cn/library/system.runtime.remoting.aspx

一、Remoting基础

什么是Remoting,简而言之,我们可以将其看作是一种分布式处理方式。从微软的产品角度来看,可以说Remoting就是DCOM的一种升级,它改善了很多功能,并极好的融合到.Net平台下。Microsoft® .NET Remoting 提供了一种允许对象通过应用程序域与另一对象进行交互的框架。这也正是我们使用Remoting的原因。为什么呢?在Windows操作系统中,是将应用程序分离为单独的进程。这个进程形成了应用程序代码和数据周围的一道边界。如果不采用进程间通信(RPC)机制,则在一个进程中执行的代码就不能访问另一进程。这是一种操作系统对应用程序的保护机制。然而在某些情况下,我们需要跨过应用程序域,与另外的应用程序域进行通信,即穿越边界。

二、Remoting的基本工作方式

首先,客户端通过Remoting,访问通道以获得服务端对象,再通过代理解析为客户端对象。这就提供一种可能性,即以服务的方式来发布服务器对象。远程对象代码可以运行在服务器上(如服务器激活的对象和客户端激活的对象),然后客户端再通过Remoting连接服务器,获得该服务对象并通过序列化在客户端运行。

在Remoting中,对于要传递的对象,设计者除了需要了解通道的类型和端口号之外,无需再了解数据包的格式。但必须注意的是,客户端在获取服务器端对象时,并不是获得实际的服务端对象,而是获得它的引用。这既保证了客户端和服务器端有关对象的松散耦合,同时也优化了通信的性能。

1、Remoting的两种通道

Remoting的通道主要有两种:Tcp和Http。在.Net中,System.Runtime.Remoting.Channel中定义了IChannel接口。IChannel接口包括了TcpChannel通道类型和Http通道类型。它们分别对应Remoting通道的这两种类型。

TcpChannel类型放在名字空间System.Runtime.Remoting.Channel.Tcp中。Tcp通道提供了基于Socket的传输工具,使用Tcp协议来跨越Remoting边界传输序列化的消息流。TcpChannel类型默认使用二进制格式序列化消息对象,因此它具有更高的传输性能。HttpChannel类型放在名字空间System.Runtime.Remoting.Channel.Http中。它提供了一种使用Http协议,使其能在Internet上穿越防火墙传输序列化消息流。默认情况下,HttpChannel类型使用Soap格式序列化消息对象,因此它具有更好的互操作性。通常在局域网内,我们更多地使用TcpChannel;如果要穿越防火墙,则使用HttpChannel。

2、远程对象的激活方式

在访问远程类型的一个对象实例之前,必须通过一个名为Activation的进程创建它并进行初始化。这种客户端通过通道来创建远程对象,称为对象的激活。在Remoting中,远程对象的激活分为两大类:服务器端激活和客户端激活。

(1) 服务器端激活,又叫做WellKnow方式,很多又翻译为知名对象。为什么称为知名对象激活模式呢?是因为服务器应用程序在激活对象实例之前会在一个众所周知的统一资源标识符(URI)上来发布这个类型。然后该服务器进程会为此类型配置一个WellKnown对象,并根据指定的端口或地址来发布对象。.Net Remoting把服务器端激活又分为SingleTon模式和SingleCall模式两种。

SingleTon模式:此为有状态模式。如果设置为SingleTon激活方式,则Remoting将为所有客户端建立同一个对象实例。当对象处于活动状态时,SingleTon实例会处理所有后来的客户端访问请求,而不管它们是同一个客户端,还是其他客户端。SingleTon实例将在方法调用中一直维持其状态。举例来说,如果一个远程对象有一个累加方法(i=0;++i),被多个客户端(例如两个)调用。如果设置为SingleTon方式,则第一个客户获得值为1,第二个客户获得值为2,因为他们获得的对象实例是相同的。如果熟悉Asp.Net的状态管理,我们可以认为它是一种Application状态。

SingleCall模式:SingleCall是一种无状态模式。一旦设置为SingleCall模式,则当客户端调用远程对象的方法时,Remoting会为每一个客户端建立一个远程对象实例,至于对象实例的销毁则是由GC自动管理的。同上一个例子而言,则访问远程对象的两个客户获得的都是1。我们仍然可以借鉴Asp.Net的状态管理,认为它是一种Session状态。

(2) 客户端激活。与WellKnown模式不同,Remoting在激活每个对象实例的时候,会给每个客户端激活的类型指派一个URI。客户端激活模式一旦获得客户端的请求,将为每一个客户端都建立一个实例引用。SingleCall模式和客户端激活模式是有区别的:首先,对象实例创建的时间不一样。客户端激活方式是客户一旦发出调用的请求,就实例化;而SingleCall则是要等到调用对象方法时再创建。其次,SingleCall模式激活的对象是无状态的,对象生命期的管理是由GC管理的,而客户端激活的对象则有状态,其生命周期可自定义。其三,两种激活模式在服务器端和客户端实现的方法不一样。尤其是在客户端,SingleCall模式是由GetObject()来激活,它调用对象默认的构造函数。而客户端激活模式,则通过CreateInstance()来激活,它可以传递参数,所以可以调用自定义的构造函数来创建实例。

三、NET 远程处理的MSDN资料

在运行于不同进程(无论是在同一台计算机上,还是在相隔数千英里的多台计算机上)中的对象之间建立通信是一个常见的开发目标,特别是在生成大范围的分布式应用程序时。在过去,实现这一目标不仅需要对通信流任一端的对象有深入的了解,还需要了解许多低级别的协议、应用程序编程接口和配置工具或文件。简而言之,这曾是一项非常复杂的任务,需要具备丰富的经验,同时还要投入大量的精力。

.NET Framework 使这一切变得不再复杂,它利用了几种可用的通信方法,即使您只具备很少的协议和编码知识,也可以轻松、快速地完成此任务。因此,无论您是需要快速开发一个 Web 应用程序,还是需要用更多时间来生成一个涉及许多计算机或操作系统、使用多种协议和序列化优化的重要企业级应用程序,.NET Framework 都能支持您的方案。虽然跨进程通信仍是一项十分复杂的任务,但现在这项任务可以交由 .NET Framework 来处理。

通过 .NET 远程处理,客户端应用程序可以使用同一台计算机(或其网络上其他任何可用的计算机)上其他进程中的对象。您还可以在同一进程中使用 .NET 远程处理与其他应用程序域进行通信。.NET 远程处理为进程间通信提供了一种抽象的方法,能够将可远程处理的对象从特定的服务器和客户端进程或是从特定的通信机制中分离出来。因此,它可以灵活、轻松地进行自定义。您可以用一种通信协议来替换另一种通信协议,或用一种序列化格式来替换另一种序列化格式,而不用重新编译客户端或服务器。此外,远程处理系统假定没有特殊的应用程序模型。您可以从 Web 应用程序、控制台应用程序、Windows 服务等您要使用的几乎任何应用程序进行通信。远程处理服务器还可以是任何类型的可执行应用程序。任何应用程序都可以承载远程处理对象,进而为其计算机或网络上的任意客户端提供服务。

更多资料在http://msdn.microsoft.com/zh-cn/library/72x4h507.aspx

 

分享到:
评论

相关推荐

    vb.net中高级篇.rar_.net_vb net_vb_net_vb.net_vb.net_

    VB.NET是Microsoft开发的一种编程语言,它是Visual Basic的.NET版本,设计用于构建Windows应用程序、Web应用程序和分布式系统。本资源“vb.net中高级篇.rar”显然聚焦于VB.NET的进阶概念和技术,对于想要深入理解和...

    VB.NET应用集锦例程源代码

    《VB.NET应用集锦例程源代码》是一个包含多个VB.NET工程实例的资源包,旨在帮助学习者深入了解和掌握VB.NET编程技术。这个资源包包括了五个不同的项目源代码,覆盖了VB.NET的基础到进阶应用,对于计算机专业的学生...

    浅谈.NET下的多线程和并行计算.pdf

    - **优化算法设计**:选择适合并行化的算法,比如MapReduce等分布式计算模型。 #### 六、结论 综上所述,多线程与并行计算已经成为现代软件开发的重要组成部分,尤其是在.NET框架中。通过理解和掌握这些技术,开发...

    Oracle数据库管理系统在VB.net下的实现.pdf

    Oracle数据库管理系统在VB.NET下的实现主要涉及两个核心部分:Oracle数据库的特点和VB.NET集成开发环境的优势,以及如何利用这两者来构建高校教材信息管理系统。 Oracle数据库管理系统是全球广泛使用的关系型数据库...

    Visual.Basic.2010&.NET.4高级编程(第6版)

    《Visual.Basic.2010&.NET.4高级编程(第6版)》是一本专为那些希望继续使用Visual Basic进行.NET框架4.0环境下高级编程的开发者量身定制的指南。这本书针对从VB6.0过渡到VB2010的程序员,旨在帮助他们充分利用...

    Canal_V1_openchannelflow_OpenNet_openchannel_Windows编程_VB_

    OpenNet是一个开放源代码的网络计算框架,它可以与VB.Net集成,用于构建分布式计算环境。在Open Channel Flow的背景下,OpenNet可以帮助我们处理复杂的流体动力学模型,进行实时计算和数据交换。通过OpenNet,我们...

    .net framework 3.5-4.8

    .NET Framework是微软开发的一个全面的开发平台,用于构建、运行基于Windows的应用...从面向对象编程、并行计算到分布式服务,.NET Framework为开发者提供了全面的解决方案,是Windows平台上不可或缺的开发工具之一。

    .NET Framework 4.0.30319

    - CLR支持多种编程语言,如C#、VB.NET、F#和C++/CLI,确保它们能在相同的运行时环境中无缝交互。 3. **类型系统和元数据**: - .NET Framework引入了一种强类型系统,确保代码的类型安全,减少错误。 - 元数据是...

    .Net framwwork 4.0

    VB.NET则引入了多线程并行计算的支持,利用了多核处理器的优势,提高了程序执行速度。 其次,.NET Framework 4.0中的Common Language Runtime (CLR)进行了优化,提高了内存管理效率,降低了垃圾回收的开销。同时,...

    .net 4.0 64位

    .NET Framework 4.0是微软开发的一个重要软件开发平台,主要用作构建、运行使用C#、VB.NET、F#等编程语言编写的Windows应用程序。64位版本的.NET Framework 4.0是为了在64位操作系统上提供高效能和优化的运行环境。...

    Microsoft .NET Framework 4.0运行库

    8. **并发和并行计算**:.NET Framework 4.0引入了Task Parallel Library(任务并行库),使得开发者可以更容易地利用多核处理器进行并发编程。此外,还有Parallel LINQ(PLINQ)提供并行查询的支持。 9. **垃圾...

    .NET面试大全【经典,值得珍藏】

    2. VB.NET:另一种流行的.NET语言,语法与VB6类似,但支持.NET框架的所有功能。 3. F#:函数式编程语言,也可用于.NET开发,适合处理数据科学和并行计算任务。 三、ASP.NET 1. ASP.NET Web Forms:基于控件的模型,...

    精通.Net核心技术原理与构架+精通.NET核心技术高级特性

    1. **LINQ(Language Integrated Query)**: 语言集成查询,使得在C#和VB.NET中编写查询更加简洁,支持对各种数据源的查询。 2. **异步编程(Asynchronous Programming)**: 利用async/await关键字实现非阻塞I/O,...

    Pro VB 2010 and the .NET 4.0 Platform .zip

    新特性包括改进的垃圾收集机制、并行计算的Task Parallel Library (TPL)、用于异步编程的`async`/`await`关键字(虽然在VB 2010中还未引入,但为后续版本奠定了基础)以及WCF、WPF和ASP.NET的更新。 3. **语言集成...

    并行计算的介绍

    - **分布式计算**:将任务分散到网络中的多台计算机上进行处理。 - **共享内存模型**:所有处理器共享一个统一的内存空间。 - **消息传递模型**:处理器之间通过发送消息来交换数据和同步操作。 - **负载均衡**:...

    Advanced .NET Programming

    它提供了丰富的类库、编译器支持以及运行时环境,使得开发者能够用多种语言(如C#、VB.NET)编写跨平台的应用程序。 ### 2. 高级编程技术 - **泛型编程**:泛型允许创建类型安全的组件,可以重用于不同数据类型,...

    Microsoft .NET Framework 4.0 Beta 1

    10. **编程模型**:引入了Task Parallel Library (TPL),支持多核处理器环境下的并行计算,使开发者能够轻松地编写高性能的并发代码。 总的来说,.NET Framework 4.0 Beta 1的发布为开发者带来了许多新特性,提升了...

    .net frameork4.0.rar

    CLR还支持多种编程语言,如C#、VB.NET、C++/CLI等,使它们能够无缝交互,实现了跨语言的互操作性。 该版本引入了许多新特性,其中包括: 1. **并行计算支持**:.NET Framework 4.0引入了Task Parallel Library ...

    .NET Framework4.0 安装文件

    它包括公共语言运行时(CLR)和类库,这些类库支持多种编程语言,如C#、VB.NET、C++/CLI等。4.0版本在3.5 SP1的基础上进行了大量的改进,为开发者提供了更强大的工具和功能。 二、主要特性 1. **并行计算**: .NET ...

    Microsoft .NET Framework 4(独立安装程序)

    2. **C# 4.0 和 VB.NET 10.0**:这两个编程语言随着.NET Framework 4一同发布,引入了新的特性,如动态类型、命名参数、可空引用类型和多目标框架支持。 3. **WCF(Windows Communication Foundation)**:这个组件...

Global site tag (gtag.js) - Google Analytics