楼主: keaide

.Net的精髓-XML和SOAP

[复制链接]
论坛徽章:
456
ITPUB年度最佳版主
日期:2011-12-28 15:24:18马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14ITPUB年度最佳版主
日期:2014-02-19 10:05:27优秀写手
日期:2013-12-18 09:29:09ITPUB社区千里马徽章
日期:2013-06-09 10:15:34ITPUB年度最佳版主
日期:2013-01-30 17:30:25版主9段
日期:2012-07-03 02:21:03
11#
 楼主| 发表于 2006-11-13 16:47 | 只看该作者
.NET Framework包括通用语言运行环境、Framework类库和Active Server Pages+

  有了理想目标和相应可编程Internet软件结构,.NET这样的一个协同计算环境的具体实现还必然需要一系列的软件产
品支撑,因此微软的.NET还包括一个产品的集合。这个集合包含以下组成部分:

  .NET平台

  这一平台建立在XML和因特网标准协议的基础上,包含了.NET的基础结构和基础工具,为开发新型的互动协作软件提供
了一个先进的体系结构模型。

  .NET系列产品和服务

  如MSN.NET、OFFICE.NET、Visual Studio.NET、bCentral.NET等。

  第三方厂商的.NET服务

  建立在.NET平台和产品上的面向不同应用领域的具体服务。

  从上面对.NET的简单分析可以看出,在对新技术和IT产业的推动上,无论如何,微软还是功不可没的。但与此同时,
也可以推测出,如果.NET一旦成为事实,那么对于其他非应用软件厂商而言,可能会产生巨大的竞争压力。

  .NET的技术特征
  .NET包括4个重要特点,一是软件变服务,二是基于XML的共同语言,三是融合多种设备和平台,四是新一代的人机界
面。这四个特点基本上覆盖了.NET的技术特征。

  软件变服务

  史蒂夫·鲍尔默在谈到软件服务时说道,“今天的软件产品仅仅是一张光盘,用户购买软件,亲自安装、管理和维
护。但是软件服务是来自因特网的服务,它替用户安装、更新和跟踪这些软件,并让它们和用户一同在不同的机器间漫
游。它为用户存储自己的信息和参考资料。这些就是软件和软件服务各自不同的风格。”


  Orchestration可视化编程工具产生基于XML的XLANG代码,它和BizTalk服务器、.NET Framework,以及Visual
Studio.NET都曾是Windows DNA 2000战略的重要部分。

  伴随着ASP产业的兴起,软件正逐渐从产品形式向服务形式转化,这是整个IT行业的大势所趋。在.NET中,最终的软件
应用是以Web服务的形式出现并在Internet发布的。Web服务是一种包装后的可以在Web上发布的组件,.NET通过WSDL协议来
描述和发布这种Web服务信息,通过DISCO协议来查找相关的服务,通过SOAP协议进行相关的简单对象传递和调用。

  微软的.NET战略意味着:微软公司以及在微软平台上的开发者将会制造服务,而不是制造软件。在未来几年之内,微
软将陆续发布有关.NET的平台和工具,用于在因特网上开发Web服务。那时,工作在.NET上的用户、开发人员和IT工作人员
都不再购买软件、安装软件和维护软件。取而代之的是,他们将定制服务,软件会自动安装,所有的维护和升级也会通过
互联网进行。

使用道具 举报

回复
论坛徽章:
456
ITPUB年度最佳版主
日期:2011-12-28 15:24:18马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14ITPUB年度最佳版主
日期:2014-02-19 10:05:27优秀写手
日期:2013-12-18 09:29:09ITPUB社区千里马徽章
日期:2013-06-09 10:15:34ITPUB年度最佳版主
日期:2013-01-30 17:30:25版主9段
日期:2012-07-03 02:21:03
12#
 楼主| 发表于 2006-11-13 16:47 | 只看该作者
基于XML的共同语言

  XML是从SGML语言演化而来的一种标记语言。作为元语言,它可以定义不同种类应用的数据交换语言。在.NET体系结构
中,XML作为一种应用间无缝接合的手段,用于多种应用之间的数据采集与合并,用于不同应用之间的互操作和协同工作。
具体而言,.NET通过XML语言定义了简单对象访问协议(SOAP)、Web服务描述语言(WSDL)、Web服务发现协议
(DISCO)。SOAP协议提供了在无中心分布环境中使用XML交换结构化有类型数据的简单轻量的机制。WSDL协议定义了服务
描述文档的结构,如类型、消息、端口类型、端口和服务本身。DISCO协议定义了如何从资源或者资源集合中提取服务描述
文档、相关服务发现算法等。

  融合多种设备和平台

  随着Internet逐渐成为一个信息和数据的中心,各种设备和服务已经或正在接入和融入Internet,成为其中的一部
