.NET分布式编程——C#篇
今天,诸如企业编程、分布式编程、n 层和可扩展性等流行词汇出现在每一个产品的宣传中。
所以, 中分布式开发的细微区别,就不能从字面上考虑这些术语,而应该考虑
这些特殊词汇的真实含义和上下文环境。而且,由于这本书主要是一本“操作指南”,所以,
清楚地理解为什么要分布应用程序以及如何设计一个分布式应用是非常重要的。在本章结尾
提出了五项原则, 平台及其他平台上进行分布式开发。
最后,为了了解分布式编程的历史,本章回顾了原有的分布式开发模型,以及这些旧模型被
新模型取代的原因。如同您将要看到的,
需要花费很长时间。
分布式编程概述
什么是分布式编程?现在几乎很少有人再敢问这个问题。这个术语现在是如此普及,以至于
去询问它的含义会让人觉得非常尴尬。而其他人则认为没有必要再去询问这个术语的含义。
当我在按照惯例让学生定义分布式编程时,却很少能得到相同的答案。
分布式编程的特点是让几个物理上独立的组件作为一个单独的系统协同工作。在这里,“物
理上独立的组件”可能指多个 CPU,或者更普遍的是指网络中的多台计算机。分布式编程
可用于解决很多类型的问题,从预测天气到购买图书。作为分布式编程的核心,它做了如下
的假定:如果一台计算机能够在 5 秒钟内完成一项任务,那么 5 台计算机以并行的方式一起
工作时就能在 1 秒钟内完成一项任务。
当然,分布式编程不会如此简单。问题就在于“以并行方式协同工作”,很难让网络中的 5
台计算机高效协作。实际上,要达到如此高效,应用软件必须经过特殊设计。对此可以举一
个只有一匹马拉车的例子。马是强大的动物,但是从力量与重量之比来说,蚂蚁要比马强壮
很多倍(这里仅假设强壮 10 倍)。这样,如果聚集了与一匹马质量相同的一堆蚂蚁并利用它
们来工作,则可以拉动 10 倍于一匹马所能拉的物质。这是一个非常好的分布负载示例。这
种计算是合理的,但让数百万的蚂蚁身上都套着细小的缰绳去拉动货物却是不现实的。 应用程序的分层
通过马与蚂蚁的类比说明,分布式计算提出几台计算机协同工作的问题。这也是将应用程序
分解为几个可被分布式处理的任务的问题。幸运的是,我们可以利用从以前的应用程序中学
到的知识。经过这些年的发展,可以清楚地了解到大多数业务应用程序是由 3 个主要逻辑部
分构成:表示逻辑,业务逻辑和数据源逻辑。
●表示逻辑。表示逻辑是应用程序的一部分,终端用户可以通过它输入订单、查找用户信息和查看业务报表。对于用户来
说,这部分逻辑就是应用程序。
●业务逻辑。这部分是应用程序的中心,开发人员将在这里花费大部分的时间和精力。它包括定义业务运行方式的业务规
则。例如,业务逻辑规定客户何时收到折扣、如何计算运费以及订单上所必需的信息。
●数据源逻辑。这部分逻辑用于保存将来可能用到的订单、客户信息以及其他一些信息。幸运的是,SQL Server和Oracl
e 等数据库产品会实现大部分工作。不过您仍然需要设计数据层以及检索数据所使用的查询。
设计任何商业应用程序的首要之处是将应用程序的各个部分逻辑划分为不同的层次。换句话
说,不能将业务逻辑代码与表示逻辑代码混在一起。然而,不要想当然地认为每一层必须运
行在单独的机器上或单独的进程中。除此之外,每一层的代码只能通过定义良好的界面与另
一层的代码进行交互。典型的情况是在独立的代码库(DLLs)中从物理上实现某些层。
分布式设计的 5 个原则
分层结构允许在不影响其他层的情况下修改某一层的实现。同时,它也允许将来从物理上灵
活地分隔各个层。但是,正如下面紧接着的部分中所述,不应该轻易决定在独立进程或机器
上执行每一层。如果您决定对某一层进行分布处理,那么必须对它进行特殊的分布设计。令
人迷惑的是,某些设计策略实际上与传统的面向对象原则相矛盾。为弄清这些问题,这一部
分阐述了几项用于有效分布应用程序的原则以及使用这些原则的理由。
原则1:保守分布
对于分布式编程的书籍来说,这个原则看起来让人有些惊奇。然而,这项原则却是基于计算
中一个简单且不可否认的事实:调用不同进程上对象的方法要比调用进程内对象的方法慢数
百倍;将对象移动到网络中的另一台计算机上,这种方法调用又会慢数十倍。
那什么时候才应当进行分布式处理呢?以前的观点是只有必须进行分布时才这样做。但是您可能想了解更多的细节,所以让我们从数据层开始考虑几个示例。通常,应用的数据库运行
在独立的专用服务器上——换句话说,它相对于其他层是分布式的。这样做有几个很好的理
由:
●数据库软件复杂而昂贵,而且通常需要高性能的硬件,所以分布数据库软件的多个副本将导致开销太大。
●数据库可
NET分布式编程 来自淘豆网m.daumloan.com转载请标明出处.