Tag: 架构

Elixir / erlang适用于微服务方法?

最近我一直在做一些Docker撰写的实验,以部署多个协作的微服务。 我可以看到微服务提供的许多好处,现在有一个很好的工具来pipe理它们,我认为跳进微服务并不难。 但是,我也一直在试验Elixir,而且我非常喜欢自己提供的好处。 鉴于它鼓励将代码打包到多个分离的应用程序中,并支持热码升级,那么如何将docker与elixir(或erlang)混合? 例如,如果我想使用docker,因为它提供dev-prod奇偶校验,那么elixir如何适应呢? 鉴于docker集装箱是不可变的,我失去了进行热码升级的能力,对吧? 蓝色/绿色部署或金丝雀版本呢? 我的意思是,我可以用Elixir写微服务,就像用其他语言写的一样,polyglotism是微服务的好处之一,但是我没有得到使用OTP平台的全部好处,我猜测纯粹的协作erlang应用程序是更好的方式,使用中间队列在用不同(或不是)语言编写的微服务之间进行通信。

不使用存储库模式,使用ORM原样(EF)

我总是使用Repository模式,但对于我最近的项目,我想看看能否完善它的使用和“工作单元”的实现。 我开始挖掘越多,就开始问自己这个问题: “我真的需要它吗? 现在,这一切都从Stackoverflow上的一些评论开始,在他的博客上跟踪Ayende Rahien的post,其中有2个具体的, 存储库是最新单 问-ayende生活,而无需储存库,是-他们价值-生活 这可能会被永远讨论,并取决于不同的应用。 我想知道什么, 这种方法是否适合entity framework项目? 使用这种方法是业务逻辑仍然在一个服务层,或扩展方法(如下所述,我知道,扩展方法是使用NHib会话)? 这很容易使用扩展方法完成。 干净,简单,可重复使用。 public static IEnumerable GetAll( this ISession instance, Expression<Func<T, bool>> where) where T : class { return instance.QueryOver().Where(where).List(); } 使用这种方法和Ninject作为DI,我需要使Context成为一个接口,并在我的控制器注入?

“解决scheme架构师”和“应用程序架构师”有什么区别?

就我所见, 解决scheme架构师对于Applications Architect来说只是一个不同的“营销”术语。 那是正确的还是angular色实际上不同? 如果是这样,怎么样? 是的,我已经在StackOverflow和Google上search了这个。

REST微服务间的事务?

比方说,我们有一个用户,电子钱包REST微服务和一个粘合在一起的API网关。 当Bob在我们的网站上注册时,我们的API网关需要通过用户微服务和钱包通过钱包微服务来创build用户。 下面是一些情况可能出错的情况: 用户Bob创build失败:没关系,我们只是将错误消息返回给Bob。 我们正在使用SQL事务,所以没有人在系统中看到Bob。 一切都很好:) 用户Bob已创build,但在创build电子钱包之前,我们的API网关硬件崩溃。 我们现在有一个用户没有钱包(不一致的数据)。 用户Bob已创build,并且在我们创build电子钱包时,HTTP连接将断开。 钱包创build可能已经成功,或者可能没有成功。 有什么解决scheme可以防止这种数据不一致的发生? 是否有模式允许交易跨越多个REST请求? 我已经阅读了关于这个问题上的两阶段提交维基百科页面,但我不知道如何在实践中应用它。 这个primefaces分布式事务:一个RESTfuldevise文件也似乎很有趣,虽然我还没有读过它。 另外,我知道REST可能不适合这个用例。 也许正确的方法来处理这种情况,完全放弃REST,并使用不同的通信协议,如消息队列系统? 还是应该在应用程序代码中执行一致性(例如,通过检测不一致性并修复这些不一致的后台作业,或者通过在“用户”模型上使用“创build”值,“创build”值等)具有“状态”属性?

单页JavaScript Web应用程序的体系结构?

