打破信息壁垒,建设一体化大平台

简介: 打破信息壁垒,建设一体化大平台

孤岛和烟囱

十几年前有个很火的概念

“信息孤岛”

指的是互相不关联、互相脱节

没有业务和数据流动的多个系统

本来嘛,系统是一个个建立

建设目标不同,使用人员不同

最后就成了孤岛

一旦需要联动、集成

就会遇到各种问题


后来,有了更高级的说法

“信息烟囱”

他比孤岛稍微好了一点

上下是贯通的

但是横向形成了信息壁垒

比如民政的数据

消防的数据

交警的数据

彼此自成体系


在新形势下

各种大数据、一体化平台慢慢兴盛起来

破圈,解决发展的不对称

确保安全可靠的前提下

实现数据共享,业务灵活传递

Facade门面模式

在编程领域,很早就有一种做法

通过统一的门面

将不同的功能集成在一起

比如我们有两个类

一个提供短信服务

另一个提供邮件服务

就可以采用门面集成

/**
 * 邮件服务类
 */
public class MailService{
    public void send(String mailfrom, String mailto, String content){}
}
/**
 * 短信服务类
 */
public class SmsService{
    public void send(String mobile, String msg){}
}

现在使用的时候

需要根据情况选择调用不同的service

但如果采用门面集成一下

就变成了一个类

public class FacadeService{
    private MailService mailService=new MailService();
    private SmsService smsService=new SmsService();
    public void sendMail(String mailfrom, String mailto, String content){
        mailService.send(mailfrom, mailto, content);
    }
    public void sendSms(String mobile, String msg){
        smsService.send(mobile, msg);
    }
}

这样无论发送什么

都只需要调用 FacadeService 即可

有什么意义吗?

这个代码的难度相当低

初学者也能看的明白

但意义何在?

就是为了包装一层吗?


门面模式的应用场景

通常是降低系统访问的复杂度

将多个复杂的程序整合

然后提供给使用者一个简洁的入口

把上面的例子改一下

假如 MailService 和SmsService 里

各自已经封装了数十个方法和内部属性

而 FacadeService 仍然保持不变

那请问,调用服务的人

让他选择调用2个基础类

和只调用门面类

是不是变得简单了呢?

系统演化

对于遗产系统

比如用了很多年的、或是其他厂商的遗产

改造的方法通常有四种:

改造、集成、继承、淘汰

一般是根据原系统的价值和技术决定


比如我们用Java开发

原来的系统是 vb 或 dephie 的

这个就很难继承下来

还有的系统虽然能访问

但简直就是代码shit山

看着就恶心


所以我们一般的原则如下:

技术水平高的系统:改造或集成
技术水平低的系统:继承
业务价值高的系统:改造
业务价值低的系统:集成
技术低,业务也低的话就要淘汰

采取门面集成

大家都用过微信

可以简单的认为

小程序走的就是集成的模式

根据入参的不同,提供大量的应用

而作为用户,只需要一个微信号就可以


这几年微信的野心很大

作为群众基础最庞大的生态

小程序的应用,实际上让微信成了最大的系统入口

无论是用户授权,OAuth,扫码登录,一键登录等等

让众多的应用放在一个统一的平台里

为什么很多人手里的app存活量少?

一是很多低质量的厂商自己作死

广告、消费陷阱等等

另一方面也是空间和代价的考量

现在让一个新用户安装软件

成本基本上在10-20元

诸位都见过滴滴、饿了么、拼多多拉新人有多疯狂


所以这种集成模式

其实还是对用户比较友好的

化繁为简

很多细节无需知道

好用就行了

Spring中的应用

我们最常见的Spring Boot

启动类里都有这么一段:

@SpringBootApplication
public class DemoSvrApplication {
 public static void main(String[] args) {
        ConfigurableApplicationContext context = SpringApplication.run(DemoSvrApplication.class, args);
    }
}

不知道有多人去研究过这个 SpringApplication.run();

这里面就封装了大量细节

包括创建bean容器、初始化bean工厂、上下文设置、监听启动

我们启动的时候控制台显示的一堆日志

就是在隐式的做了大量工作的体现

所以,如果您有以下的需要:

  1. 多个平台合并在一起,提供统一入口
  2. 多个相关功能,避免耦合
  3. 隐藏诸多细节,给使用者简单的入口

这些情况下,就可以考虑使用Facade门面模式

多说无益,动手开干

