CoreUI调整讨论
<h2>1.现有架构</h2>
<pre><code class="language-plantuml">@startuml
rectangle LabApplication{
node 3DPlayer
node Editor
node VRPlayer
node PadPlayer
}
rectangle LabPlayerView{
component PlayerCoreUI
}
rectangle LabPlayerModel {
component PlayerCore
}
PlayerCoreUI ---> PlayerCore
3DPlayer ---> PlayerCoreUI
Editor --> PlayerCoreUI
VRPlayer --> PlayerCoreUI
PadPlayer --> PlayerCoreUI
@enduml</code></pre>
<h3>存在的问题</h3>
<ol>
<li>UI的复用问题,重复开发</li>
<li>应用端缺乏一个成熟的框架来约束</li>
</ol>
<h2>2.新的架构</h2>
<h3>设计决策</h3>
<ol>
<li>跟UI相关的逻辑适用MVVM架构,不局限于播放组件,也适用于应用端</li>
<li>理想情况下,播放组件的UI仅仅保留跟元器件相关联的UI, 其它UI应该由各个应用端自己维护</li>
<li>对现有的CoreUI做拆分业务逻辑剥离出来,可共用的业务逻辑放在CoreViewModel中</li>
<li>不同平台的播放组件的UI组件,由各自的View层实现。</li>
<li>CoreUI可能会依然存在,但只有公共的UI控件</li>
<li>以上设计需要有一个支持MVVM的基础框架,目前有找到一个
参考资料
<a href="https://cloud.tencent.com/developer/article/1390650">https://cloud.tencent.com/developer/article/1390650</a>
国外的git地址访问比较慢,可以用这个git地址下载仓库
<a href="https://gitclone.com/github.com/vovgou/loxodon-framework.git">https://gitclone.com/github.com/vovgou/loxodon-framework.git</a></li>
</ol>
<pre><code class="language-plantuml">@startuml
rectangle LabApplication{
node 3DPlayer
node Editor
node VRPlayer
node PadPlayer
}
rectangle LabPlayerView{
component PlayerView3D
component PlayerViewVR
component PlayerViewEditor
component PlayerViewPad
}
rectangle LabPlayerViewModel {
component PlayerCoreViewModel
}
rectangle LabPlayerModel {
component PlayerCore
}
PlayerCoreViewModel ---> PlayerCore
PlayerView3D --> PlayerCoreViewModel
PlayerViewEditor --> PlayerCoreViewModel
PlayerViewVR --> PlayerCoreViewModel
PlayerViewPad --> PlayerCoreViewModel
3DPlayer-->PlayerView3D
VRPlayer-->PlayerViewVR
Editor-->PlayerViewEditor
PadPlayer-->PlayerViewPad
@enduml</code></pre>
<h2>3.仓库说明【临时】</h2>
<table>
<thead>
<tr>
<th>仓库</th>
<th>仓库说明</th>
<th>仓库地址</th>
</tr>
</thead>
<tbody>
<tr>
<td>vlabplayerview3d</td>
<td>播放组件-3D相关的View和代码仓库</td>
<td><a href="http://git.sdp.nd/component-dll/vlabplayerview3d.git">http://git.sdp.nd/component-dll/vlabplayerview3d.git</a></td>
</tr>
<tr>
<td>vlabplayerviewpad</td>
<td>播放组件-PAD相关的View和代码仓库</td>
<td><a href="http://git.sdp.nd/component-dll/vlabplayerviewpad.git">http://git.sdp.nd/component-dll/vlabplayerviewpad.git</a></td>
</tr>
<tr>
<td>vlabplayerviewvr</td>
<td>播放组件-PAD相关的View和代码仓库</td>
<td><a href="http://git.sdp.nd/component-dll/vlabplayerviewvr.git">http://git.sdp.nd/component-dll/vlabplayerviewvr.git</a></td>
</tr>
<tr>
<td>VLab_UIFrame</td>
<td>从现有编辑器重构仓库中剥离出的MVVM的框架</td>
<td><a href="http://git.sdp.nd/NDVlabFrameGroup/VLab_UIFrame.git">http://git.sdp.nd/NDVlabFrameGroup/VLab_UIFrame.git</a></td>
</tr>
<tr>
<td>vlab-CorePlayer</td>
<td>运行与验证现有播放组件的最小仓库</td>
<td><a href="http://git.sdp.nd/vlab-projects/vlab-CorePlayer.git">http://git.sdp.nd/vlab-projects/vlab-CorePlayer.git</a></td>
</tr>
</tbody>
</table>