目录
PCOM模块设计概要
引言
PCOM与SOA
几句闲话
“名词解释”
PCOM模块概要 --前情提要 1118
表1、PCOM边集
表2、PCOM 域集
表3、PCOM点集
表4、PCOM系统图
设计基础
补充说明 1121
实现构思 1122
表5、PCOM点集
表6、PCOM实体
表7、PCOM模型
表8、PCOM服务
表9、PCOM原型
PCOM图谱 1123
分析
PCOM构成
表10、PCOM图谱
设计目标及最佳实践
[ 最新进度: PCOM模块设计-第一章.Foundation 1126 22:40
PCOM模块设计之首页 1125 15:45 ]
“PCOM”是设计的模块名,PCOM是 Portable Common Object Model(可移植组件对象模型) 的首字母简称。由于PCOM作为计算机行业的专业名词已经有它的含义,加之COM本身就是为可移植性特征而设计的,考虑要将模块名修改为COMF(Common Object Model Facility )。具体可留待将来再说。
简单的说,PCOM模块的设计目标,就是软件PLC(可编程序控制器,Programmable Logic Controller)。在后面“PCOM图谱”部分,称之为 COMPLC (组件对象模型的可编程逻辑控制器),将工业制造的自动控制模式应用为信息系统的自动化制造的基础设施。
具体起因、解释和设计目标,请参见之前的几篇文章:
PCOM模块既然是解决互联架构的方案,一定会和SOA中的各种概念相关,PCOM本身的架构和实现都是基于SOA思想的,但它并不是一个SOA框架,PCOM的目标是一个COM的公共设施。
如何才能将设计的PCOM模块和SOA框架区别开来呢?我最后想到的办法,就是写一份PCOM模块的内容和方案提要了。
所以,为了清晰PCOM模块的范围,并且同时也是为PCOM模块的程序设计做个提要,今天起早写了< PCOM模块概要>。希望能从中能看出这个整体构成中SOA在其中的地位了。
从后面“”可以看到,SOA是<表4、应用对象> 第一行中Provider对象的方案框架,它给出了作为服务的Provider对象基于服务描述、发现和交互等公共协议下的一个架构,从而让应用组件可以不用关心不同层( 网络层=>通讯层=>会话层=》应用层)的差别,直接在应用协议约定的Box上交互,但SOA的范畴中,并不涉及到与应用领域相关的任何事情-包括业务逻辑本身以及一个应用系统所需要的运行相关的各种支撑和支持等等。
2018-11-18 9:40
这篇博文贴出来几天,承蒙业内人士抬爱,不少人都翻看了这篇博文。在此,谢谢各位!
但,各位却没有留下只字片语,这让我多少有些失落。我知道,这些介绍,对大多数人来说,不足以让你们了解,我要做的,到底是什么。
我贴出这些博文的目的,是希望能建立和软件开发人员的一个沟通、讨论、交流和甚至合作的桥梁。因为,我正在设计的目标系统,涉及到软件开发的方方面面,希望能得到有有相关积累、和有兴趣的专业人士的帮助和指导,来完善本模块,直至整个系统的设计。
所以,我后续会持续修改、补充,以便能让看到这篇博文的你们,能了解设计中的部分或全部含义,方便找到能交流的点和面。
另外,为这套系统,我之前专门建立了一个QQ群,欢迎有兴趣的加入,以方便更直接的交流和讨论。
QQ群号:568747284
名称:aaas讨论群
另附: 相关博文我也同步发布到我的QQ空间中了。qq: 1751193850
(说明:以下内容 是从本人的另一篇博文 闲话 “名词解释” 同步到这里的)
一般来说,了解一个名词或单词释义的最好方法,大多习惯“百度一下”。但如果,你的重点不是这个名词本身的意义,而是更想完整的知道它可以起作用的地方,那“百度一下”就不够了。
有什么好办法呢?我想到了“统筹”二字。
第一个念头:一个单词,不管它有多少层含义,但总会有个边界。要想能提炼出它完整的作用范围,没有“统筹”的思想和知识恐怕是不能了。
既然已知不可能查到满意的结果,这次,干脆不去查,自己想。
紧接着,冒出几个单词: 范畴、类别、分类;目录、条目。
第二个念头:搞清楚它们的关系,应该就是“统筹”的全部了?
那它们是什么呢?
提炼一个单词的完整作用范围,首先得知道这个单词本身应该在哪里?
最好的方法,当然是在列举的选项中选择。
但问题来了:列出的选项必须是并列的概念,即:可能需要分层,还需要看看是否能去掉有交集、甚至相重或包含的。如果不在同一层上,这个层怎么分,分几层? 不同层上(面)应该有一一对应的概念来表示不同层上的概念是等价的。一个面上需要分几个?
第三个念头: “范畴”和“类别”重的可能性极大。那,“类别”是 “范畴”更通用的说法?
现在,我们来决定一下。
“类别”,从字面上看,它应该是"分类"的区别,而“范畴”呢,应该是严格意义上要求分类的排他性了,就像一块土地分给了张三家就不能再分给李四家一样。
既然这样,就可以将“类别”从中去掉。
回到最初的念头:在最前面提出问题时,想到的“统筹”应该就是用来解决这个问题的: 怎样划分才能同时知道单词的释义和单词的作用范围。
这个问题的解决,确实是“统筹”要做的事情了。还是那句话:要想知道怎样做,先得知道准确的目标。
这个问题的提出,本来就给出了单词的两面-内涵/外延(构成一个完整的概念),同时暗示了一个单词可以有位于两层上的意义-具体和抽象(一对对立统一的两个侧面)。4个特征词完整刻画出一个单词。
正好,上面写的时候,就已经分开了,那是第一感觉,第一感觉一般都会是对的。
现在就剩下4个单词:范畴Category、分类Classification;目录Catalog、条目Entry。
结论出来了: “范畴”和“分类”是一对,“目录”和“条目”是一对。 “范畴”和“目录”是抽象的,“分类”和“条目”是具体的。
如果存在这样一个域,能将所有术语这样来描述,就构成了一个完整的知识体系。在这个知识体系,使得它们在不断在实践中迭代,得以不断分化和演进。
这是否就是“统筹学”, 我不想去求证,但我将以上的4元 统称为“术语地图”,它们也是我目前正在设计的系统的根本之根本,几乎系统中的所有模块都使用了它。
20181124 12:40
根据前三篇,从问题发起,到一些基本考虑将想到的各个离散点组成表,作为设计的第一步。
Feature |
|
Enumeration::(Literals:Term) |
|
Feature |
Lable |
Charateristic |
Entry |
PCOM |
||
Classifier::(Items:Information) |
||
Scheme |
Model |
Prototype |
Domain |
Mode |
Style |
Exprssion |
Scope |
Case |
个体-信息项 (如,字段/属性/参数等) |
Charateristic |
特点:已知的模Mode或式Style或调用 CallAction |
|
Entry |
条目:任何一个可连接的对象 |
|
逻辑图 |
用例图 |
|||
取向 |
Term术语 |
单词Word |
PCOM分支 |
用途 |
对个体特点概念的抽象 |
Feature |
特征 |
静态:特征化/行为化 |
提供组织能力-结构成员 |
动态:情景化/范畴化 |
提供变化能力-行为成员 | |||
对个体特点概念的具体 |
Lable |
标签 |
可变:变体/分体 |
表示任何可运行对象 |
不可变:信息项 |
表示任何有“确定”意义的东西 |
(接上表右)
组件图 |
部署图 |
|
分支 |
变体 |
应用对象 一个完整的应用系统中的不同对象角色在系统的位置 |
Provider |
Service |
协议层次约定了服务提供的产生式: 网络层=>通讯层=>会话层=>应用层 Provider::(API:SPI:Adapter) |
Change |
Box |
环境条件决定了box的产生式:平台=>框架=>运行时=>容器=>活动单元 Activity:: (UI:Operetion:Action(发起,捕获,处理))(EventHandler:Event: Action) |
Compenent |
Object |
一个已知的具体类型的特征表达式。该类型及其特征本身所表示的语义决定了lable的表达式的形式 组件::(事务:会话:应用) |
Information |
Vlaue |
一个已知个体的价值表达-Llable本身的语义决定了Lable表达式的不同形式. Information::(Text:Tag:RDB) |
基本点
PCOM基础
PCOM的基类是函数空间的"式",其实例是设施。
函数式 Style_Function |
|
正规式 |
组织设施 |
产生式 |
工厂设施 |
表达式 |
行为(准则)设施 |
PCOM的基础实现是提供COM对象特性映射为基于对象的已知特点范围的方法(“式”)设施来解决的。
对象特征范围
对象特征基(范围)从两个根基Root Base上分支Branch:OLE属性(对象/嵌入对象/链接对象),Domain属性(实体对象/值对象/域服务对象);
COM对象三大(封装性、多态性和继承性)的特征基类Box、Preserver和Lineage(参考上一篇《“模式”是什么》)表达了对象的三种不同的特征基:
说明
目标系统设计的最终目标,是要做一个信息系统的通用组态工具。设计这个PCOM模块的主要目的,是解决结构维持问题,提供COM对象的动态移植性 和 多参与方 动态更新 的信息同步。
表4右下单元格给出了PCOM模块为应用系统提供的IO : Information::(Text:Tag:RDB),这表示了任何类元中的一个项的信息原型在3种不同存储区域中的变体。也就是说,PCOM为应用系统中的信息提供一套软件意义上的通用语义标记系统。所以,换句话说,PCOM模块提供的就是信息化的标准化设施 。
最后,我使用前面“PCOM基础”中来给出PCOM模块设计目标的解释。
函数式 Style_Function (信息的标准化设施) |
|
正规式 |
组织设施 |
产生式 |
工厂设施 |
表达式 |
行为(准则)设施 |
PCOM模块作为信息系统信息组织的标准化设施,它是信息系统的顶级组织设施,按照信息在软件中的角色和地位,从抽象/具体两个侧面给出了信息系统中各种应用对象的产生式(信息生产标准设施)和表达式(信息表达的标准设施)。
2018-11-21 8:30
(注:以下内容 是从另一篇博客“PCOM模块实现概要”中 补充过来的)
https://blog.csdn.net/ChuanfangChen/article/details/84334006
继上一篇“PCOM模块概要”之后,急着落地程序设计。到今天,总算将这些年来积累下来的知识,能一个个对号入座了。
下面几张表是对PCOM模块概要的补充和修正。
其中表5,是在“PCOM模块概要”表3的基础上进行了修改,本应该替换下来,但感觉差距比较大,更重要的是,表5是实现的基础,放在这里好像更合适。
其它表,是这次新添加的内容。
Term 术语 |
|
|
|
|
PCOM个体-COM的成员项 (如,字段/属性/参数等) |
Category-对应法则 |
Term设施:模Mode或式Style或调用 CallAction |
||
Factor-定义域 |
确定需要某个Term的因素:Scope,Charateristic,Entry, |
|||
Type-值域 |
需要具体化一个Term的所在:Case,Lable,Feature |
|||
|
TaggedValue |
|
|
|
每个“Term”唯一标识一个有着特定的“确定”意义的元素,这种“确定”意义是通过函数三要素(定义域、对应法则和值域)来描述的。
“TaggedValue ”是“KV型”(见表7)的一个实例。
PCOM就是围绕着这种一个Term的“确定”意义的解决方案。它基于COM对象具有的最根本的以下两个特征所表现的函数特性:
PCOM实例 (附加了Portable特性的COM对象) |
Provider |
服务提供的不同方式:API,SPI,Adapter |
||
Activity |
活动的不同交互所在: UI,Operetion,Action |
|||
Component |
组件(技术术语)的功能划分:Transaction,Session,Application |
|||
Information |
信息价值表达(业务术语)的不同形式:Text,Tag,RDB |
|||
|
COM |
|
|
|
PCOM的逻辑模型(表示了COM除Portable特性以外的特性) |
阐述Statement型 |
适用于 表6 Information::Text |
=> Exression的元类 |
|
KV型 |
适用于 表6 Information::Tag |
=> Mapping的元类 |
||
关系型Relational |
适用于 表6 Informatiom::RDB |
=> Table元类 |
||
对象Object型 |
适用于表6中其它三个包(Provider/Activity/Compent)的9个PCOM实体。是OOP(面向对象编程)中类Class的元类(MetaClass) |
|||
|
COM Model |
|
|
|
COM Model为COM对象提供了依据它们在应用系统中不同原子职能划分的PCOM实体模型。本表定义了4种COM类元(Classifier),前三种是用于应用描述或配置的类元,最后的“对象Object型”定义了应用系统中的应用组件的通用模型。
PCOM功能 (提供了Portable特性的基础实现) |
Profile |
由不同的协议层次约定了Box的"服务提供者"的产生式: |
||
网络层=>通讯层=>会话层=>应用层 |
||||
由不同的环境层次决定了Box上的“更新活动者”的产生式: |
||||
平台=>框架=>运行时=>容器=>活动单元 |
||||
Configration |
技术特征表达式 --表达了一个特定的技术特征及其技术元数据 => |
|||
Block( Box服务侧,服务对象) |
||||
业务特征表达式 --表达了一个已知的业务逻辑特征及其元数据 => Lable(Box客户侧,应用对象) |
||||
|
组态 |
|
|
提供两个级别的组态:Profile--产生式的配置文件 /Configration-表达式的装配方案。
PCOM标架体系(一个可编程的COM控制器COMPLC) |
MachineCS |
机器坐标系(scope,case,style) |
|
|
ProgrammingCS |
编程坐标系(charateristic, lable, callAction) |
|||
ArtifactsCS |
工件坐标系(entry,feature,mode) |
|||
|
FrameArchitecture |
|
|
|
(表7 第三行的“对象Object型”映射到具体的某个PCOM实体--表6 的前三行,分属3个包的9种PCOM实体,统称“对象型PCOM实体”)
4. 最后根据特定对象型PCOM实体在表6中提供的对象元模型,输出这个对应这个COM Profie的软件系统中各种级别对象的可配置清单、配置范围及其装配方案。
5. PCOM模块输出的应用系统原型的开发/应用实践活动,可以在通过“term”在“标架体系”中通过不断迭代、优化、分支、发展和演进。
2018-11-22 9:40
(注:以下内容 是从另一篇博客“PCOM图谱”中 补充过来的)
https://blog.csdn.net/ChuanfangChen/article/details/84334006
总结前面的所有设计,PCOM模块的架构最后就是 “图9”了。为方便程序模型的设计,让我们再重新标记说明一下这个表:
表9、PCOM原型 |
|
|
PCOM架构 |
3系M/P/A |
9元 3套(x,y,z) |
PCOM标架体系(一个可编程的COM控制器COMPLC) |
MachineCS |
机器坐标系(case,scope,style) |
ProgrammingCS |
编程坐标系(charateristic, lable, callAction) |
|
ArtifactsCS |
工件坐标系(entry,feature,mode) |
|
|
FrameArchitecture |
|
上表只是在原表上增加了标题行,并标记了3个斜体。
3套坐标系的任意一个点(x,y,z)表示了一个COM对象的一个具体的构件元件。 不同坐标系则表示了软件系统的不同横切面-工作空间层次。每个作元件在标架体系中以特有的形式关联。
下面具体给出这张表给出的全部“确定”意义(包括使它们有意义所需要的有关设施):
9. 对M、A系:模式Pattern ,M/W(x,y,z),是已知的架构模式: Schema(应用元件的ode/Style),它表达了P系上的一个实元件(z元件) 在机器坐标系/工件坐标系的 z轴上的影像。同时:
关于设施:
根据以上分析,给出PCOM的完整构成:
表10、PCOM图谱 |
|
设施 |
图 |
Box |
部署图 |
Block |
组件图 |
Lable |
逻辑图 |
Widget |
小部件图 |
Frame |
框图 |
Pattern |
|
Transformation |
|
Mapping |
|
Schema |
配置Profile图 |
最后,回到原点:
PCOM模块设计的目标,就是为构件平台的模式提供了一个统一的外观,使之能融入各种构件平台作为模式提供者。当今可用的构件开发平台(简称为“生态平台”),我所知道的,只有三个:J2EE、MS的DNA 和 CORBA。任何一个都可以作为验证PCOM模块的实践基础,其中,目前最具条件的是JavaEE。
2018-11-23 9:00