相关文章
|
网络协议 文件存储 数据安全/隐私保护
【搭建服务器】Win10 IIS搭建webdav服务以及公网访问教程 - 挂载webdav
【搭建服务器】Win10 IIS搭建webdav服务以及公网访问教程 - 挂载webdav
|
存储 负载均衡 关系型数据库
关系型数据库设计集群架构架构选择
【5月更文挑战第6天】还可以考虑使用现有的数据库管理系统(DBMS)提供的集群解决方案,如MySQL的InnoDB Cluster、PostgreSQL的Streaming Replication和Patroni等。这些解决方案已经经过了广泛测试和验证,可以大大降低集群架构设计和实现的难度。
235 1
关系型数据库设计集群架构架构选择
|
存储 关系型数据库 Java
PostgreSQL 教程
本 PostgreSQL 教程可帮助您快速了解 PostgreSQL。您将通过许多实际示例快速掌握 PostgreSQL,并将这些知识应用于使用 PostgreSQL 开发应用程序。
597 1
PostgreSQL 教程
|
数据可视化 算法 数据挖掘
【2022高教社杯数学建模】C题:古代玻璃制品的成分分析与鉴别方案及代码实现(已经更新完毕)
2022年高教社杯数学建模竞赛C题的详细分析、解题过程和代码实现,题目围绕古代玻璃制品的成分分析与鉴别,涉及表面风化分析、分类规律研究、未知类别鉴别和化学成分关联关系比较等多个问题。
271 1
【2022高教社杯数学建模】C题:古代玻璃制品的成分分析与鉴别方案及代码实现(已经更新完毕)
|
存储 内存技术
【RAID磁盘阵列服务器数据恢复】华为OceanStor Dorado存储系统RAID-TP数据丢失数据恢复案例
客户报告其华为OceanStor Dorado存储系统的RAID-TP出现故障,导致数据丢失。RAID-TP是一种增强型RAID级别,包含数据磁盘、校验磁盘和转换磁盘,可在两个磁盘故障时仍保护数据。通过分析RAID结构与工作原理,我们制定了恢复方案:首先从校验磁盘读取信息并计算出丢失的数据块,接着将恢复的数据写入新磁盘。由于缺乏现成工具,需定制RAID重组程序以恢复数据。华为的动态RAID重构技术保证了重构过程中冗余级别的稳定。
209 1
|
弹性计算 数据安全/隐私保护
3分钟部署 灵魂面甲(SOULMASK)联机服务
灵魂面甲(Soulmask)是由CampFire Studio开发,QoolandGames发行的一款开放世界生存制作类游戏,是一款主打真实体验的生存沙盒游戏。本文介绍通过计算巢快速部署灵魂面甲(SOULMASK)联机服务。
3分钟部署 灵魂面甲(SOULMASK)联机服务
|
Web App开发 缓存 文字识别
scrapy_selenium的常见问题和解决方案
scrapy_selenium是一个结合了scrapy和selenium的库,可以让我们使用selenium的webdriver来控制浏览器进行动态网页的爬取。但是在使用scrapy_selenium的过程中,我们可能会遇到一些问题,比如如何设置代理、如何处理反爬、如何优化性能等。本文将介绍一些scrapy_selenium的常见问题和解决方案,希望对你有所帮助。
573 0
scrapy_selenium的常见问题和解决方案
|
存储 NoSQL 数据处理
探索MongoDB:灵活、高性能的NoSQL数据库解决方案与应用实践
探索MongoDB:灵活、高性能的NoSQL数据库解决方案与应用实践
511 1
|
Java UED
Java多线程实现文件上传详解
文件上传是Web应用程序中常见的功能之一,用户可以通过网页将文件从本地计算机上传到服务器。在处理大文件或多用户并发上传的情况下,为了提高性能和用户体验,常常使用多线程来实现文件上传功能。本文将详细介绍如何使用Java多线程实现文件上传,包括上传原理、多线程实现、代码示例等内容。
460 0
|
前端开发 JavaScript API
说一说你对混合开发(Hybrid Development)的了解。
混合开发(Hybrid App)融合Web与原生技术,实现跨平台开发,降低多平台工作量。使用JavaScript等Web技术提升开发效率,通过React Native、Flutter等框架结合原生API。虽性能略逊于原生,但体验接近,且更新便捷、成本效益高。丰富的社区支持和成功案例(如网易云音乐、闲鱼)证明其可行性。随着技术进步,混合开发的潜力和应用将不断扩大。
545 1