Component/Service Oriented Software System Development Thinking

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

1. Current Component/Service Oriented Software System Development Model
2. Looking into Component (Coming later)
3. Looking outside Component (Coming later)

-

本文是Teddy关于基于组件及服务为中心的软件系统开发的进一步思考的系列文章的第一篇,探讨Teddy对当前的基于组件及服务的软件系统开发现状及基本思想的理解。本系列文章一共三篇,在之后两篇中Teddy将站在“组件”这样一个点上分别Looking into组件和Looking outside“组件”这个点,从而分别思考对第一篇中描述的软件开发模型的改进的可能方案。Teddy并非软件开发方面的资深专家,而只是一位喜欢思考的普通程序员,对软件开发这样一门科学的认识难免是具有非常的局限性的,因此,本文的观点仅代表Teddy的个人见解,如果您认为文中的观点过于奇特或幼稚,或者有失偏颇的,欢迎给与批评指教。
 
Current Component/Service Oriented Software System Development Model
 
我将自己理解的这样一个模型,比较简单的画了一张MindMap图。
 
请下载下面的MindMap图,并打开html文件察看MindMap图。您的浏览器需要支持Java Applet,您的系统必须正确安装Sun的JRE v1.4+及相关浏览器插件。如果在察看MindMap图方面有问题的话,请自行查阅在浏览器中正确运行Java Applet的相关参考资料,Teddy并不承诺回答您这方面的问题,这里先说句抱歉。另外,如果不能察看Applet,也可以打开zip包内包含的pdf文件察看MindMap展开后的静态效果。
 
 
-
 
如果您已经能够正确察看上图,欢迎继续往下阅读!
 
在这个MindMap图中,我简单的将主要的元素分成左右两类,左侧是功能性的元素,右侧则主要是辅助的非功能性元素。 
 
既然是Component/Service Oriented,左侧当然是Component和Service了。而右侧则是使得Services和Component能够协同工作的过程中,起主要作用的一些辅助工具。
 
-
 
让我们从左侧的Service开始。
 
什么是Service呢?
 
节点上我给出了简单注释 - Langauge Independent Components with Unified Language/Platform Independent Interfaces。具体来说,这里的Service泛指语言/平台无关的功能组件,它的对外接口的具体表现形式逻辑上就像一个Method,更具体的定义可以参见Teddy之前的文章《 重新诠释SOA》中关于Service的定义,即:
 
-
Service - 一种执行接口,接受外部的调用请求,请求可以包含0到多个参数,根据参数处理该请求后,返回执行结果,结果包含处理的成功或失败状态及0到多个返回参数,其中每个请求参数或返回参数都由一个Key/Value对表示。
 
Service的特性:
1)封装了细节,只要接口和返回结果不变,被封装了的实现细节对用户并不需要关心;
2)一个Service内部可以调用其它Service来实现,甚至可以递归调用Service自身;
-
 
根据Service当前的所在位置,基本可以将Service分为Local Service和非本地的Web Service。
 
请注意区别这里的Service的定义和Web Service的定义与业界关于SOA的标准定义中Service和Web Service的定义相区别。您可以以业界的标准定义来直观地理解上述,但是,这里的定义本质上是一个更高一级的抽象描述。
 
-
 
那么什么又是Component - 组件呢?
 
这里我简单的将 所有可重用的平台/语言相关的源代码级别的功能模块和二进制模块统称为Component。您可以展开MindMap图中的下级树枝往下看。
 
每个本地组件都会通过一组接口与外界交互,和组件的定义一样,组件的接口,也可以是源码级或二进制级别的接口
 
本地组件怎样才能通过其接口和外部交互呢?两种情况: 本地交互或远程交互
 
如果组件希望和同样存在于 本地的提供同样的或者至少是可以识别的本地接口的其他本地组件交互的话,只需要在语言或者二进制级别 互相Reference就可以了
 
如果需要交互的组件 不能直接通过本地接口来交互,那么我们需要先将语言/平台相关的本地接口映射到平台无关的通用接口(Unified Language/Platform Independent Interfaces)。这个Mapping的过程需要Mapping工具来辅助,而Mapping工具则通过一定的Metadata Configuration来定义映射细节。
 
接着,可以 通过更高一级的平台无关接口级Reference或者通过TCP/IP与本地Service或外部Web Service进行交互。这两种交互的媒介虽然不同,但是,基本的原则一致。同时, 不论是平台无关接口级Reference或者通过TCP/IP,都需要Checking一组Policy来进行一定的约束,例如安全性检查或其他Contract约定。
 
