10 2011 档案
摘要:写在前面: 软件开发伴随我走过11年职业生涯,大大小小的系统开发过好多个,有成功的,有失败的,软件公司虽然是戴着高科技的帽子,却干着苦命的工作,整个过程对开发人员来讲,都是煎熬,但问题出在哪呢?如何解决呢? 针对以上问题及我在行业实践中的总结,结合公司的框架情况,将我们的工作成果及解决方案发表如下,供各位同学参考,也希望高手提出宝贵意见。 行文组织说明:先概括,后具体,先提问题,再思考问题的解决方案,最终实现之。目录一、 创业经历简介二、 什么是IBeamMDAA三、 IBeamMDAA的目标与解决的问题3.1 我们开发的软件是什么样的软件?3.2 用户的组织结构是什么,以及组织结构对软...
阅读全文
摘要:框架一词是被使用最泛滥的词语,目前在光标科技内部即指IBeamMDAA,是为解决企业信息化应用而建立的应用工具集,包含应用服务器宿主、常用工具集、系统自举、任务调度、企业基础设施与应用入口工具集等部分,它解决了应用开发、部署、维护配置等软件工程方面的问题,但它并不是万能的,每位使用者都应有一个清晰的认识,我相信任何系统都有它的设计目标与能力范围,而对于使用者而言最重要的是框架能提供什么价值,在适当的环境中选择适当的工具解决适当的问题。 整个软件业都在追求自动化与智能化,并取得一定的成就,连软件开发都希望能自动化生成,但企业管理信息化的服务对象是企业的人,不同的企业、不同的人适用不同的管理制度.
阅读全文
摘要:在多线程并发操作环境中,对数据库的操作也必须注意防止并发控制不适当导致数据混乱,目前已经遇到的情况有: 线程1在保存 类A 的数据,未使用 事务性会话,同时线程2在操作 类B 的数据,使用了 事务性会话,得到的结果是:线程1 的操作全部丢失,线程2 的操作结果正确保存到了数据库。调试错误时却发现,线程1 的程序在测试时由于是单线程环境,运行完全没有问题,开发人员感到莫名其妙,无从下手。 为了避免以上情况,应坚持按如下规则使用会话: A、纯查询使用无刷新会话,示例如下: private void DataPortal_Fetch(PartyListCriteria criteria)...
阅读全文
摘要:IBeamMDAA使用Common.Logging作为日志输出组件,使用方法非常简单,代码如下: ILog log = LogManager.GetLogger(this.GetType()); log.Info("日志信息"); 关于如何配置Common.Logging请查看“IBeamMDAA应用服务器配置”章节。 只是在使用日志组件时,也要注意日志的级别,不必输出所有级别的日志,日志数据太多,反而很难找到有用的信息,同时日志输出IO操作非常影响性能。
阅读全文
摘要:自动任务在实际运行中一般不需要人工管理,但有时需要更改任务的运行参数,或根据服务器的负载情况来调整哪些服务器运行哪些任务等,此时需要对服务器运行参数进行调整。 应用服务器的管理是通过客户端进行的,调整结束后,必须重新启动服务器才可应用最新配置。 查看指定应用服务器上的自动任务实例: 自动任务管理及参数调整: 参数调整示例: 比如 自动任务A 是专门负责处理某类任务的,数据量有100万条,每条数据的处理都消耗一定的时间,现有10台应用服务器可供使用,为了充分并均衡地发挥服务器的能力,我们配置第一台服务器处理0-10万条数据,第二台服务器处理10万-20万条数据,以此类...
阅读全文
摘要:自动任务调度是应用服务器的基本功能之一,自动任务主要是为了解决一些与用户交互无关,但与时间、日期相关的一些周期性任务,此类任务的特点是数据量大、无需人工干预、有规律,遇到这样的任务都可以考虑使用自动任务。 所在组件:IBeamMDAACore 名称空间:IBeam.MDAA.Objects (业务对象) 用法举例: 在IBeamMDAA框架中开发自动任务比较简单,用户无需关心与任务无关的调度、配置等问题,只需遵守两个简单的原则即可: 1、任何自动任务都必须实现 IAutoTask 接口,IAutoTask 接口定义如下: public interface IAutoTas...
阅读全文
摘要:每个公司或团队都有自己的开发习惯或开发模式,光标科技这些年来一直坚持CodeFirst,对于实体对象的分析设计,我们的流程是,先根据业务需求分析设计出实体对象及对象之间的关系,最终生产出UML类图,为了避免管理图纸与需求文档花去过多的时间,其它UML图在业务简单的情况下默认省略,只在业务复杂的时候配上流程图,帮助程序员写代码;代码规范与写法每位员工入职时必须先学习,框架结构与操作流程 也在真正进入开发前灌输到每一位开发人员,再辅以开发样例学习,这样避免了向每一位同事讲述系统构架、组件功能等等这样的工作,使每一位开发人员可以在极短的时间内投入到工作中,得到的结果与资深程序员没有什么区别,即使他并
阅读全文
摘要:使用ORM映射工具对数据库进行操作,由于对象关系(数据库表关系)间的复杂关系,往往导制N+1次数据查询,即:本来是查询某一数据对象,却因为对象关系把与对象相关的所有数据都从数据库加载到内存,而这些数据并没有被使用到,然后又马上丢弃,有时甚至只是一个简单的查询,却将整个数据库读取到内存后又丢弃,如此反反复复,整个数据库服务器都在不停的运转,高磁盘IO,高CPU占用率,完全是无用功。 数据库缓存的作用是只在数据第一次被访问时才从数据库中读取数据,将数据放在存储介质中,以后查询相同的数据则直接从存储介质(内存)中返回,这样速度有明显的提升。基本原理是用空间换时间,理论性的知识这里不必一一列出,可..
阅读全文
摘要:IBeamMDAA没有限制必须使用什么样的数据库访问技术,IBeamMDAA即没有自己创造数据访问层组件,也没有使用.net最新数据访问层技术(比如:Linq或EntityFreamwork),而是保守地使用了经过大量实践检验的NHibernate,但我们推荐使用CastleActiveRecord,CastleActiveRecord的基础组件使用NHibernate,因此,IBeamMDAA目前支持比较完善的是CastleActiveRecord,在性能与可移植性取得平衡,关于NHibernate的性能探讨请在网络上搜索这方面的研究。 NHibernate本身是支持多数据库平台的,因此可.
阅读全文
摘要:按照上图所示,取当事人的银行账号信息应该先取当事人对象,根据对象导航关系可以找到当事人银行账户信息列表,但在实际应用时,银行账户信息并不是经常被使用的信息,每次加载当事人(Party)时,都把银行账户信息一起加载,一方面占内存,也浪费传输带宽,因此没有在当事人(Party)类中定义当事人银行账户列表属性。可通过以下代码取得当事人银行账户列表: public static BankAccountList GetBankAccountListByParty(int partyID);
阅读全文
摘要:取当事人的联系首先是要找到当事人(Party),当事人属性中定义了联系方式列表属性(ContactMechanisms): #region 用户拥有的联系方式 private static PropertyInfo<ContactMechanismList> ContactMechanismsProperty = RegisterProperty(typeof(Party), new PropertyInfo<ContactMechanismList>("ContactMechanisms", "联系方式")); /// <
阅读全文
摘要:/// summary ///查询具用指定功能权限编号的当事人 /// /summary /// param name="functionID"功能权限编号/param /// param name="name"当事人名称/param /// param name="maxResult"查询返回最大结果数,0 为不限制/param /// returns当事人列...
阅读全文
摘要:/// <summary> ///根据当事人挡任的角色名称、当事人名称、名称拼音、身份证号模糊查询当事人 /// </summary> /// <param name="RoleName">角色名称</param> /// <param name="Name">当事人名称</param> /// <param name="maxResult">查询返回最大结果数,0 为不限制</param> /// <returns>当事人列表
阅读全文
摘要:业务处理时必须确定事件的当事人,系统中提共了多种方法选择当事人。 所在组件:IBeamMDAACommon.dll 名称空间:IBeam.MDAA.Objects (业务对象) 用法举例: 通过代码选择: /// <summary> /// 根据名称、名称拼音、身份证号模糊查询当事人 /// </summary> /// <param name="Name">当事人名称</param> /// <param name="maxResult">查询返回最大结果数,0 为不限制</param&
阅读全文
摘要:在人与人交往或商业活动中,事件发生或交易的参与人都称为当事人,当事人可能是个人,也可能是组织或团体,每个当事人都扮演了一定的角色。 每个人在工作或生活中都有多种角色,比如: 张三 对于其父母来说,角色是 儿子,张三 对于其 姊妹来说是 哥哥,对于其所在单位 张三 是雇员。 在企业管理中角色也称为岗位,有时一个岗位就是一个人,有时一个岗位可能有多个人,也有可能某人身兼数职,也即他同时在多个岗位上任职或工作。 因此,企业管理中的岗位概念也即角色,角色管理就是岗位管理,岗位职责定义了在某个岗位工作的人,应具有的职业能力,负责的工作职责与范围,要开展工作就需要具有一定的资源支配权,岗位不同,...
阅读全文
摘要:Winform 客户端程序自动显示运行主程序集的名称,在程序集信息中填写好即可,如下图所示: 关于产品信息:
阅读全文
摘要:IBeamMDAAMembershipProvider的定义如下: public class IBeamMDAAMembershipProvider : MembershipProvider MembershipProvider的定义如下: // 摘要: //定义ASP.NET 为使用自定义成员资格提供程序提供成员资格服务而实现的协定 public abstract class MembershipProvider : ProviderBase 由此可以看出,IBeamMDAAMembershipProvider 是IBeamMDAA为创建Asp.net 自定义用户成员...
阅读全文
摘要:系统刚刚建立时,完全是一个空的系统,IBeamMDAA系统自动创建一名系统管理员,并且管理员代表的当事人是顶级机构,系统管理员不可删除,且在查询系统操作员也不列出,用户名称为:admin,初始默认密码为:123456,管理员是特权用户,具有所有权限。 在“如何理解当事人与当事人角色?”章节中我们讨论了什么是角色,系统操作员也是一种角色,每种角色都对应到企业管理的岗位,每个岗位都有特定的岗位职责及履行职责所需的权限。系统中的操作员由机构中真实的当事人担任,权限管理是以岗位为管理单元的,某个当事人在什么岗位任职,即具备了该岗位的权限。 岗位管理如下图所示: 系统用户(操作员)...
阅读全文
摘要:系统刚刚建立时,完全是一个空的系统,IBeamMDAA系统自动创建一名系统管理员,并且管理员代表的当事人是顶级机构,系统管理员不可删除,且在查询系统操作员时也不列出,用户名称为:admin,初始默认密码为:123456,管理员是特权用户,具有所有权限。 在讨论组织机构的权限传递时,我们首先要在心中有一个组织机构的概念,现假定可能的情况如下图所示: 系统刚刚建立时,管理员代表顶级机构为操作员及下属分公司进行授权分配,可能的授权范围如下图所示: 如上图所示,分公司1的权限最大只能是集合A,各级机构只能管理本级机构的操作员及本级的下级机构的权限,权限范围限于本级机构的权限,分公司...
阅读全文
摘要:前面我们已经讨论过企业的组织机构,分为:微型企业、中小型企业、大型企业等,企业的组织机构反映了企业的管理模式,有些IBeamMDAA的概念需要清楚的理解: 当用户登录到系统后,同时反映了用户所在企业的顶级机构(Root),当前所在机构(Owner),当前用户(操作员)当事人(Identity),下面我们结合企业组织机构来认识这些属性。 微型企业: 当人员岗位1登录到系统时: Root = 顶级机构 Owner =顶级机构 Identity = 人员岗位1当事人 中小型企业: 当人员岗位1登录到系统时: Root = 顶级机构 Owner =顶级机...
阅读全文
摘要:界面与功能之间具有一对多的关系,特定功能可能出现在多个用户界面中,用户界面的类型有多种多样,比如:Winform桌面应用,Asp.net页面,MVC页面,或者其它等。 界面与功能是通过功能的ID号对应的,注册定义如下: #region 产品管理 public const string ProductsCatalog = "供应链"; public const string ProductsGuid = "AEA002F7-8E7A-427a-A78F-E6A8A6B12EF6"; public const string ProductsName = &q
阅读全文
摘要:用户的业务逻辑展示界面在使用之前,必须进行注册,将界面注册到系统,根据用户是否具有界面中的功能,主程序将根据用户授权展示与授权相关的界面给用户使用。 界面注册必须使用IBeamUIAttribute 自定义属性: 定义如下: /// <summary> /// 界面注册标志属性 /// </summary> [AttributeUsageAttribute(AttributeTargets.Class, AllowMultiple = true)] public sealed class IBeamUIAttribute : Attribute 所在组件:IBe...
阅读全文
摘要:功能权限在使用之前,必须进行注册,将功能注册到系统,才能管理用户是否具有某种功能的权限,在业务逻辑中决断用户是否具有某种权限才不会失败。 功能注册必须使用两个自定义属性: IBeamSecurityAttribute 和 IBeamSecurityFlagAttribute 定义如下: /// <summary> /// “IBeamSecurityAttribute” 提供了一个能够应用在类的成员上的属性标签以执行访问者访问类成员时的授权。 /// </summary> [AttributeUsageAttribute(AttributeTargets.Method
阅读全文
摘要:权限验证包含认证与授权两部分,用户登录属于认证的问题,验证当前用户是否具有指定功能的权限属于授权的问题,IBeamMDAA已集成了这两部分的功能,我们只需在适当的时候使用即可。 权限验证与业务对象紧密联系,不能单独谈论,比如:产品信息的管理可能有:查询、增加、编辑、删除等功能,应对当前用户是否有权限操作产品实例作出决断,代码如下: btnAdd.Enabled = _ProductsCategory != null && !_ProductsCategory.IsNew && _ProductsList != null && Products.C
阅读全文
摘要:登录到系统、退出当前系统是所有信息系统的基本功能之一,IBeamMDAA框架中已集成了这些功能。 所在组件:IBeamMDAACommon.dll 名称空间:IBeam.MDAA.Objects (业务对象) 用法举例: 登录到系统: success = IBeamPrincipal.Login(_FrmLogonDialog.User, _FrmLogonDialog.Password); 从系统中退出: IBeamPrincipal.Logout(); 如果是Winform 客户端,登录到系统的交互界面已集成在了IBeamMDAA框架,在Main方法中添加如下代码:登录...
阅读全文
摘要:发布帮助文件的方法很简单,只要以“IBeamMDAAHelp.chm”文件名发布帮助文件到客户端软件安装目录即可,即在软件安装打包文件时将文件发布应用程序目录即可。
阅读全文
摘要:媒体代表了各种各样的文件,统一存储在数据里,使用媒体时我们称为引用到媒体,简称媒体引用;媒体存储在数据里,大的数据文件可能几M或几十M,没有必要每次读写媒体引用时都要把这些加载到内存,读写这些大数据时性能消耗非常大。所在组件:IBeamMDAACommon.dll 名称空间:IBeam.MDAA.Objects (业务对象) 用法举例: 媒体引用定义:数据加载:媒体引用在界面编辑中的赋值:数据都是统一存储在数据库的,如果需要可将文件同步到本地,如果是桌面Winform应用程序,将同步在应用程序的安装目录下的:\\UploadFile\\Media\\ 目录,如果要同步媒体到本地,使用...
阅读全文
摘要:地理范围即行政区划,用于定位用户所在城市或设施所在位置,系统已经自动实现了中国的地理范围,如果数据库中地理范围为空,系统自动为用户初始化地理范围。所在组件:IBeamMDAACommon.dll 名称空间:IBeam.MDAA.Objects (业务对象) 用法举例: 通过代码取得地理范围: gbList = GeographicBoundaryList.GetGeographicBoundaryList(txtName.Text,20); 通过交互界面(Winform)取得地理范围: FrmSelectGeographicBoundary frm = new FrmSelec...
阅读全文
摘要:数据字典在系统中的作用是维护一些常用的词语,同时记录用户的习惯用语,使系统在使用过程中自动完善自己,比如:自然人信息中需要记录自然人的民族,中国有56个民族,但由于地区分布的不同,某个地区主要就只有哪几个民族,这样避免了把所有56个民族都列出来,数据太多用户反而很难取得有用的信息。 所在组件:IBeamMDAACommon.dll 名称空间:IBeam.MDAA.ORMObjects (数据库实体) IBeam.MDAA.Objects (业务对象) 用法举例: 在当事人Party保存时保存民族: string _Category = "民族"; if ( !stri...
阅读全文
摘要:报表输出是所有信息系统基本的功能之一,但有些报表输出过程过于复杂,操作不便,影响开发速度,代码分散在界面UI层的各处,一方面维护不便,一方面Web与Winform桌面应用处理方式不同,相同的代码在不同的UI层移植时工作量大,因此我们作了统一的处理。 所在组件:IBeamMDAACommon.dll、IBeamMDAAWinUI.dll 名称空间:IBeam.MDAA.Utility (接口定义) IBeam.MDAA.WinUI (Winform打印) 用法举例: IBeamMDAA使用的报表是RDLC报表,设计思想与应用方法如下: 报表接口定义: public interf...
阅读全文
摘要:数据导出是非常常见的任务,用户最容易接受的格式是Excel文件,如果在导出Excel文件的同时还可以导出其它格式,用户更满意。 我们目前接供了DataTable 与DataGridView控件的数据导出工具。 所在组件:IBeamMDAAWinUI.dll 名称空间:IBeam.MDAA.WinUI 用法举例: 预览导出数据: string title = string.Format("{0}的联系方式", contactMechanismList.PartyName); dgvContactMechanismList.Print(DataGridViewHelp.Pape
阅读全文
摘要:业务类需要根据业务逻辑进行逻辑验证,其中部分验证是业务实体特有的,有些是通用的,CSLA.net 已经提供了大部分通用验证,但有些没有提供,下面介绍我们实现的通用验证: 所在组件:IBeamMDAACommon.dll 名称空间:Csla.Validation 用法举例: // //AmountProperty 金额必须大于 0. // ValidationRules.AddRule(IBeamCommonRules.BiggerThanValue<decimal>, new IBeamCommonRules.BiggerThanValueRuleArgs<decimal&g
阅读全文
摘要:数据结构中的List 或 List<T>类,没有提供排序方法,但提供根据 IComparer或IComparer<T>接口来排序,只能根据列表元素中的一个属性名称来排序,SortHelper或SortHelper<T>可以根据元素的一个或多个属性名称排序,当然也可考虑使用Linq来排序。 所在组件:IBeamMDAACore.dll 名称空间:IBeam.MDAA.Utility 用法举例: party.ContactMechanisms.Sort(new string[]{“Non_SolicitationIndicator”,” Number”});
阅读全文
摘要:获取类库(组件 或 装配件)的内嵌资源,一般返回的是字节流或文件流,在获取时还应该指定从哪个类库获取,如果未指定类库时,则类库是发起调用方法所在的类库。 所在组件:IBeamMDAACore.dll 名称空间:IBeam.MDAA.Utility 用法举例: ResourceRetriever. GetImage( resourcePath );
阅读全文
摘要:路径在开发中是经常要处理的,涉及到相对路径(RelativeFilePath)与绝对路(PhysicalPath),应用有Web应用与Winform桌面应用,PathHelper用统一的方式处理了与路径相关的操作与文件操作,以及取得文件大小,删除指定文件等辅助类。另外,我们同步媒体文件时都是同步到指定目录,消除了Web与Winform桌面应用的差异。 所在组件:IBeamMDAACore.dll 名称空间:IBeam.MDAA.Utility 用法举例: PathHelper. GetRootPhysicalPath( );
阅读全文
摘要:获取硬件信息包含多个方面,获取本机IP地址,获取本机的外网IP出口,获取本机第一个索引的网卡MAC,获取本机名称,取本机物理内存,取本机硬盘ID号,取CPU序列号,取本机主板编号,取本机BIOS编号,取操作系统名称,取操作系统的登录用户名等。 所在组件:IBeamMDAACore.dll 名称空间:IBeam.MDAA.Utility 用法举例: HardInforUtility. GetMacAddress( );
阅读全文
摘要:所在组件:IBeamMDAACore.dll 名称空间:IBeam.MDAA.Utility 用法举例: RMBConvertor.Convert( TotalMoney );
阅读全文
摘要:所在组件:IBeamMDAACore.dll 名称空间:IBeam.MDAA.Utility 用法举例: _Code =Chinese2Spell.GetHeadOfChs(_Name); 推荐用法,取拼音字母时放在ORM类中,可保证正确性: #region 名称 protected string _Name; /// <summary> /// 名称 /// </summary> [Property(NotNull = true, Length = ConstSetting.ShortVarchar)] public string Name { get...
阅读全文
摘要:必备知识: n .Net freamwork 基础知识 n C# 语言2.0 以上语言规范 n C# 的数据结构,C#的范型数据结构 n 数据访问技术:基本的数据库知识(有概念即可),能看能写简单的SQL语句, 对Ado.net 有初步了解(可以连接数据库把数据查询到表中即可),CastleActiveRecrod(要求:必须熟练使用,慢慢精通) n Csla.net 的基本原理,实在看不明白,可以只会参考别人的代码模板写代码也行。 n 能看懂简单的UML类图。 n RDLC报表设计 Winform客户端应用必备: n 明白什么是Windows窗体程序,明白Windows...
阅读全文
摘要:10.1 加密组件的使用 查看《通用加密解密组件》技术文档1.0 10.2 数据导入组件的使用 查看《如何使用数据导入工具》技术文档1.0 10.3 向导组件的使用 查看《如何使用向导组件》技术文档1.0 10.4 报表组件的使用 查看《RDLC报表设计与应用指南》
阅读全文
摘要:参考Winform客户端应用的配置,配置相同。 另外,《Expect C# 2005 Business Objects》中的例子中关于如何配置Web服务代理有详细的例子,可查看原版章节。
阅读全文
摘要:Winform客户端应用首先要指定Csla的认证方式,虽然Csla支持多种认证方式,但IBeamMDAA现在首选自定义认证方式。 另外,还需确定应用服务器的指向。 配置示例如下: <appSettings> <add key="CslaAuthentication" value="Csla" /> <add key="CslaDataPortalProxy" value="Csla.DataPortalClient.WcfProxy, Csla"/> <!-- <ad
阅读全文
摘要:以IIS为宿主的服务器配置与 IBeamMDAA的应用服务器配置相同,并且可以利用IIS的可管理性及负载管理能力使得应用支持更多特性,比如负载均衡等,同理,IBeamMDAA应该可以部署在以Mono为平台的其它Web服务器下,关于这方面的内容还一直未有足够的时间验证。
阅读全文
摘要:应用服务器的配置有几个部分,首先确认应用服务器是否担任了数据服务器角色,如果是,需要配置数据库访问信息:<activerecord><config><addkey="proxyfactory.factory_class"value="NHibernate.ByteCode.Castle.ProxyFactoryFactory,NHibernate.ByteCode.Castle"/><addkey="connection.driver_class"value="NHibernate.
阅读全文
摘要:IBeamMDAA并不是一个全新的框架与系统,它建立在Csla.net的基础上,所有的概念都遵守Csla.net的约定,Csla.net就好像是内核,IBeamMDAA围绕其创建了系统的外围。整个框架中业务对象(移动对象DTO)在逻辑的各层中移动,协调运转,数据对象是数据库实体对象,只在数据访问层存在。下面是IBeamMDAA的三种基本结构,反映了IBeamMDAA从逻辑结构到物理结构的三种部署,但然,还有很多种变体结构,但都是从这三种基本配置变化而来。 以上图中“应用服务器”中运行着数据访问层与业务逻辑层,客户端里运行着业务逻辑层,这是典型的物理三层。业务对象在各层中传递。 以上图中,“数据
阅读全文
摘要:4.1应用开发必备组件 序号 类库名称 版本 厂家 说明备注 1 IBeamMDAACore.dll 1.0.* 昆明光标科技有限公司 功能权限、界面定义注册属性,自动任务属性及工具类 2 IBeamMDAACommon.dll 1.0.* 昆明光标科技有限公司 当事人管理,界面、功能权限、系统设置,所有信息管理系统的基础 ...
阅读全文
摘要:在软件开发实践过程中,我们遇到各种各样的问题,有些是软件工程方面,有些是开发技术方面的,有些是人员组织方面的,问题各种各样,不一而足。所有从事开发或项目管理的软件公司都想找到一个软件开发的“银弹”,全面解决用户需求不断变化,开发时间一托再延的问题,要解决这些问题,各个公司都进行了尝试,形成了自己的开发模式及管理方法,在特定的领域内得到了应用与发展。 一般我们说拿出解决方案,首先应确认要解决的问题是什么,没有明确的目标容易在寻找解决方案的过程中迷失方向。 3.1 我们开发的软件是什么样的软件? 软件即以特定计算机语言编写,为解决特定问题而开发的计算机工具,软件分为系统软件(操作系统、数...
阅读全文
摘要:接上一篇与你分享我的成长经历谈到公司几年的大概发展过程,不是很详细,但已说明了大概的几件大事件,下面我们进入主题,讨论框架是什么? 欢迎您提出有意义的问题。IBeamMDAA 正确翻译为:光标多层分布式应用架构。 IBeam :即英文I-Beam,Beam 原义是一束光,I-Beam 原义指 计算机交互界面的 光标-“I”,俗称“工”字梁光标,当我们把鼠标指针指向输入框时,鼠标从“”变为“”,昆明光标科技有限公司 在翻译时取名为“Kunming IBeam Technology Co.,Ltd”,一方面指原义的光标,一方面也隐喻昆明光标科技有限公司从事的是与计算机科学相关的业务,是一家以IT.
阅读全文