分。.NET谋求与各种Internet接入设备和平台的一体化,主要关注在无线设备和家庭网络设备及相关软件、平台方面。

  新一代的人机界面

  新一代人机界面主要体现在“智能与互动”两个方面。.NET包括通过自然语音、视觉、手写等多种模式的输入和表现
方法;基于XML的可编辑复合信息架构——通用画布;个性化的信息代理服务;使机器能够更好地进行自动处理的智能标记
等技术。

使用道具 举报

回复
论坛徽章:
456
ITPUB年度最佳版主
日期:2011-12-28 15:24:18马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14ITPUB年度最佳版主
日期:2014-02-19 10:05:27优秀写手
日期:2013-12-18 09:29:09ITPUB社区千里马徽章
日期:2013-06-09 10:15:34ITPUB年度最佳版主
日期:2013-01-30 17:30:25版主9段
日期:2012-07-03 02:21:03
13#
 楼主| 发表于 2006-11-13 16:48 | 只看该作者
.NET的平台及框架是基于微软软件工业基础的又一次升级和演化。然而,.NET还是要尽力保证Windows系统及系列产品
和.NET能够融为一体,尽量在微软公司原有的软件资产基础上,使.NET继续成为Internet的中心。

.NET有多少创新
  .NET主要组成部分及其作用介绍如下:

  1) Windows.NET

  Windows.NET是融入.NET技术的Windows,它将紧密地整合了.NET的一系列核心构造模块,为数字媒体及应用间协同工
作提供支持,是微软公司的下一代Windows桌面平台。

  2) .NET Framework

  .NET Framework的目的是便于开发商更容易地建立网络应用程序和Web服务,它的关键特色是提供了一个多语言组件开
发和执行的环境。从层次结构来看,.NET Framework又包括三个主要组成部分:通用语言运行环境(Common Language
Runtime)、服务框架(Services Framework)、上层的两类应用模板——面向Web的网络应用程序模板(Web Forms或Web
Services)和Windows应用程序模板(Win Forms)。

  其中通用语言运行环境在组件运行时,负责管理内存分配、启动和中止线程和进程、强化安全系数,同时还调整任何
该组件涉及到的其他组件的附件配置。在通用语言运行环境上是服务框架,它为开发人员提供了一套能够被任何现代编程
语言调用的、统一的面向对象、异步、层次结构的可扩展类库,包括集合、输入/输出、字符串、图画、网络、线程、全球
化、安全加密、数据库访问、调试相关服务等类库。在服务框架之上是两种应用类型的模板,一类是传统的Windows应用程
序模板,另一类是基于ASP+的Web网络应用程序模板。其中ASP+以一组控件和体系结构的方式提供了一个Web应用模型,
由.NET框架提供的类库构建而成,通过它可以简化Web应用的实现过程。

  3) .NET企业服务器

  在微软宣称的“第三代互联网”中,.NET企业服务器是企业集成和管理所有基于Web的各种应用的基础,它提供企业未
来开展电子商务的高可靠性、高性能、高可伸缩性以及高可管理性。.NET企业服务器的构成异常庞大而复杂,它共包括8个
各司其职的服务器,如表所示。

  表:.net企业服务器功能简述

.net企业服务器 功能描述
application center 2000 部署和管理基于windows2000之上的web应用
biztalk server 2000 用于企业间交换商务信息
commerce server 2000 用于快速创建在线电子商务
exchange 2000 提供基于windows 2000的通信和协作功能
host integration server 2000 为主机系统的组件集成提供方便
internet security &&
acceleration server 2000 主要解决企业应用安全性和可管理性的问题
mobile information 2001 server 为移动解决方案提供可靠而具伸缩性的平台
sql server 2000 则提供完全的数据库和数据分析解决方案

  其中,目前被关注最多的是BizTalk Server 2000,它提供了企业间进行电子商务所需的自动、集成的业务处理工具和
架构。BizTalk Server 2000利用XML作为企业内部及企业间文档传输的数据格式,可以屏蔽平台、操作系统不同的差异,
使商业系统的集成成为可能。它主要完成的功能有:企业间可靠的文档交换、ERP应用集成、商业流程自动化定制、管理和
监控等等。

使用道具 举报

