我们实际上使用Symfony 2 PHP框架和Twig作为模板引擎.我们认为我们可以避免View层的代码重复,并从渐进增强(p-jax)中受益.
当前状态:
PJAX不会根据路由处理页面布局的部分更新.我们的目标是实现一个系统,当Y.App(路由)处理导航时,只会更新一些页面"片段"(HTML节点).
在这方面,我们开始实施POC:https://github.com/benjamindulau/PocSfYui/ 可在此处找到Javascript:https://github.com/benjamindulau/PocSfYui/tree/master/src/Acme/PocBundle/Resources/public/js 和Y.App初始配置:https://github.com/benjamindulau/PocSfYui/blob/master/src/Acme/PocBundle/Resources/views/layout.html.twig#L66
我们的想法是,当我们第一次加载页面时,一切都在服务器端处理(渐进增强),这意味着整个页面和页面片段由服务器呈现.对于应由Y.App执行的下一个请求,我们定义了一个JSON格式,如下所示(/ photos path response):
{
"title": "MyAwesomeWebsite - Photos", // page <title>,
"fragments": {
"sidebar": "<h2>Sidebar Menu<\/h2><!-- etc.... -->", // ..... maybe an updated menu for active page
"main": "<h2>Photos<\/h2><div id=\"photo-list-container\"><ul id=\"photo-list\"><!-- photo items.... --></ul></div>", // Pre-rendered photo list
},
"templates": {
"photo_item_tpl": "<li data-id=\"{{index}}\"><img src=\"{{url}}\" alt=\"{{title}}\" \/><\/li>" // template used later by Y.App for adding new photos
}
}
Run Code Online (Sandbox Code Playgroud)
这基本上是当前视图内容(路由)的"JSONified"版本.
在服务器端,我们检测到请求来自Y.App而不是渲染我们的Twig模板,我们从中提取"块"并构造此JSON响应,其中包含需要更新的页面片段+客户端需要的手柄模板这个特定的页面.
在客户端(Y.App): …
我正在采用DDD概念来设计我们的下一个项目,更具体地说是CQRS.
在阅读了很多东西后,我现在正试图实现一个简单的概念验证.
事情是我开始后就被困住了:p
我正在尝试将此方法应用于简单的用户注册过程,其中的步骤是:
从实现的角度来看,到目前为止我得到的是:
就是这样,控制器动作不知道任何一个.
所以,我的猜测是,因为这个上下文中的所有东西都要同步完成(除了电子邮件发送),我可以使用直接/同步命令总线,并在控制器操作中,在命令总线调用之后,我可以查询对于只读用户(查询数据库),如果它存在假设一切顺利,那么我可以给用户一个确认消息.
自动登录过程由事件处理程序处理.
假设这是正确的,如果出现问题怎么办,如何通知用户正确的信息?
我们可以通过互联网找到的文章中经常使用一个常见的例子:客户使用过期的信用卡支付订单.系统接受请求,通知用户一切正常,但用户几分钟后收到一封电子邮件,告诉他无法处理他的订单.
嗯,在许多情况下,这种情况是可以接受的,但对于其他一些情况,这是不可能的.那么处理这些用例的例子在哪里?:p
谢谢 !
仍在深入研究CQRS实施实验,我决定从头开始浏览我的博客并将其用作沙盒.
我阅读了很多有关有界背景的内容,在我看来,这是所有这些中最精巧的方法,也许是解释和应用于实际项目中最困难的方法.
幸运的是,我的域名非常简单;-)
我尝试识别不同的有界上下文,并确定哪个模型成为每个上下文中的聚合根.
域规则非常简单:
当作家 撰写博客文章时,他必须选择一个类别来保存他的帖子,并且他可以选择多个标签来提高他的帖子可见性
当读者访问博客时,他可以按类别或标签浏览博客帖子
只有这些规则,我们已经得到了几个有界的背景,我是对的吗?
用户(编写者)编写后置上下文.在这些上下文中,Post是聚合根
用户(读者)按类别浏览帖子.在这些上下文中,Category是聚合根.
用户(读者)按标签浏览帖子.在这种情况下,好吧,我不确定...... ;-)
我认为对吗?
鉴于我(右),我想知道,在执行这个时,谁负责创建不同的对象和关系?
以用户撰写新博客帖子的上下文为例,我真的不知道应该在哪里创建标签实例,以及我是否应该在写模型中创建Post及其标签之间的关系.类别也是如此,不知道:p
另外,有界上下文是否意味着特定的模型?这意味着对于每个有界上下文,我会有一个不同的对象图(在写模型中)?
需要一些脑电波来清楚地看到这一点;-)
为了添加新帖子,到目前为止,我的控制器要求命令总线处理"ComposeCommand",处理程序(PostService)创建一个新的"Post"实例,在其上调用compose方法并最终要求写入持久性以保存最新帖子.
Post :: compose()方法引发一个"PostComposedEvent"事件,读取模型侦听该事件以更新其数据.
在所有这些我不知道如何介绍"类别"和"标签".
谢谢.