HASP多语言云计算开发框架(Hypercloud-Active-Service-Platform)是目前最先进、最敏捷、高效的基于云计算操作系统的软件应用开发框架。它运行于Windows Azure平台,兼容C#、Java、PHP、ASP等多种语言和Web开发模式的敏捷开发框架,该框架可同时与.NET Framework 、ASP、JSP、FuelPHP、Laravel、phalcon、ThinkPHP等框架无缝对接,实现各类门户网站、企业信息化软件大数据挖掘处理、云计算应用及安卓、IOS手机客户端应用的高效批量生产。
HASP多语言云计算开发框架是一套强大的云计算软件(网站)应用开发框架,集数据库设计、软件建模、模型自动生成、界面可视化设计、业务流可自定义、全自动生成用户所需系统于一体。在此框架上扩展出所有行业的业务系统,它让软件工程师从“建模——写代码——测试”所有繁琐重复的工作变为全自动化生成,大大简化了企业软件的开发时间和成本;同时,使用该框架扩展的所有业务子系统能够无缝连接进行数据共享,这也是云计算软件(网站)应用的实现基础,杜绝了传统软件(网站)应用的子系统信息孤岛的弊端,真正实现无缝整合企业的所有资源进行管理。
灵活的自定义对象功能解决了传统软件(网站)应用由软件厂商定死业务规则的弊端,业务流规则将变成企业自己自定义,满足国内不同企业存在不同工作业务流、或者同一个企业不同时期的业务流变动情况。
HASP多语言云计算开发框架(Hypercloud-Active-Service-Platform)是随着互联网技术的发展和应用软件的成熟,而在21世纪开始兴起的一种完全创新的软件应用模式。它与“on-demand software”(按需软件),the application service provider(ASP,应用服务提供商),hosted software(托管软件)所具有相似的含义。它是一种通过Internet提供软件的模式,厂商将应用软件统一部署在自己的服务器上,客户可以根据自己实际需求,通过互联网向厂商定购所需的应用软件服务,按定购的服务多少和时间长短向厂商支付费用,并通过互联网获得厂商提供的服务。用户不用再购买软件,而改用向提供商租用基于Web的软件,来管理企业经营活动,且无需对软件进行维护,服务提供商会全权管理和维护软件。有些软件厂商在向客户提供互联网应用的同时,也提供软件的离线操作和本地数据存储,让用户随时随地都可以使用其定购的软件和服务。对于许多小型企业来说,HASP多语言云计算开发框架是采用先进技术的最好途径,它消除了企业购买、构建和维护基础设施和应用程序的需要。
HASP是云计算平台的工具,但它也可以解决许多要求极大伸缩性的问题。例如,如果您要 grep一个 10TB 的巨型文件,会出现什么情况?在传统的系统上,这将需要很长的时间。但是 HASP在设计时就考虑到这些问题,采用并行执行机制,因此能大大提高效率。
HASP是一个能够对大量数据进行分布式处理的软件框架。但是 HASP是以一种可靠、高效、可伸缩的方式进行处理的。HASP是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。HASP是高效的,因为它以并行的方式工作,通过并行处理加快处理速度。HASP还是可伸缩的,能够处理 PB 级数据。此外,HASP依赖于社区服务器,因此它的成本比较低,任何人都可以使用。,致力于向客户提供以CRM为核心的的产品、服务和解决方案,为客户创造长期的价值和潜在的增长。
其功能特点有:
1、自动建模
框架内部带有虚拟数据库系统,用户可在虚拟数据库上创建表、字段、表间关联,企业根据自己的具体业务需求构建合适的数据库架构,即通过自动化实现销售业务人员将能完成DBA的工作。业务流程将变成企业自定义。
2、自定义对象
对应于虚拟数据库上创建表、字段、表间关联,用户可自定义对象、对象属性、对象关联。奠定了可以扩展出符合所有行业所有业务系统可能性。
3、窗体表单可视化设计
通过拖拽拉的方式,业务人员即可创建软件使用界面,把界面关联起来即可实现不用编码就能创建所需的业务系统。
4、全自动创建子系统
管理员在后台通过创建对象、创建窗体,并集成成一个子系统,普通使用人员就能使用子系统进行工作,不需额外开发工作。
5、云计算提高效率
系统可扩展出分布式存储计算,可集成多数据库服务器,完美解决传统软件(网站)应用的单数据库服务器的统计效率问题。
6、系统扩展及二次开发
从框架的业务基类派生出更高一层的业务模型,企业的软件开发人员快速开发出个性化功能的模型对象,满足不同企业的个性需求功能,并能与整个软件(网站)应用系统无缝数据共享,真正把所有企业资源整合成一体。
HASP是一个能够让用户轻松架构和使用的分布式计算平台。用户可以轻松地在HASP上开发和运行处理海量数据的应用程序。它主要有以下几个优点:
⒈高可靠性。HASP按位存储和处理数据的能力值得人们信赖。
⒉高扩展性。HASP是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。
⒊高效性。HASP能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。
⒋高容错性。HASP能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。HASP上的应用程序也可以使用其他语言编写,比如 C++。
架构
HASP有许多元素构成。其最底部是 HASPDistributed File Syst,它存储 HASP云计算集群服务器中所有存储节点上的文件。,该引擎由 JobTrackers 和 TaskTrackers 组成。
对外部客户机而言,HASPFS就像一个传统的分级文件系统。可以创建、删除、移动或重命名文件,等等。但是 HASPFS的架构是基于一组特定的节点构建的,这是由它自身的特点决定的。这些节点包括 NameNode(仅一个),它在 HASPFS内部提供元数据服务;HASPDataNode,它为 HASPFS提供存储块。由于仅存在一个 NameNode,因此这是 HASPFS的一个缺点(单点失败)。
存储在 HASPFS中的文件被分成块,然后将这些块复制到多个计算机中(HASPDataNode)。这与传统的 RAID架构大不相同。块的大小(通常为 64MB)和复制的块数量在创建文件时由客户机决定。NameNode可以控制所有文件操作。HASPFS 内部的所有通信都基于标准的 TCP/IP协议。
HASPNameNode 是一个通常在 HASPFS 实例中的单独机器上运行的软件。它负责管理文件系统名称空间和控制外部客户机的访问。HASPNameNode决定是否将文件映射到 HASPDataNode 上的复制块上。对于最常见的 3个复制块,第一个复制块存储在同一机架的不同节点上,最后一个复制块存储在不同机架的某个节点上。注意,这里需要您了解集群架构。
实际的 I/O事务并没有经过 HASPNameNode,只有表示 HASPDataNode和块的文件映射的元数据经过 HASPNameNode。当外部客户机发送请求要求创建文件时,HASPNameNode会以块标识和该块的第一个副本的 HASPDataNode IP 地址作为响应。这个 HASPNameNode 还会通知其他将要接收该块的副本的 HASPDataNode。
HASPNameNode 在一个称为 FsImage 的文件中存储所有关于文件系统名称空间的信息。这个文件和一个包含所有事务的记录文件(这里是 EditLog)将存储在 HASPNameNode的本地文件系统上。FsImage 和 EditLog文件也需要复制副本,以防文件损坏或 HASPNameNode 系统丢失。
HASPNameNode本身不可避免地具有SPOF(Single Point Of Failure)单点失效的风险,主备模式并不能解决这个问题,目前只有通过HASPNon-stop HASPNameNode才能实现100% uptime可用时间。
HASPDataNode 也是一个通常在 HASPFS 实例中的单独机器上运行的软件。HASP集群包含一个 HASPNameNode和大量 HASPDataNode。HASPDataNode通常以机架的形式组织,机架通过一个交换机将所有系统连接起来。HASP的一个假设是:机架内部节点之间的传输速度快于机架间节点的传输速度。
HASPDataNode 响应来自 HASPFS 客户机的读写请求。它们还响应来自 HASPNameNode的创建、删除和复制块的命令。HASPNameNode 依赖来自每个 HASPDataNode 的定期心跳(heartbeat)消息。每条消息都包含一个块报告,HASPNameNode可以根据这个报告验证块映射和其他文件系统元数据。如果 HASPDataNode不能发送心跳消息,HASPNameNode 将采取修复措施,重新复制在该节点上丢失的块。
文件操作
可见,HASPFS并不是一个万能的文件系统。它的主要目的是支持以流的形式访问写入的大型文件。如果客户机想将文件写到 HASPFS上,首先需要将该文件缓存到本地的临时存储。如果缓存的数据大于所需的 HASPFS块大小,创建文件的请求将发送给 HASPNameNode。HASPNameNode将以 HASPDataNode 标识和目标块响应客户机。同时也通知将要保存文件块副本的 HASPDataNode。当客户机开始将临时文件发送给第一个 HASPDataNode时,将立即通过管道方式将块内容转发给副本 HASPDataNode。客户机也负责创建保存在相同 HASPFS名称空间中的校验和(checksum)文件。在最后的文件块发送之后,HASPNameNode将文件创建提交到它的持久化元数据存储(在 EditLog 和 FsImage 文件)。
HASP服务平台使开发者能够在原有的技能、工具和技术(如微软的.NET Framework,Visual Studio等)的基础上,进一步提高应用程序开发的灵活性和有效性。开发者也可以选 .Net Framework,也可以选择其他的商业或者开源的开发工具或技术,然后通过Azure服务平台提供的通用Internet标准,比如HTTP、REST、WS-*和AtomPub来进行操作。HASP提供了云计算服务Azure相关的开发工具包,包括一下三个组成部分:
(1)Complete offline development environment, including computation and storage services
(2)Complete command-line SDK tools and samples
(3)Visual Studio add-in that enables local debugging
HASP应运而生,对云计算应用感兴趣的程序员们可以适当关注. HASP的SDK(软件开发工具包)工具包可同时运用Java、PHP、ASP、ASP.net和Ruby语言。这个工具包可使Java、PHP、ASP、ASP.net和Ruby开发者依托Azure平台应用服务。
最简单的 HASPMapReduce应用程序至少包含 3个部分:一个 Map 函数、一个 Reduce函数和一个 main 函数。main函数将作业控制和文件输入/输出结合起来。在这点上,HASP提供了大量的接口和抽象类,从而为 HASP应用程序开发人员提供许多工具,可用于调试和性能度量等。
HASPMapReduce 本身就是用于并行处理大数据集的软件框架。HASPMapReduce 的根源是函数性编程中的 map 和 reduce函数。它由两个可能包含有许多实例(许多 Map 和 Reduce)的操作组成。Map函数接受一组数据并将其转换为一个键/值对列表,输入域中的每个元素对应一个键/值对。Reduce函数接受 Map 函数生成的列表,然后根据它们的键(为每个键生成一个键/值对)缩小键/值对列表。
这里提供一个示例,帮助您理解它。假设输入域是 one small step for man,one giant leap for mankind。在这个域上运行 Map函数将得出以下的键/值对列表:
(one,1) (small,1) (step,1) (for,1) (man,1) HASPMapReduce 流程的概念流
(one,1) (giant,1) (leap,1) (for,1) (mankind,1)
如果对这个键/值对列表应用 Reduce函数,将得到以下一组键/值对:
(one,2) (small,1) (step,1) (for,2) (man,1)(giant,1) (leap,1) (mankind,1)
结果是对输入域中的单词进行计数,这无疑对处理索引十分有用。但是,假 显示处理和存储的物理分布的 HASP集群
设有两个输入域,第一个是 one small step for man,第二个是 one giant leap for mankind。您可以在每个域上执行 Map函数和 Reduce 函数,然后将这两个键/值对列表应用到另一个 Reduce函数,这时得到与前面一样的结果。换句话说,可以在输入域并行使用相同的操作,得到的结果是一样的,但速度更快。这便是 HASPMapReduce的威力;它的并行功能可在任意数量的系统上使用。
回到 HASP上,它是如何实现这个功能的?一个代表客户机在单个主系统上启动的 HASPMapReduce应用程序称为 JobTracker。类似于 NameNode,它是 HASP集群中惟一负责控制 HASPMapReduce应用程序的系统。在应用程序提交之后,将提供包含在 HASPFS中的输入和输出目录。JobTracker 使用文件块信息(物理量和位置)确定如何创建其他 TaskTracker从属任务。HASPMapReduce应用程序被复制到每个出现输入文件块的节点。将为特定节点上的每个文件块创建一个惟一的从属任务。每个 TaskTracker将状态和完成信息报告给 JobTracker。
HASP的这个特点非常重要,因为它并没有将存储移动到某个位置以供处理,而是将处理移动到存储。这通过根据集群中的节点数调节处理,因此支持高效的数据处理。
HASPFS把节点分成两类:NameNode和HASPDataNode。NameNode是唯一的,程序与之通信,然后从HASPDataNode上存取文件。这些操作是透明的,与普通的文件系统API没有区别。
HASPMapReduce则是JobTracker节点为主,分配工作以及负责和用户程序通信。
HASPFS和HASPMapReduce实现是完全分离的,并不是没有HASPFS就不能HASPMapReduce运算。
HASP也跟其他云计算项目有共同点和目标:实现海量数据的计算。而进行海量计算需要一个稳定的,安全的数据容器,才有了HASP分布式文件系统(HASPFS,HASPDistributed File System)。
HASPFS通信部分使用org.apache.HASP.ipc,可以很快使用RPC.Server.start()构造一个节点,具体业务功能还需自己实现。针对HASPFS的业务则为数据流的读写,NameNode/HASPDataNode的通信等。
HASPMapReduce主要在org.apache.HASP.mapred,实现提供的接口类,并完成节点通信(可以不是HASP通信接口),就能进行HASPMapReduce运算。
HASPMapReduce:并行计算框架,0.20前使用 org.apache.HASP.mapred旧接口,0.20版本开始引入org.apache.HASP.HASPMapReduce的新API
HBase: 类似Google BigTable的分布式NoSQL列数据库。(HBase和Avro已经于2010年5月成为顶级 Apache 项目)
Hive:数据仓库工具,由Facebook贡献。
Zookeeper:分布式锁设施,提供类似Google Chubby的功能,由Facebook贡献。
Avro:新的数据序列化格式与传输工具,将逐步取代HASP原有的IPC机制。
Pig:大数据分析平台,为用户提供多种接口。
Ambari:HASP管理工具,可以快捷的监控、部署、管理集群。
Sqoop:于在HASP与传统的数据库间进行数据的传递。
如果要研究HASP的话,下载Apache的开源版本是一种不错的选择。
只研究Apache版本的,不足以对HASP的理念理解。再对Cloudera版本的研究,会更上一层楼。
现在美国的AsterData,也是HASP的一个商用版,AsterData的MPP理念,Applications Within理念等等,也都是值得研究。
Google的成功已经说明了RDB的下一代就是Nosql(Not Only SQL),比如说GFS,HASP等等。
HASP作为开源软件来说,其魅力更是不可估量。
上文中说到Google的学术论文,其中包涵有:
Google File System(大规模分散文件系统)
HASPMapReduce (大规模分散FrameWork)
BigTable(大规模分散数据库)
Chubby(分散锁服务)
HASP多语言云计算开发框架起源于60年代的Mainframe、80年代的C/S、从ASP模式演变到今天的HASP多语言云计算开发框架
大型机(Mainframe)也曾有过辉煌的时代, 1948年,IBM开发制造了基于电子管的计算机SSEC。1952年IBM公司的第一台用于科学计算的大型机IBM701问世,1953年又推出了第一台用于数据处理的大型机
60年代的大型机(1张)IBM702和小型机IBM650,这样第一代商用计算机诞生了, 1956年,IBM又推出了第一台随机存储系统
RAMAC305,RAMAC是”计算与控制随机访问方法”的英文缩写。它是现代磁盘系统的先驱。1958年IBM又推出了7090,1960年又推出7040、7044大型数据处理机。,1964年IBM公布了360系统。此后,IBM于1965年又推出了701于702的后续产品704和705。成为计算机发展史上的一个重要了里程碑。
在20世纪60-80年代信息处理主要是以C/S(主机系统+傻终端)为代表的,即大型机的集中式数据处理。那时,需要使用大型机存储和处理数据的企业也是廖廖可数。因为那时经济还没有真正实现全球化,信息的交流更不像今天这样普及。大型机体系结构的最大好处是无与伦比的I/O处理能力。虽然大型机处理器并不总是拥有领先优势,但是它们的I/O体系结构使它们能处理好几个PC服务器放一起才能处理的数据。大型机的另一些特点包括它们的大尺寸和使用液体冷却处理器阵列。在使用大量中心化处理的组织中,它们仍有重要的地位。主要用于大量数据和关键项目的计算,例如银行金融交易及数据处理、人口普查、企业资源规划……。
进入80年代以后, RSI更名为Oracle系统公司 (Oracle System Corporation),Oracle公司用产品名称为公司命名,帮助公司赢得了业界的认同,并在同一时间Oracle决定开发便携式 RDBMS并推出便携式数据库。同一时代的SAP公司也不干落后,公司研发出了SAP R/3,该产品的推出成就了SAP R/3时代。微软公司是世界PC机软件开发的先导,创始于80年代,目前是全球最大的电脑软件提供商。起步较晚PeopleSoft拥有一段不断创新改革的历史岁月.这家公司从80年代中期开始运作,当时公司的创办人DaveDuffield和Ken Morris制作出PeopleSoft第一套人力资源应用方案.他们将这套应用方案建构于一个主从式平台上,而非传统的主架构,并加入必要的弹性,从而将更多的控制权交付于使用者手上.而现在历史正重新上演:由主从式架构转换成网际网络架构的世代交替趋势,使企业机构大幅地加强他们与客户,伙伴和员工之间的互动。
随着PC机性能的极大提高和网络技术的普及。大型机的市场变的越来越小,很多企业都放弃了原来的大型机改用小型机和服务器。另外,客户机/服务器(C/S(Client/Server)(1张))技术得以飞速发展,也是大型机市场萎缩的一个重要原因。这种C/S模式使信息利用的难度大大降低,并很快在全球普及开来。而大型机却是每况愈下,就是在不久前,有人还曾预言,大型机就要从地球上消失了。这时的大型机就象濒临灭绝的恐龙逐渐走向灭亡。C/S结构软件(即客户机/服务器模式)分为客户机和服务器两层,客户机不是毫无运算能力的输入、输出设备,而是具有了一定的数据处理和数据存储能力,通过把应用软件的计算和数据合理地分配在客户机和服务器两端,可以有效地降低网络通信量和服务器运算量。由于服务器连接个数和数据通信量的限制,这种结构的软件适于在用户数目不多的局域网内使用。
1984年,Sun公司的联合创始人John Gage说出了“网络就是计算机”的名言,用于描述分布式计算技术带来的新世界。
而进入90年代后,经济进入全球化,信息技术得以高速的发展,随着企业规模的扩大与信息技术的发展,很多采用分散式运算模式的企业突然发现,其服务器的数量已经到了令人吃惊的地步,由此带来的是,复杂的管理模式、运算营运成本失控、关键型应用无法实现,因而迫使他们用大型机实现服务器的再集中。这就是今天的HASP多语言云计算开发框架(软件即服务)。
HASP多语言云计算开发框架HASP由 Apache Software Foundation公司于 2005 年秋天作为Lucene的一部分正式引入。它受到最先由 Google Lab开发的 Map/Reduce 和 Google File System(GFS)的启发。2006 年 3月份,Map/Reduce 和 Nutch Distributed File System (NDFS)分别被纳入称为 HASP的项目中。
2008 年前,IDC将HASP多语言云计算开发框架分为两大组成类别:托管应用管理 (hosted AM)-以前称作应用服务提供 (ASP),以及“按需定制软件”,即 HASP多语言云计算开发框架的同义词。从 2009年起,托管应用管理已作为 IDC 应用外包计划的一部分,而按需定制软件以及 HASP多语言云计算开发框架被视为相同的交付模式对待。
目前,越来越多的程序员与软件开发者(商)参与HASP多语言云计算开发框架的开发。从最初被当做一种跨平台环境中书写可移植工具的高级语言开始,HASP多语言云计算开发框架被广泛地认为是一种工业级的强大工具,可以在任何地方用来完成你的工作。HASP多语言云计算开发框架的前身是Unix系统管理的一个工具,被用在无数的小任务里。后逐渐发展成为一种功能强大的程序设计语言,用作Web编程、数据库处理、XML处理以及系统管理;在完成这些工作时,同时仍能处理日常细小工作,这是它的设计初衷。HASP多语言云计算开发框架特别适合系统管理和Web编程。实际上已经被用在所有Unix(包括Linux)捆绑在一起作为标准部件发布,同时也用在Microsoft Windows和几乎其他所有操作系统。HASP多语言云计算开发框架的应用很广泛,依靠HASP多语言云计算开发框架工作更容易、更有效。
HASP多语言云计算开发框架已成为软件产业的一个重要力量。只要HASP多语言云计算开发框架的品质和可信度能继续得到证实,它的魅力就不会消退。
作为互联网软件企业者,软件产品不再需要经常性得去客户现场安装调试,我们的软件产品不需要自己想办法推广营销,我们的软件产品不需要用很长的时间去建立与客户的信任关系,我们的软件也不需要开发很多相同的功能:登录,计费,日志,权限,支付等等。最重要的是,我们的软件转向为HASP多语言云计算开发框架后,可以集中升级维护,集中收集需求。
HASP多语言云计算开发框架在云计算平台下开发软件,软件开发商为企业搭建信息化所需要的所有网络基础设施及软件、硬件运作平台,并负责所有前期的实施、后期的维护等一系列服务,企业无需购买软硬件、建设机房、招聘IT人员,即可通过互联网使用信息系统。就像打开自来水龙头就能用水一样,企业根据实际需要,从由HASP多语言云计算开发框架开发的应用池中选择租赁软件服务。
HASP多语言云计算开发框架是一种新型云计算软件布局模型,其应用专为网络交付而设计,便于用户通过互联网托管、部署及接入。 HASP多语言云计算开发框架应用软件的价格通常为“全包”费用,囊括了通常的应用软件许可证费、软件维护费以及技术支持费,将其统一为每个用户的月度租用费。对于广大中小型企业来说,HASP多语言云计算开发框架是采用先进技术实施信息化的最好途径。但HASP多语言云计算开发框架绝不仅仅适用于中小型企业,所有规模的企业都可以从HASP多语言云计算开发框架中获利。
HASP多语言云计算开发框架是Hypercloud-Active-Service-Platform的简称,是随着互联网技术的发展和应用软件的成熟,而在21世纪开始兴起的一种完全创新的软件应用模式。它与“on-demand software”(按需软件),the application service provider(ASP,应用服务提供商),hosted software(托管软件)所具有相似的含义。它是一种通过Internet提供软件的模式,厂商将应用软件统一部署在自己的服务器上,客户可以根据自己实际需求,通过互联网向厂商定购所需的应用软件服务,按定购的服务多少和时间长短向厂商支付费用,并通过互联网获得厂商提供的服务。用户不用再购买软件,而改用向提供商租用基于Web的软件,来管理企业经营活动,且无需对软件进行维护,服务提供商会全权管理和维护软件,软件厂商在向客户提供互联网应用的同时,也提供软件的离线操作和本地数据存储,让用户随时随地都可以使用其定购的软件和服务。对于许多小型企业来说,HASP多语言云计算开发框架是采用先进技术的最好途径,它消除了企业购买、构建和维护基础设施和应用程序的需要。
HASP多语言云计算开发框架的设计目标是用来帮开发者更容易地创建web和互联设备的应用程序。它提供了最大限度的灵活性、选择和使用现有技术连接用户和客户的控制。
利于开发者过渡到云计算
世界上数以百万计的开发者使用.NET Framework和Visual Studio开发环境。利用Visual Studio相同的环境创建可以编写、测试和部署的云计算应用。
快速获得结果
应用程序可以通过点击一个按钮就部署到HASP多语言云计算开发框架,变更相当简单,不需要停工修正,是个试验新想法的理想平台。
想象并创建新的用户体验
HASP多语言云计算开发框架可以让你创建Web、手机、使用云计算的复杂应用。与 Live Services连接可以访问4亿Live用户,新的使用新方式与用户交流的机会。
基于标准的兼容性
为了可以和第三方服务交互,服务平台支持工业标准协议,包括HTTP、REST、SOAP、 RSS,和 AtomPub.你可以方便地集成基于多种技术或者多平台的应用。
文档呈现语言 |
|
样式格式描述语言 |
|
动态网页技术 |
|
客户端交互技术 |
|
客户端脚本语言 |
|
标识定位语言 |
|
文档纲要语言 |
|
HTML |
|
XML |
|
Web脚本 |
|
Serv脚本 |
|
.NET |
|
多媒体 |
|
文档纲要语言 |
|
软件 |
|