回复
论坛徽章:
456
ITPUB年度最佳版主
日期:2011-12-28 15:24:18马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14ITPUB年度最佳版主
日期:2014-02-19 10:05:27优秀写手
日期:2013-12-18 09:29:09ITPUB社区千里马徽章
日期:2013-06-09 10:15:34ITPUB年度最佳版主
日期:2013-01-30 17:30:25版主9段
日期:2012-07-03 02:21:03
14#
 楼主| 发表于 2006-11-13 16:48 | 只看该作者
4) 模块构建服务

  模块构建服务(Building Block Services)是.NET平台中的核心网络服务集合,它主要包括以下几个组成部分:
Internet XML通信,使Web站点变成灵活的服务来交换和处理数据;Internet XML数据空间,在Web商提供安全的和可编程
的XML存储空间;Internet动态更新,为快速开发和动态配置应用提供服务;Internet日程安排,集成工作、社会和私人的
日历;Internet身份认证,提供从口令、钱包到生理数据等多级身份认证手段,还有Internet 目录服务和Internet即时信
息传递等服务。

  5) Orchestration

  Orchestration是一种基于XML的面向应用的软件集成和自动化处理技术。它的目标是尽量不受时间、组织、应用及个
人的限制,来最大程度和最好地把集成技术和自动处理技术接合起来,以便商业事务能够交互、动态、可靠地进行下去。
Orchestration有三个基本要求:处理与执行过程分离,即整个处理并不一定非要同执行的细节及途径绑定起来;动态处
理,即随着数据不同及交换的变化,整个操作过程必须随时动态更新改变;“Any to Any”集成,即整个处理过程不能对
参与的平台、应用及协议等作出限制。.NET的BizTalk Orchestration是上述技术的一个实现,它包括一个可视化的设计环
境、一套捆绑的工具和一个Orchestration引擎,用于业务流程处理、管理和调试。

  6) Visual Studio.NET

  Visual Studio.NET是基于XML的编程工具和环境,它便于快速开发符合.NET体系的软件服务,使其在独立设备、企业
数据中心和因特网之间的传送更加容易。

.NET与同类产品的比较
  针对.NET计划的推出,业界早已有多种说法,其中一个最重要的观点是.NET并没有发明什么先进的技术,而只是多家
思想的拷贝和整合。从某种角度来看,这的确不无道理。下面我们就SUN的Java&&J2EE体系结构和.NET的框架作一简单的对
比来看一看两者的相似性。


  图1 .NET Framework及其组成

  从图1和图2的对比中,我们可以看出,对于.NET框架的每一部分,Java&&J2EE 体系结构多少都有所表现,此外,.NET
计划中的很多产品也能从其竞争对手,如SUN、ORACLE、IBM、HP的产品中发现一些相似痕迹。因此的确不能说.NET首创了
多少多少创新,更合适的说法是它对很多公司的思想和自己的工业基础作了较好的整合,并有所创新。


  图2 Java&&J2EE 体系结构

  虽然如此,但微软的.NET计划及思想还是为整个信息产业和未来软件世界的发展提供了一个可供分析参考的标靶,因
为技术本身很多是相互融和和渗透的,所有技术争论并不能决定未来,只有通过市场才能最后决定什么是真正的互联网未来

使用道具 举报

回复
论坛徽章:
456
ITPUB年度最佳版主
日期:2011-12-28 15:24:18马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14ITPUB年度最佳版主
日期:2014-02-19 10:05:27优秀写手
日期:2013-12-18 09:29:09ITPUB社区千里马徽章
日期:2013-06-09 10:15:34ITPUB年度最佳版主
日期:2013-01-30 17:30:25版主9段
日期:2012-07-03 02:21:03
15#
 楼主| 发表于 2006-11-13 16:49 | 只看该作者
飞鹰编译,www.aspcool.com版权所有,转载时请保留此信息。


在我的文章《C#基于接口的编程》中,我谈论了使用抽象的接口作为编程范例的各种优点。分离接口和执行过程,现在肯定不是新的思想,实际上它是com编程的核心。也许基于接口的在显著的特征是多态性和即时检查(RTTI).RTTI允许客户端程序在运行时访问对象。例如,如果一个对象执行IAthlete接口,一个客户端程序能够查找然后绑定这个接口用于调用和定位另一个接口。

查询接口是强大的,是com+的基础。同时,它对能够在一个对象上执行接口导向又是极端有用的和明确必要的,这是.net一个特别重要的概念。在介绍这个概念之前,让我们再回顾一些信息关于在.net中功能性和分布的基础元素--集合。

