我正在尝试为我们正在制作的新的基于Java的Web应用程序(门户类型应用程序)的前端绘制架构.我希望从第一天起就做到这一点,我想在这里开始讨论,以帮助我在我的建筑设计中实施鲍勃叔叔的清洁建筑.
这是我们的技术堆栈从上到下的快速破坏(技术不重要,结构是):
关键点:
特别是,外圈中声明的内容的名称不得被内圈中的代码提及.这包括功能,类.变量或任何其他命名的软件实体.
为了坚持Bob的Clean Architecture,我和自己一起来回顾了应用逻辑的位置,即他的架构中的"用例"层.
这是我提出的方法:
实体封装了企业范围的业务规则.
这是包含域对象的 Domain模块所在的位置,这些是自包含的对象,彼此之间的依赖性最小.只有与对象本身有关的逻辑可以存在于这些域对象上,而不是特定于用例的逻辑.
使用转换数据的服务总线通过WSDL公开对数据库的访问,而不是像JPA或Hibernate这样的ORM.因此,我们没有传统意义上的"实体"(使用Ids),而是以数据为中心的方法使该层成为数据访问层,由Consumer模块呈现给应用程序的其余部分.
此层中的软件包含特定于应用程序的业务规则.
这是我们的应用程序的用例特有的逻辑.对此层的更改不应影响数据访问层(第1层).对GUI或框架实现(Spring MVC)的更改不应影响此层.
这是一个有点棘手的地方:
由于我们的数据访问层(在第1层)必须保持清洁应用程序逻辑,我们需要一个便于以适合用例的方式使用该层的层.我发现这个问题的一个解决方案是使用我选择调用MVC-VM的" MVVM模式 " 的变体.请参阅下面的说明."VM"部分位于此Use Case层中,由-classes 表示,这些类封装了此特定于用例的逻辑.*ViewModel
此层中的软件是一组适配器,可将数据从最方便用户和实体的格式转换为某些外部机构(如数据库或Web)最方便的格式.
这就是我们GUI的MVC架构所在的位置(我们的"MVC-VM"中的"MVC").本质上,这是当Controller-classes从-classes中获取数据*ViewModel并将其放入Spring MVC的ModelMap对象中时,这些对象由View中的FreeMarker-templates直接使用.
我看到它的方式,在我们的情况下,servicebus也属于这一层.
通常,除了与下一个圆圈内部通信的胶水代码之外,您不会在此图层中编写太多代码.
这个层实际上只是我们应用程序中的配置层,即Spring配置.例如,这将指定FreeMarker用于渲染视图的位置.
MVVM有助于将图形用户界面的开发(作为标记语言或GUI代码)与业务逻辑或称为模型的后端逻辑(也称为数据模型)区分开来,以区别于视图模型).MVVM的视图模型是一个值转换器,意味着视图模型负责从模型中公开数据对象,以便轻松管理和使用这些对象.
更多关于维基百科的MVVM模式.
MVC-VM角色将在我们的应用程序中实现,如下所示:
ModelMapSpring MVC中由视图模板使用的数据结构表示.TLDR;随着vfs objects = catia fruit streams_xattr我的smb.conf,使用苹果电脑的股票中创建的文件不继承权限,并得到扩展ACL。
我正在为我们的办公室设置一个带有 Samba 共享的 NAS,这是一个 50/50 macOs/Windows 10 商店。每个人都应该可以使用专用用户帐户访问共享。
在 Mac 的性能和 TimeMachine 支持方面,我想利用 Samba 4 中的最新增强功能,因此我启用了这些模块 vfs objects = catia fruit streams_xattr
权限不会被继承,并且这些vfs objects集合不尊重掩码。我已经尝试了多种force create和create masks的组合,并且(如下例所示)inherit permissions
如果没有设置vfs objects模块,权限也符合预期。
我的smb.conf(相关摘录):
[global]
server string = %h server (Samba, Ubuntu)
server role = standalone server
client signing = disabled
unix password sync = yes
vfs objects = catia fruit …Run Code Online (Sandbox Code Playgroud) 我正在制作一个在 iframe 中运行“360 全景查看器”的网站,其中源页面使用 JavaScript 并window.DeviceOrientationEvent确定用户是否使用具有方向功能的移动设备。我在 iOS Safari 和 Chrome 上看到一些奇怪的行为:
window.DeviceOrientationEvent计算结果为 true,但deviceorientation事件永远不会被触发。
Android Chrome 的情况并非如此 - 在 iFrame 中使用时,该事件会按预期连续触发。
当直接访问页面(在 iOS 上)时,我看到事件触发。就好像在 iframe 中使用它会以某种方式“阻止”此事件。
这对我来说没有什么意义,研究它并没有透露多少信息,除了一些模糊的迹象[1, 2],它实际上可能与 CORS 有关 - 无论 iframe 源是否与父页面位于同一根域上。这对我来说更没有意义..
有人知道吗?
architecture ×1
html ×1
iframe ×1
ios ×1
java ×1
javascript ×1
macos ×1
mvvm ×1
permissions ×1
samba ×1
spring-mvc ×1
ubuntu ×1
vfs ×1