什么是企业应用?

看到“企业应用“这次术语, 在你的下意识里,第一反应能想起哪些相关的词?

我的条件反射是: ERP,  CRM, HRM, BI, CMS ......

企业应用这个词听起来很高大上,  但是什么“企业应用”?  我发现我没法下一个准确的定义。

回顾下我的工作经历, 应聘的时候似乎都是要做"企业应用" 开发。

毕业后第一份工作就是做很热门的OA系统,就是所谓的办公自动化,包括了邮件、工作流、表单、文档系统等公司信息化需求, 用户肯定是部署OA的企业内部人士,算是最基本的企业应用开发吧。

后来做了欧洲的税务系统,实现他们各种各种复杂的业务逻辑,用户也是税务局的员工, 应该是标准的企业应用。

再后来做一个庞大的系统来支持公司的产品销售,用户既有公司的销售人员,也有外部的用户。 系统相当复杂, 由很多子系统组成,各个子系统还存在着复杂的关系, 接口五花八门,有的用Webservice , 有的用数据复制, 有的用MQ, 甚至还有邮件接口和FTP接口,  这应该也是一个典型的企业应用。

似乎一个企业应用就是帮助企业干活的信息系统,满足企业日常运营,  帮助他们完成流程的信息化。

人称软件教父的Martin Flower 非常善于抽象,   在著名的《企业应用架构模式》一书中他就针对企业应用抽象出这么几点:

1. 企业应用一般涉及到持久化数据

初一看似乎是废话: 如果数据不能持久化,应用也没什么意思了。

实际上重点是企业数据的生存年限相当的长, 甚至比访问这些数据的程序都要长,无论硬件、操作系统、应用程序怎么变,数据都不能受到损害。

2. 企业应用一般涉及大量数据

这是毫无疑问的, 一个企业运行过程中绝对不仅仅产生几千,几万条数据。

3. 企业应用涉及到很多人同时访问数据

如果是内部系统还好, 要是对外的Web系统, 那用户量可能非常大。

4. 企业应用涉及到大量的用户操作界面

有几百个界面毫不为奇, 用户使用频率差异很大,特别是这些用户没有技术背景。

5. 企业应用很少独立存在, 通常需要与散布在企业周围的其他应用进行集成。

这些各种各样的系统是在不同时期, 用不同的技术构建起来的, 把他们集成起来的痛苦经历过的码农才知道。

但是互联网应用像淘宝,京东商城是否属于企业应用的范畴?    Martin Flower并没有明确说明。互联网应用符合了上面的第2,3两点,  数据量巨大, 高并发访问, 技术上要求规模大、扩展性强、可靠性高 。

既然难于区分,  我想不妨根据用户的不同, 分为两个大类:


1. 面向企业用户

ERP(企业资源规划),  CRM(客户关系管理) , HRM(人力资源管理),SCM(供应链管理), BI(商业智能) ,还有各种各样根据企业的需求做的定制软件(例如营销系统) 等应该属于这一类。

这类应用的用户数不会像互联网应用那样特别巨大, 但是业务逻辑一般比较复杂, 为了实现这些变态的,多变的逻辑经常得付出巨大的代价。

稍微大点的企业都会涉及到应用之间的集成问题, 这又是一个大坑。

由于用户主要是企业内部人员, 直接用于企业的生产环境,  一旦出错, 整个公司的活动都可能受影响, 所以对可靠性, 稳定性要求较高。

这类应用一般都是收费的,并且价格不菲。 既然是掏了真金白银, 系统出了故障,客户一般会怒气冲冲的跳起来找售后。

2. 面向消费者用户

电子商务、社交、娱乐、通信等互联网应用属于这一类,相比而言, 消费者对于出错的容忍度要高一点 :  你肯定不会因为微信发不了朋友圈而去找腾讯要赔偿, 最多骂几句而已。

由于这类应用的用户量巨大, 高并发访问的特质, 即使是简单的业务逻辑,实现起来也很不容易, 例如从数据库读取信息然后展示, 如果是几十个人或者上百人访问,可能直接发出SQL查询数据库就搞定了;  如果有几万甚至几十万访问, 那非得搞一些缓存,分布式,页面静态化等技术来搞定了。  


由于用户是直接的消费者, 产品的体验至关重要,用起来不爽, 用户马上用脚投票,分分钟抛弃你。


当然这些互联网应用肯定有后台的管理系统,用来做运营、营销和数据分析, 这又属于第一类的范畴了。

码农翻身相关历史文章推荐:


Java EE

我是一个线程

我是一个Java class

Java:一个帝国的诞生

JDBC诞生记

JDBC后传

一个不安分的JDBC驱动

JSP:一个装配工的没落

Javascript: 一个屌丝的逆袭

Spring本质系列(1) -- 依赖注入

Spring本质系列(2) -- AOP

Http 历险记(上)

Http 历险记(下)—Struts的秘密

三层架构和MVC那点事儿

Java帝国之 Java Bean(上)

Java帝国之 Java Bean(下)

计算机网络

我是一个路由器

我是一个网卡

TCP/IP之大明邮差

TCP/IP之大明内阁

TCP/IP之蓟辽督师

张大胖的socket

IE为什么把Chrome和火狐打伤了?

对浏览器村的第二次采访

节约标兵IE的自述

EMail诞生记

EMail诞生记(下)

操作系统

我是一个进程

CPU阿甘

CPU阿甘之烦恼  

我是一个键盘

我是一块硬盘(上)  

我是一块硬盘(下)

那些烦人的同步和互斥问题  

冯·诺伊曼计算机的诞生

数据库

小李的数据库之旅(上)

小李的数据库之旅(下)

张大胖学数据库

数据库村的旺财和小王

你看到的只是冰山一角, 更多精彩文章,尽在“码农翻身” 微信公众号, 回复消息"m"或"目录" 查看更多文章

有心得想和大家分享? 欢迎投稿 ! 我的联系方式:微信:liuxinlehan  QQ: 3340792577

0?wx_fmt=jpeg

公众号:码农翻身

“码农翻身”公众号由工作15年的前IBM架构师创建,分享编程和职场的经验教训。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
企业级应用的开发难点很多,以下是其中一些较为常见的难点: 1. 复杂业务逻辑:企业级应用通常需要处理复杂的业务逻辑,包括多种业务流程、多个用户角色、多个系统集成等。因此,开发人员需要充分理解业务流程,设计合理的数据模型和业务逻辑,并且在应用中实现这些逻辑,确保应用的正确性和稳定性。 2. 大规模数据处理:企业级应用通常需要处理大规模数据,包括数据的收集、存储、处理和分析等。因此,开发人员需要使用适当的数据存储方案,如关系型数据库、NoSQL数据库、数据仓库等,并且需要设计高效的数据处理和分析算法,以确保应用的性能和可扩展性。 3. 安全性和隐私保护:企业级应用通常需要处理敏感数据,如客户信息、交易记录等。因此,开发人员需要实现严格的安全措施,包括数据加密、身份验证、访问控制等,以确保用户数据的安全和隐私。 4. 多平台适配:企业级应用通常需要支持多个平台,如Web、移动设备、桌面应用等。因此,开发人员需要设计灵活的架构,以支持不同平台的适配和扩展,并且需要针对不同平台的特点进行优化,以确保应用的用户体验和性能。 5. 维护和升级:企业级应用通常需要长期维护和升级,以适应不断变化的业务需求和技术环境。因此,开发人员需要设计可维护和可扩展的架构,确保应用的代码质量和可维护性,并且需要不断升级应用的技术栈和功能,以保持应用的竞争力和适应性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值