在COM(+),组件展开的逻辑和物理单元是一个.dll文件。在.net平台中,展开的基础单元是集合。与COM(+)组件不同的是一个.net或许是有多个文件组成,尽管它被看作是一个单一的何不可分割的功能和执行单元。一个集合文件也是自描述的,它包含被称之为中间语言的管制代码和附加的元数据,这个元数据给想绑定到这些代码的客户提供丰富的信息。.net的每个集合是著名的清单数据结构。清单包含下列信息:

1、姓名和版本信息

2、其它集合的参考信息

3、安全边界的信息。

4、集合中所有类型的信息


毫无疑问,集合清单类似于COM(+)的类型库。清单有在类型库中不存在的优点。这个超过了这一课的范围,我们将在这篇文章的第二部分进行讲述。被利用.net集合的客户端程序将要使用清单。因为每个集合包含元数据的许多信息,客户程序在运行时能够得到集合的内容。这个过程就叫做reflection.Reflection不仅能够查询基础类,而且运行时能动态调用方法,甚至于输出能够直接执行的IL代码。在你的代码中有两种方法来使用reflection,Reflection API 和 System.Reflection 名字空间。System.reflection是极端负责的,它包含将近40个类。在文章的其他部分,我将介绍reflection的基础,如何用它区查询集合类,方法,以及运行时调用方法的类型。为了示范在.net中的reflection名字空间,我将用下面的"reflection"类来说明:


// Reflect.cs

namespace CSharpReflectionSamples

{

using System;


/// <summary>

/// The reflect class will be used to demonstrate the basics of

/// .NET reflection. This class contains private member vars,

/// a constructor, a sample method, and sample accessor methods.

/// </summary>

public class Reflect

{

// private member variables

private int intTest;

private string strTest;


// constructor

public Reflect(int intData)

{

// constructor logic

intTest = intData;

}


// basic method

public int AMethod(int intData)

{

return intData*intData;

}


public string S

{

get

{

// return member var

return strTest;

}

set

{

// set member var

S = value;

}

}

}

}

使用道具 举报

回复
论坛徽章:
456
ITPUB年度最佳版主
日期:2011-12-28 15:24:18马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14ITPUB年度最佳版主
日期:2014-02-19 10:05:27优秀写手
日期:2013-12-18 09:29:09ITPUB社区千里马徽章
日期:2013-06-09 10:15:34ITPUB年度最佳版主
日期:2013-01-30 17:30:25版主9段
日期:2012-07-03 02:21:03
16#
 楼主| 发表于 2006-11-13 16:49 | 只看该作者
正如你所看到的那样,这个类包含一个构造器,一个例子方法,一个例子存取方法(得到和设置)。在System.Reflaction 名字空间核心是一个名为type的类。这个type类型包含许多方法和到许多类信息的一种登录入口。Type类参考可以靠typeof或者GetType的方法得到。下表列举了一些类类型的方法,包括示例GetTypeof 和typeof方法的代码段。

Name

Description


GetFields()

Returns an array of FieldInfo objects describing the fields in the class.


GetMethods()

Returns an array of MethodInfo objects describing the methods of the class.


GetConstructors()

Returns all the constructors for an object.


GetInterfaces()

Gets all interfacs implemented by the type.


GetMembers()

Gets all the members (fields, methods, events, etc.) of the current type.


InvokeMember()

Invokes a member of the current type.


BaseType

Gets a Type object for the type's immediate base type.


IsAbstract

Returns true if the type is abstract.


IsClass

Returns true if the type is a class.


IsEnum

Returns true if the type is an enum.


IsNestedPublic

Returns true if a type is nested within another and is public.


Namespace

Retrieves the namespace of the type.




namespace CSharpReflectionSamples

{

using System;

using System.Reflection;


/// <summary>

/// Summary description for Client.

/// </summary>

public class Client

{

public static void Main()

{

// the typeof operator and the GetType method

// both return a 'Type' object.

Type type1 = typeof(Reflect);

Reflect objTest = new Reflect(0);

Type type2 = objTest.GetType();


Console.WriteLine("Type of objTest is {0}", type2);


}

}

}

使用道具 举报

回复
论坛徽章:
456
ITPUB年度最佳版主
日期:2011-12-28 15:24:18马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14ITPUB年度最佳版主
日期:2014-02-19 10:05:27优秀写手
日期:2013-12-18 09:29:09ITPUB社区千里马徽章
日期:2013-06-09 10:15:34ITPUB年度最佳版主
日期:2013-01-30 17:30:25版主9段
日期:2012-07-03 02:21:03
17#
 楼主| 发表于 2006-11-13 16:50 | 只看该作者
