资讯专栏INFORMATION COLUMN

网易云信Duilib开发实践和Windows应用界面开发框架源码开源介绍

lingdududu / 3435人阅读

摘要:我们的应用界面开发框架已经准备好在上做出贡献。最后,感谢曾经以及如今还在为网易云信贡献代码的小伙伴们,包括但不限于阳光,,等等大佬们。了解网易云信,来自网易核心架构的通信与视频云服务。

序言

Duilib介绍
Duilib是windows平台下的一款轻量级directUI开源库(遵循BSD协议),完全免费,可用于商业软件开发,只需在软件包里附上协议文件即可。Duilib可以简单方便地实现大多数界面需求,包括换肤、换色,透明等功能,支持多种图片格式,使用XML可以方便地定制窗口,能较好地做到UI和逻辑相分离,尽量减少在代码里创建UI控件。目前,Duilib库已经渐趋稳定,目前在国内有较为广泛的使用,网络上也有很多的使用教程。

网易云信Duilib介绍
Duilib是在研发易信PC版时被引入,历经六七年的研发过程,相对于原版Duilib,网易云信Duilib修复了一些问题和不足,包括但不限于控件种类不丰富、不支持动画、不支持半透明异形窗体、对多线程支持不好等,目前,网易云信Duilib配合比较高效的引擎库Base解决多线程问题,可以做出功能更强更稳定的客户端界面。

网易云信Duilib特色
多国语言支持
通用样式支持
DPI 缩放支持
GIF 动画支持
CEF 控件支持(CEF 2623 支持 XP)
触控设备支持(Surface、Wacom)
抽象渲染接口(为其他渲染引擎提供支持)

源码使用
克隆项目到你的磁盘中
git clone https://github.com/netease-im...
进入 NIM_Duilib_Framework/samples 目录,使用 Visual Studio 2013 Update 5 以上版本 IDE 打开 samples.sln。

工程目录结构
bin输出目录
docs 文档
libs 静态库
samples 示例Demo程序
third_party 第三方库
toolkits
─ base 基础类库
─ duilib 核心代码
─ shared 工具类库
─ ui_components 组件库

模块介绍
Bin:输出目录,各个示例程序输出目录,包含预设的皮肤和语言文件以及 CEF 依赖。
Docs:文档,duilib 接口的说明文档。
Libs:静态库,静态库编译后的输出目录,包含预设的一些 CEF 组件静态库。
Samples:示例Demo程序。
Third_party:第三方库,目前仅有 cef_control 有依赖。
Base:基础类库,提供了基本框架Messageloops,闭包,基本函数库(file、network等),基本类库(time,线程,定时器等),基本工具库(log,加解密)等。
Duilib:duilib 核心代码,依赖 base 但不依赖 shared。
Shared:工具共享库,对base库,第三方库做的简单的封装,如命令行解析、日志、路径处理,供其他模块使用。
ui_components:组件库,基于 duilib 封装的常用组件库如 msgbox、toast、cef_control 等。

控件介绍
容器
容器可作为容器控件的介质,包含常用的水平布局和垂直布局等容器。在一个程序界面开始设计前首先要考虑整个界面的布局,这就要用到容器。不同的容器有不同的布局样式,以下为支持的容器类型,可根据自己需要选择进行布局。
Box 自由布局容器
HBox 水平布局容器
VBox 垂直布局容器
TabBox 多标签布局容器
TileBox 格子布局容器
ScrollableBox 带有滚动条的布局容器
ChildBox 子布局容器
列表
此目录下包含一些列表容器,方便管理同类型的多份数据,以下列举了可用的列表容器。
Combo 下拉列表
ListBox 普通列表
TreeView 属性列表
VirtualListBox 虚拟列表
控件
控件包含了所有可用的独立控件,如按钮、文本、进度条等,提供用户输入或输出内容提供使用者查看。以下列举了所有可用的控件列表。
Window 用于容纳所有控件的窗口,这里暂时放到控件分类中
Control 所有控件的基类,包含了控件的基本属性和接口
Button 按钮控件
CheckBox 复选框
Option 单选框
Label 文本
Progress 进度条
Slider 滑动条
RichEdit 富文本
ScrollBar 滚动条
CefControl CEF 控件
盒子
盒子通常用于容纳一组不同的控件但由整个盒子统一响应用户触发的事件。不同于普通的容器或普通的控件,它们具有容器的基本布局功能,也具备控件的事件响应机制。
一般用于列表中显示一个子项,或者树形列表中显示一个节点,但这些子项和节点可能包含丰富的图标和文字描述并要求可以响应用户触发的事件。在这种场景下就会使用到这些盒子了,以下为支持的盒子模型:
ListContainerElement 常用于列表中显示一个子项
TreeNode 常用于树形列表中显示一个子节点
Other 一些其他的盒子模型
工具
DPI Manager DPI 管理
Muilt Language 多语言管理
Shadow 阴影管理
Window Base 窗口基础帮助类