在客户端应该如何构build一个复杂的单页JS Web应用程序? 具体来说,我很好奇如何干净地构build模型对象,UI组件,任何控制器和处理服务器持久性的对象应用程序的结构。 MVC起初似乎是合适的。 但是,UI组件嵌套在各种深度(每种模式都有自己的方式来处理/响应模型数据,并且每个事件都会生成自己可能会或可能不会直接处理的事件),所以似乎并不像MVC那样可以清晰地应用。 (但如果不是这样,请纠正我。) – ( 这个问题导致了两个关于使用ajax的build议,除了最简单的单页面应用之外,这显然是需要的。

为什么我们需要RESTful Web服务?

我将学习REST风格的Web服务(最好是说我必须这样做,因为它是CS硕士学位课程的一部分)。 我已经阅读了维基百科中的一些信息,并且在Sun Developer Network上也阅读了一篇关于REST的文章,我发现这不是一件容易的技术,有构buildRESTful应用程序的特殊框架,而且通常与SOAP Web服务和程序员应该明白什么时候使用SOAP,什么时候REST可以是很好的方法。 我记得几年前,SOAP是非常stream行的(时髦?),每一个好的简历都必须包含“SOAP”。 但在实践中,它很less被使用,并且达到了非常简单的目的。 在我看来,REST是另一个“时尚的最后一个字”(或者我可能完全错误,因为我从来没有见过REST的实践)。 你能给我举一些REST应该使用的例子,为什么我们不能在没有REST的情况下做同样的事情(或者为什么我们不花费更多的时间来做同样的事情而不使用REST)呢? 乌兹别克斯坦 :不幸的是,我看不到任何具体的论点,可以在第一个评论中打动我的脑海。 让我觉得REST是真棒技术! 我想看到这样的答案: 我正在开发另一个复杂的HelloWorld应用程序,我们需要传输大量/微小的数据,并向我的同事提出了REST解决scheme: – 哦,该死的! 强尼,我们当然应该使用REST来实现这个应用程序! – 是的,比利,我们可以使用REST,但是我们最好使用SOAP。 相信我,因为我知道开发HelloWorld应用程序的一些东西。 但是SOAP是上个世纪的老式技术,我们可以使用更好的技术。 – 比利,你准备好花3天时间来试用REST吗? 我们可以在2小时内用SOAP来做到这一点。 – 是的,我相信我们会花更多的时间来实现相同的安全/性能/可伸缩性/其他任何与SOAP有关的事情。 我确信HelloWorld应用程序应该从现在开始只用REST开发。

如何创build一个灵活的插件架构?

在我的开发工作中重复的主题是使用或创build内部插件架构。 我已经看到它接近许多方面 – configuration文件(XML,.conf等),inheritance框架,数据库信息,库和其他。 在我的经验中: 数据库不是存储configuration信息的好地方,尤其是与数据混合在一起 尝试使用inheritance层次结构需要知道插件编码的含义,这意味着插件体系结构并非全是dynamic的 configuration文件适用于提供简单的信息,但不能处理更复杂的行为 图书馆似乎运作良好,但单向依赖性必须小心创build。 当我试图从我所使用的各种架构中学习时,我也在向社区寻求build议。 你是如何实现SOLID插件架构的? 你最糟糕的失败是什么(或者你所看到的最糟糕的失败)? 如果你要实现一个新的插件架构,你会做什么? 您曾经使用过的SDK或开源项目是否具有良好架构的最佳范例? 我自己发现的几个例子: Perl的Module :: Plugable和IOC,用于在Perl中进行dependency injection 用于dependency injection的各种Spring框架 (Java,.NET,Python)。 带有Java列表的SO问题 (包括服务提供者接口 ) C ++指出Dobbs博士的一篇 SO问题 关于ASP.NET MVC的特定插件思想的SO问题 这些例子似乎发挥了各种语言的优势。 是一个好的插件架构必然与语言绑定? 是最好使用工具来创build一个插件架构,或者在自己的以下模型?

像projecteuler.net网站

有时我正在projecteuler.net上解决问题。 几乎所有的问题都可以通过程序来解决,但是这些任务比编程更为math化。 也许有人知道类似的网站: devise任务, 架构任务, 像“find最优雅的C ++解决scheme”的东西?

在Flux架构中,您如何pipe理商店生命周期?

我在阅读Flux,但Todo应用程序的例子太简单了,以至于我不能理解一些关键点。 想像一下像Facebook这样的单页面应用程序,它具有用户个人资料页面 。 在每个用户个人资料页面上,我们要显示一些用户信息和他们最后的post,无限滚动。 我们可以从一个用户configuration文件导航到另一个。 在Flux体系结构中,这与商店和调度程序如何对应? 我们会为每个用户使用一个PostStore ,还是我们会有某种全球性的商店? 调度员怎么样,我们会为每个“用户页面”创build一个新的Dispatcher,还是我们会使用一个单独的? 最后,体系结构的哪一部分负责pipe理“特定于页面”商店的生命周期以响应路由变化? 而且,一个伪页面可能有几个相同types的数据列表。 例如,在个人资料页面上,我想显示“ 追随者”和“ 追随者” 。 单身UserStore如何在这种情况下工作? UserPageStorepipe理UserPageStore followedBy: UserStore和follows: UserStore ?

AngularJS:了解devise模式

在AngularJS的领导者Igor Minar的这篇文章中 , MVC vs MVVM vs MVP 。 这是一个多么有争议的话题,许多开发人员可以花费数小时来讨论和争论。 多年来,AngularJS更接近于MVC(或者更确切地说是它的一个客户端变体),但是随着时间的推移以及许多重构和API改进,现在更接近于MVVM – $ scope对象可以被视为ViewModel由一个我们称之为Controller的函数来装饰。 能够将框架分类并将其放入MV *桶中的一个具有一些优点。 它可以帮助开发人员更轻松地创build一个代表正在使用框架构build的应用程序的心智模型。 它也可以帮助build立开发人员使用的术语。 话虽如此,我宁愿看开发人员build立devise良好,并关注分离的踢屁股的应用程序,而不是看他们浪费时间争论MV *废话。 为此,我在此声明AngularJS是MVW框架 – Model-View-Whatever 。 无论什么地方代表着“ 无论你为什么工作 ”。 Angular为您提供了很大的灵活性,可以很好地将表示逻辑从业务逻辑和表示状态中分离出来。 请使用它来提高您的工作效率和应用程序的可维护性,而不是对一天结束时的事情进行激烈的讨论。 有没有在客户端应用程序中实现AngularJS MVW(Model-View-Whatever)devise模式的build议或指导原则?