飞鹰编译,www.aspcool.com版权所有,转载时请保留此信息。


一旦得到类对象,上表中所列的方法就能被叫来调用reflaction.第一个例子将检查在CSharpReflectionSamples.Reflect类中的得到方法的信息。第一块代码用来定义类中的每个方法的名字,第二块代码将阐述得到方法信息。向下面所展示的,我们将用一个数组来保存用GetMethod()方法返回的方法信息。MethodInfo类包含信息为方法的名字,不管是否是虚拟的,它都是可见的,等等。


namespace CSharpReflectionSamples

{

using System;

using System.Reflection;


/// <summary>

/// Summary description for Client.

/// </summary>

public class Client

{

public static void Main()

{

// the typeof operator and the GetType method

// both return a 'Type' object.

Type type1 = typeof(Reflect);

Reflect objTest = new Reflect(0);

Type type2 = objTest.GetType();


Console.WriteLine("Type of objTest is {0}", type2);

Console.WriteLine();

// pause

Console.ReadLine();


// reflect method information

MethodInfo[] minfo = type1.GetMethods();

// iterate through methods

foreach (MethodInfo m in minfo)

{

Console.WriteLine(m);

}

Console.WriteLine();

}

}

}


下一个例子将展示动态得到对象有可能接触的每个构造器的信息。类似与上面的例子,我们将返回一个包含每个构造器的信息ConstructorInfo对象。


namespace CSharpReflectionSamples

{

using System;

using System.Reflection;


/// <summary>

/// Summary description for Client.

/// </summary>

public class Client

{

public static void Main()

{

// the typeof operator and the GetType method

// both return a 'Type' object.

Type type1 = typeof(Reflect);

Reflect objTest = new Reflect(0);

Type type2 = objTest.GetType();


Console.WriteLine("Type of objTest is {0}", type2);

Console.WriteLine();

// pause

Console.ReadLine();


// reflect constructors

ConstructorInfo[] cinfo = type1.GetConstructors();

// iterate through constructors

foreach (ConstructorInfo c in cinfo)

{

Console.WriteLine(c);

}

}

}

}

使用道具 举报

回复
论坛徽章:
456
ITPUB年度最佳版主
日期:2011-12-28 15:24:18马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14ITPUB年度最佳版主
日期:2014-02-19 10:05:27优秀写手
日期:2013-12-18 09:29:09ITPUB社区千里马徽章
日期:2013-06-09 10:15:34ITPUB年度最佳版主
日期:2013-01-30 17:30:25版主9段
日期:2012-07-03 02:21:03
18#
 楼主| 发表于 2006-11-13 16:50 | 只看该作者
最后一部分,也许是reflection名字空间中最激动人心的部分,是在运行时动态调用类方法。有两种方法,首先,我们将建立一个数组来存储参数,这些参数被构造器用来建造对象。第二,一个System.Object对象将对抗CreateInstance方法的对象。以得到想得到对象的例子。最后,当我们有了对象的资料,我们能够调用任何使用MethodParm数组的方法。下面是代码:


namespace CSharpReflectionSamples

{

using System;

using System.Reflection;


/// <summary>

/// Summary description for Client.

/// </summary>

public class Client

{

public static void Main()

{

// the typeof operator and the GetType method

// both return a 'Type' object.

Type type1 = typeof(Reflect);

Reflect objTest = new Reflect(0);

Type type2 = objTest.GetType();




// dynamic creation and invocation

// instantiate the Reflect object, passing

// a value of 1 to the constructor

object[] oConstructParms = new object[] {1};

object obj = Activator.CreateInstance(type1, oConstructParms);

// invoke method of reflect object

object[] oMethodParms = new object[] {17};

int intResult = (int)type1.InvokeMember("AMethod", BindingFlags.Default |

BindingFlags.InvokeMethod, null, obj, oMethodParms);

Console.WriteLine("Result of calling AMethod on {0} is {1}",

type1.Name, intResult);

// pause

Console.ReadLine();

}

}

}



这篇文章阐述了.net Reflaction的基础,在下一部分,我将和大家讨论进一步的话题,比如,动态发布中间语言,旗帜绑定,和中间语言原则。

使用道具 举报

回复
论坛徽章:
8
19#
发表于 2006-11-13 20:16 | 只看该作者
收藏一下子,最近可能会用到

使用道具 举报

回复
论坛徽章:
5
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44
20#
发表于 2006-11-14 10:23 | 只看该作者

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表