应用开发框架介绍
线程模型和消息队列
线程模型参考Chromium基于异步通信的多线程模型。
一个线程请求另一个线程执行任务的时候,只需将任务封装成一个闭包投递到对方线程的任务队列即可,无需等待,减少卡顿。

相比于常见的基于锁的线程运行模式,减少了锁的开销,提高了线程的响应性。
这种基于异步通信的多线程模型,要求设计好各个子模块及其对应的数据结构,使得在协作时可以最大程度地进行异步通信。

引用
该文多为网易云信公开技术文档部分摘抄,如需详细阅读请进入以下传输门:
https://github.com/netease-im...
https://github.com/netease-im...
NIM Windows(PC)Demo导读

感谢
Duilib本身来自于开源社区,如今我们通过回馈开源社区,希望继续致力于与社区一起创建开发平台。我们的Windows应用界面开发框架已经准备好在GitHub上做出贡献:https://github.com/netease-im...。开源该技术提高了产品团队与开发者之间的透明度,有助于Windows开发的普及,并使开发者能够参与并对这些开源技术做出持续贡献。
最后,感谢曾经以及如今还在为网易云信Duilib贡献代码的小伙伴们,包括但不限于阳光,redrain,harrison等等大佬们。

想要阅读更多技术干货、行业洞察,欢迎关注网易云信博客。
了解网易云信,来自网易核心架构的通信与视频云服务。

__
网易云信(NeteaseYunXin)是集网易18年IM以及音视频技术打造的PaaS服务产品,来自网易核心技术架构的通信与视频云服务,稳定易用且功能全面,致力于提供全球领先的技术能力和场景化解决方案。开发者通过集成客户端SDK和云端OPEN API,即可快速实现包含IM、音视频通话、直播、点播、互动白板、短信等功能。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/61514.html

相关文章

  • app - 收藏集 - 掘金

    摘要:掘金该应用内容灵感来源于应用。理财计算器掘金理财计算器本文原创,转载请注明出处。前言最云阅一个仿网易云音乐,使用及豆瓣开发的开源项目掘金一款基于网易云音乐,使用及豆瓣开发的符合阅读类的开源项目。 [[源码] Android 不要错过的 7 个完整项目学习 - Android - 掘金](https://juejin.im/entry/58ba1...上周推荐了一个商业课程,很多人由于没...

    Rango 评论0 收藏0
  • PaaS市场迎来爆发 网易云信三大能力打造实现差异化竞争

    摘要:与市场上其它的相比,沈青松表示,网易云信打造的云服务已经成为比较经典和成功的商业模式。另外,场景化也是网易云信云服务的一大特色。纵观目前的云计算市场,IaaS、PaaS、SaaS呈现了两头大、中间小的特点,IaaS市场发展迅猛,市场格局清晰;SaaS市场发展百花齐放,唯独PaaS市场不温不火。不过,在网易云信副总经理沈青松看来,伴随中国数字经济的不断发展壮大,PaaS市场在2018年会迎来爆...

    since1986 评论0 收藏0
  • 微信小程序开发中的二三事之网易云信IMSDK DEMO

    摘要:传统的网页编程采用的三剑客来实现,在微信小程序中同样有三剑客。观察者模式不难实现,重点是如何在微信小程序中搭配其特有的生命周期来使用。交互事件传统的事件传递类型有冒泡型与捕获型,微信小程序中自然也有。 本文由作者邹永胜授权网易云社区发布。 简介为了更好的展示我们即时通讯SDK强悍的能力,网易云信IM SDK微信小程序DEMO的开发就提上了日程。用产品的话说就是: 云信 IM 小程序 S...

    weij 评论0 收藏0
  • 连麦互动直播方案全实践 2:网易云信连麦互动直播方案的演变过程

    摘要:连麦互动直播方案全实践系列文章基于网易云信的摸索和实践,从场景流程到方案架构,对直播体验深度优化方案连麦互动直播进行了全面的讲解和介绍。 毫无疑问直播是当前移动互联网最热门的领域之一,在超强热度的引导下直播领域也吸引了大量的商业资本。在各大直播应用万花齐放的时刻,也正是直播应用面临的真正风口。站在这个风口上,直播应用只把握好风向标,推出具备高用户粘性的差异化功能,才能在这个不断推陈出新...

    陈江龙 评论0 收藏0
  • 几十万人同时在线的直播间聊天,如何设计服务端架构?

    摘要:一个热门视频直播间人数可能达到几十万甚至上百万人,几十万人发消息,几十万人接收,流量相当惊人,那么服务端要如何设计才能保证系统流畅本文作者将结合他在网易云信多年开发的经验进行深度分析。网易云信至今已申请了余项专利,远超市场同类产品。 一个热门视频直播间人数可能达到几十万甚至上百万人,几十万人发消息,几十万人接收,流量相当惊人,那么服务端要如何设计才能保证系统流畅?本文作者将结合他在网易...

    Jeff 评论0 收藏0

发表评论

0条评论

lingdududu

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<