-
 
我们可以看到,根据这个基本模型,基本可以构造出从大到小,无论是Component Oriented或Service Oriented或Component/Service Oriented的软件系统。因此,我称其为我理解的“当前的基于组件及服务的软件系统开发的基本模型”。

10kV变电所标准图.pdf.rar 立即下载

相关推荐

35kV屋内配电装置接线图.dwg.rar

35kV屋内配电装置接线图.dwg.rar

专业 英语

计算机、数学、机械等专业的专业英语词汇

Edward2022的博客 2875

大型CAx(CAD/CAE/CAPP/CAM)工业软件开发中的关键组件

通过对FreeCAD、SALOME等多款代码的分析研究,发现这些软件在架构设计、模块实现等方面,存在许多相似(同)的技术思想。因此,有必要对这些共性、主流的技术予以总结分析。

国产CAx(CAD/CAE/CAM)软件研发 1万+

GOTO 语句有害论 | 反对 GOTO 语句的理由

……

u013669912的博客 1816

理解Design Pattern

<br />本文的目的是以最精炼的语言,理解什么是Design Pattern,为什么需要Design Pattern,和关于Design Pattern的争论。什么是Design Pattern?<br />从字面上理解,Pattern,指的是解决常见问题的可重用的方案。Design,则限定了,这里的Pattern是为软件的设计服务的。因此,所谓Design Pattern,指的是解决常见的软件设计问题的可重用的方案,或者说解决方案的模板。<br /> <br />两点需要特别注意的是:算法不是Desig

Teddy's Knowledge Base 4794

C#2.0 - Object Pool 简单实现

本文介绍本人的一个简单Object Pool实现。什么是Object Pool呢?大家可能都知道什么是数据库连接池,他能极大避免不需要的对象销毁和初始化开销。本文实现的对象池是一个通用的可用于任何有实例化接口的对象的池。默认的对象的实例化接口是new,文中也演示了如果您的对象需要从一个Factory构造,或当你的对象是用Emit生成时,如何简单继承ObjectPool类,实现特殊的对象的

Teddy's Knowledge Base 1365

Enterprise WCF - Integrate WCF Configuration into Your Enterprise Framework

Background Lots of people declares they are using WCF in their “enterprise” distributed software development together with other SOA technologies, and even calls their software architecture WCF b

Teddy's Knowledge Base 1213

讨论:WCF可序列化的ActiveRecord实现有意义吗?

<br />本文的目的,是探讨WCF可序列化的ActiveRecord实现是否有意义。ActiveRecord模式简介<br />ActiveRecord模式是Martin Fowler的企业应用架构模式中提到的一种数据访问模式,如下图:<br /><br />Person类包含lastName, firstName等这些属性,一个Person类的实例,对应数据库的一个Person表或视图的一条记录,每一个属性,对应数据库记录的一个字段;同时,Person类包含CRUD方法,封装了对数据库的操作;Perso

Teddy's Knowledge Base 1201

理解单元测试(Unit Testing)

<br />本文的目的是以最精炼的语言,正解什么是单元测试,为什么要单元测试,和如何进行单元测试。 什么是单元测试(Unit Testing)?<br />测试(Testing)这个词很容易理解,那么什么是单元(Unit)呢?一个单元指的是应用程序中可测试的最小的一组源代码。一组源代码可测试,一般要求其有明确的输入和输出。因此,一般来讲,源代码中包含明确的输入和输出的每一个方法被认为是一个可测试的单元。注意,这里指的输出,并不局限于方法的返回值或对输入参数的改变,而包括了方法的执行过程中,改变的任何数据。为

Teddy's Knowledge Base 1196

提前发布4/25上海俱乐部活动演讲“集中化WCF服务配置管理”示例程序

承蒙4/25上海俱乐部活动组织团队邀请,本人有幸将在本次活动中和大家分享一下“集中化WCF服务配置管理”方面的一些探索。为了让大家对活动当天我讲的话题提前有一个更直观的了解,在这里提前介绍一下到时我会演示的示例程序。 本示例程序具体演示如下内容: 1) 基于SQL Server数据库的集中化WCF服务配置管理; 2) 集中化ConnectingString管理; 3) 集中化App

Teddy's Knowledge Base 1001

来一点反射,再来一点Emit —— 极度简化Entity!

