<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_winlinglin</title><subtitle type="text"/><id>http://feed.cnblogs.com/blog/u/46805/rss</id><updated>2010-08-28T00:32:51Z</updated><author><name>Wil</name><uri>http://www.cnblogs.com/winlinglin/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/winlinglin/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/46805/rss"/><entry><id>http://www.cnblogs.com/winlinglin/archive/2010/08/28/1810628.html</id><title type="text">中间件</title><summary type="text">中间件 1. 什么是中间件?中间件（middleware）是一种独立的系统软件或服务程序, 它在操作系统、网络和数据库之上，应用软件的下层，总的作用是为处于自己上层的应用软件提供运行与开发的环境，帮助用户灵活、高效地开发和集成复杂的应用软件.2. 为什么使用中间件？具体地说，中间件屏蔽了底层操作系统的复杂性，使程序开发人员面对一个简单而统一的开发环境，减少程序设计的复杂性，将注意力集中在自己的业务...</summary><published>2010-08-28T00:33:00Z</published><updated>2010-08-28T00:33:00Z</updated><author><name>Wil</name><uri>http://www.cnblogs.com/winlinglin/</uri></author><link rel="alternate" href="http://www.cnblogs.com/winlinglin/archive/2010/08/28/1810628.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/winlinglin/archive/2010/08/28/1810628.html"/><content type="html">&lt;h1 &gt;&lt;a id="ctl04_TitleUrl"  href="http://www.cnblogs.com/slime/archive/2009/11/09/1598763.html"&gt;中间件&lt;/a&gt; &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;div &gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;p&gt;&lt;strong&gt;1. 什么是中间件?&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;中间件（middleware）是一种独立的系统软件或服务程序, 它在操作系统、网络和数据库之上，应用软件的下层，总的作用是为处于自己上层的应用软件提供运行与开发的环境，帮助用户灵活、高效地开发和集成复杂的应用软件.&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;2. 为什么使用中间件？&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;具体地说，中间件屏蔽了底层操作系统的复杂性，使程序开发人员面对一个简单而统一的开发环境，减少程序设计的复杂性，将注意力集中在自己的业务上，不必再为程序在不同系统软件上的移植而重复工作，从而大大减少了技术上的负担。中间件带给应用系统的，不只是开发的简便、开发周期的缩短，也减少了系统的维护、运行和管理的工作量，还减少了计算机总体费用的投入。&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;3. 中间件的分类&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;中间件所包括的范围十分广泛，针对不同的应用需求涌现出多种各具特色的中间件产品。但至今中间件还没有一个比较精确的定义，因此，在不同的角度或不同的层次上，对中间件的分类也会有所不同。由于中间件需要屏蔽分布环境中异构的操作系统和网络协议，它必须能够提供分布环境下的通讯服务，我们将这种通讯服务称之为平台。基于目的和实现机制的不同，我们将平台分为以下主要几类： &lt;br /&gt;远程过程调用（Remote Procedure Call）&lt;br /&gt;面向消息的中间件（Message-Oriented Middleware）&lt;br /&gt;对象请求代理（Object Request Brokers）&lt;br /&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;4. 远程过程调用（Remote Procedure Call）&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;远程过程调用是一种广泛使用的分布式应用程序处理方法。一个应用程序使用RPC来&amp;#8220;远程&amp;#8221;执行一个位于不同地址空间里的过程，并且从效果上看和执行本地调用相同。事实上，一个RPC应用分为两个部分：server和client。server提供一个或多个远程过程；client向server发出远程调用。server和client可以位于同一台计算机，也可以位于不同的计算机，甚至运行在不同的操作系统之上。它们通过网络进行通讯。相应的stub和运行支持提供数据转换和通讯服务，从而屏蔽不同的操作系统和网络协议。在这里RPC通讯是同步的。采用线程可以进行异步调用。 &lt;br /&gt;在RPC模型中，client和server只要具备了相应的RPC接口，并且具有RPC运行支持，就可以完成相应的互操作，而不必限制于特定的server。因此，RPC为client/server分布式计算提供了有力的支持。同时，远程过程调用RPC所提供的是基于过程的服务访问，client与server进行直接连接，没有中间机构来处理请求，因此也具有一定的局限性。比如，RPC通常需要一些网络细节以定位server；在client发出请求的同时，要求server必须是活动的等等。&lt;br /&gt;实现：&lt;br /&gt;XML-RPC&lt;br /&gt;Remote Python Call&lt;br /&gt;Facebook's Thrift&lt;br /&gt;Distributed Ruby&lt;br /&gt;Action Message Format&lt;br /&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;5. 对象请求代理（Object Request Brokers）&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;1990年底，对象管理集团OMG首次推出对象管理结构OMA(Object Management Architecture)，对象请求代理（Object Request Broker）是这个模型的核心组件。它的作用在于提供一个通信框架，透明地在异构的分布计算环境中传递对象请求。CORBA规范包括了ORB的所有标准接口。1991年推出的CORBA 1.1 定义了接口描述语言OMG IDL和支持Client/Server对象在具体的ORB上进行互操作的API。CORBA 2.0 规范描述的是不同厂商提供的ORB之间的互操作。&lt;br /&gt;对象请求代理(ORB)是对象总线，它在CORBA规范中处于核心地位，定义异构环境下对象透明地发送请求和接收响应的基本机制，是建立对象之间client/server关系的中间件。ORB使得对象可以透明地向其他对象发出请求或接受其他对象的响应，这些对象可以位于本地也可以位于远程机器。ORB拦截请求调用，并负责找到可以实现请求的对象、传送参数、调用相应的方法、返回结果等。client对象并不知道同server对象通讯、激活或存储server对象的机制，也不必知道server对象位于何处、它是用何种语言实现的、使用什么操作系统或其他不属于对象接口的系统成分。&lt;br /&gt;值得指出的是client和server角色只是用来协调对象之间的相互作用，根据相应的场合，ORB上的对象可以是client，也可以是 server，甚至兼有两者。当对象发出一个请求时，它是处于client角色；当它在接收请求时，它就处于server角色。大部分的对象都是既扮演 client角色又扮演server角色。另外由于ORB负责对象请求的传送和server的管理，client和server之间并不直接连接，因此，与RPC所支持的单纯的Client/Server结构相比，ORB可以支持更加复杂的结构。&lt;br /&gt;实现&lt;br /&gt;CORBA（Orbix，ORBit，OmniORB）&lt;br /&gt;Java Remote Method Invocation&lt;br /&gt;Ice&lt;br /&gt;.NET Remoting&lt;br /&gt;Windows Communication Foundation&lt;br /&gt;DCOM&lt;br /&gt;&#xD;
&lt;p&gt;RMI&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;6. 面向消息的中间件（Message-Oriented Middleware）&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;MOM指的是利用高效可靠的消息传递机制进行平台无关的数据交流，并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型，它可在分布环境下扩展进程间的通信，并支持多通讯协议、语言、应用程序、硬件和软件平台。&lt;br /&gt;通讯程序可在不同的时间运行:程序不在网络上直接相互通话，而是间接地将消息放入消息队列，因为程序间没有直接的联系。所以它们不必同时运行。消息放入适当的队列时，目标程序甚至根本不需要正在运行；即使目标程序在运行，也不意味着要立即处理该消息。&lt;br /&gt;对应用程序的结构没有约束:在复杂的应用场合中，通讯程序之间不仅可以是一对一的关系，还可以进行一对多和多对一方式，甚至是上述多种方式的组合。多种通讯方式的构造并没有增加应用程序的复杂性。&lt;br /&gt;程序与网络复杂性相隔离: 程序将消息放入消息队列或从消息队列中取出消息来进行通讯，与此关联的全部活动，比如维护消息队列、维护程序和队列之间的关系、处理网络的重新启动和在网络中移动消息等是MOM的任务，程序不直接与其它程序通话，并且它们不涉及网络通讯的复杂性。&lt;br /&gt;实现&lt;br /&gt;WebSphere MQ &lt;br /&gt;Sun Java Message Service (JMS) &lt;br /&gt;MSMQ&lt;br /&gt;BEA MessageQ&lt;br /&gt;Extensible Messaging and Presence Protocol (XMPP)&lt;br /&gt;Advanced Message Queuing Protocol&lt;/div&gt;&lt;img src="http://www.cnblogs.com/winlinglin/aggbug/1810628.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/winlinglin/archive/2010/08/28/1810628.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/winlinglin/archive/2008/11/21/1338724.html</id><title type="text">C++对象模型</title><summary type="text">很久之前就想总结一下C++的内存使用机制。直到现在刚考完试之制，去实习之前，才有时间完成这事。1.程序使用内存区一个程序占用的内存区一般分为5种：（1）全局、静态数据区：存储全局变量及静态变量（包括全局静态变量和局部静态变量）（2）常量数据区：存储程序中的常量字符串等。（3）代码区：存储程序的代码。（4）栈：存储自动变量或者局部变量，以及传递的函数参数等。（5）堆：存储动态产生的数据。 在处理内存...</summary><published>2008-11-21T14:40:00Z</published><updated>2008-11-21T14:40:00Z</updated><author><name>Wil</name><uri>http://www.cnblogs.com/winlinglin/</uri></author><link rel="alternate" href="http://www.cnblogs.com/winlinglin/archive/2008/11/21/1338724.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/winlinglin/archive/2008/11/21/1338724.html"/></entry><entry><id>http://www.cnblogs.com/winlinglin/archive/2008/11/19/1336337.html</id><title type="text">范式间的区别（具体例子）</title><summary type="text">由于最近要做毕业设计了，所以加强了一下数据库设计的基础知识，主要是范式的应用。在此作些总结吧。首先是基础概念，也就是术语：（1） 实体（entity）：就是实际应用中要用数据描述的事物，一般是名词。（2） 字段（fields）：就是一项数据，也就是我们平常所说的&amp;#8220;列&amp;#8221;。（3） 记录（record）：一个实体的一个实例所特有的相关数据项的集合，也就是我们平常所说的&amp;#8220...</summary><published>2008-11-18T17:41:00Z</published><updated>2008-11-18T17:41:00Z</updated><author><name>Wil</name><uri>http://www.cnblogs.com/winlinglin/</uri></author><link rel="alternate" href="http://www.cnblogs.com/winlinglin/archive/2008/11/19/1336337.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/winlinglin/archive/2008/11/19/1336337.html"/></entry><entry><id>http://www.cnblogs.com/winlinglin/archive/2008/11/15/1334037.html</id><title type="text">SQL Server锁机制 （转）</title><summary type="text">[导读: 各种大型数据库所采用的锁的基本理论是一致的，但在具体实现上各有差别。SQL Server更强调由系统来管理锁。在用户有SQL请求时，系统分析请求，自动在满足锁定条件和系统性能之间为数据库加上适当的锁，同时系统在运行期间常常自动进行优化处理，实行动态加锁。对于一般的用户而言，通过系统的自动锁定管理机制基本可以满足使用要求，但如果对数据安全、数据库完整性和一致性有特殊要求，就需要了解SQL ...</summary><published>2008-11-15T03:27:00Z</published><updated>2008-11-15T03:27:00Z</updated><author><name>Wil</name><uri>http://www.cnblogs.com/winlinglin/</uri></author><link rel="alternate" href="http://www.cnblogs.com/winlinglin/archive/2008/11/15/1334037.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/winlinglin/archive/2008/11/15/1334037.html"/></entry></feed>