在前一篇文章《没有ORM或代码生成数据就不能持久化了? - 用范型技术代替代码生成!》中,Teddy尝试运用泛型极大简化了一个轻量级持久化框架对代码生成的依赖,并且为了保证性能,整个持久化组件没有使用反射。在本文中,Teddy将在保证性能的基础上,加一点反射和加一点Emit,从而进一步简化Entity的定义和使用,当然也就进一步降低了组件对传统代码生成的依赖。读者可以对比前文阅读本文,看

Teddy's Knowledge Base 958

Apply SOA Design Patterns with WCF (5) WCF Based ASP.NET DataSouce Control (基于WCF的数据源控件)

Original (原创) by Teddy’s Knowledge Base Content (目录) (1) WCF Configuration Centralization (WCF配置集中管理) (2) WCF Automatic Deployment (WCF自动化部署) (3) WCF Automatic Service Locating (WCF自动化服务定位) (4)

Teddy's Knowledge Base 948

Web Application Architectures: Simple 2 Layer, Standard 3 Layer and Distributed 3 Layer

Abstract:This article discusses three common web application architectures: Simple 2 Layer, Standard 3 Layer and Distributed 3 Layer. For each architecture, it gives an ASP.NET 2.0 sample imple

Teddy's Knowledge Base 921

ORM中的继承关系映射全解——单表继承体系、一实体一具体表、一实体一扩展表、接口映射

实体继承是基于OO和关系型数据库软件系统设计中的一个重要主题。本文通过基于NBear的实例解析ORM中的实体继承体系映射的方方面面。本文涉及的内容包括:1. 单表继承体系2. 一实体一具体表3. 一实体一扩展表4. 接口实现映射vs基类继承映射1. 单表继承体系所谓单表继承体系就是用一张数据库表存储整个继承体系中的所有实体的数据。单表继承体系适合那种继承体系中实体数目相对较少,总记录

Teddy's Knowledge Base 897

发布NBearLite中文版完全参考手册 + NBearLite 10分钟入门教程 + NBearLite v1.0.0.7 beta

NBearLite是一个.NET 2.0开源(BSD协议)通用数据访问组件,支持SQL Server、Oracle、MS Access,MySQL,SQLite,PostgreSQL等多种数据库的透明切换(改变数据库类型时无需修改具体的查询代码)。NBearLite实现了一套类似LINQ的强类型数据库查询语法(支持从简单的CRUD查询到GroupBy、InnerJoin,Paging,S

Teddy's Knowledge Base 891

用自定义KeyValueCollection类代替Dictionary/Hastable,改善简化后的Entity性能

在上一篇《来一点反射,再来一点Emit —— 极度简化Entity!》中,Teddy运用反射和Emit极度简化了Entity的定义方式。本文将在上文的基础上,用自定义KeyValueCollection类代替原来的Dictionary类承载Entity的数据,从而改善Entity的读写性能,并保持Dictionary的方便的使用接口。为什么Dictionary的性能不好?当然,这里说的性

Teddy's Knowledge Base 873

ASP.Net 2.0 - 使用Ilungasoft Framework加速Web开发

Ilungasoft Framework是Teddy正在开发中的Web快速开发框架,该框架基于.Net 2.0,设计的出发点就是易用性,快速开发,兼顾性能。同时,Ilungasoft Framework也充分利用了许多.Net 2.0中的新特性以简化框架的易用性。本文将以一个Sample Web应用的分析为基础,介绍Ilungasoft Framework的使用。在本文中,您将看到,Il

Teddy's Knowledge Base 838

正解TDD

<br />本文的目的是以最精炼的语言,正解什么是TDD,为什么要TDD,和TDD的难点。 <br />什么是TDD? 简单的说,TDD = 测试先行(TFD, Test First Development) + 重构(Refactoring) + 回归测试(Regression Test)。<br /><br /><br />如果要实现某个功能,TDD要求在初步定义完这个功能的外部接口之后,先根据这个功能的用例写测试代码(黑盒测试),测试代码检验的是这个功能的外部接口的使用场景,而非具体的实现细节。然后,

Teddy's Knowledge Base 836

Apply SOA Design Patterns with WCF (2) WCF Automatic Deployment (自动化部署)

Original (原创) by Teddy’s Knowledge Base Content (目录) (1) WCF Configuration Centralization (WCF配置集中管理) (2) WCF Automatic Deployment (WCF自动化部署) (3) WCF Automatic Service Locating (WCF自动化服务定位) (4)

Teddy's Knowledge Base 827
上一篇: 重新诠释AOP
下一篇: With AOP, Component Oriented == Object Oriented
teddyma
博客等级 码龄25年 5粉丝 187原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值