Tag: 架构

devise模式 – build筑宇航员

也许我的问题在本质上与这个问题类似: 你使用devise模式吗? 我写的程序是小型的50-75 K线程序,主要使用Windows窗体和ASP.NET 。 这些程序是GUI密集型的,允许各种graphics和graphics处理的devise和布局。 我认为自己擅长面向对象,并在平衡面向对象和传统的程序方法的基础上创build可维护的代码。 问题出现在我考虑devise模式的时候。 链接到线程有一个有趣的评论,devise模式可能会被使用,但不是故意的。 当我想故意使用一种devise模式(在我的程序devise中),感觉就像我超越了所需要的那样,我正处于“ 架构宇航员 ”的领域,所以我回到我的传统的方法和一切顺利进行(即通常)。 以MVC模式为例。 如果我想使用Windows窗体或ASP.NET(Visual Studio 2005)来实现这个模式,那么我必须编写一个“框架”,编写框架似乎比应用程序的大小更加麻烦。 也许我的应用程序太小,没有理由使用这些模式。 也许我只是不了解模式,或者需要更多的研究。 有没有其他人体验过这种“架构宇航员”的感觉? 你如何有意地使用devise模式而不会“过度”?

WSDL中的Type和Element有什么区别?

在WSDL文件中,函数可以返回一个Type或者一个Element。 到目前为止,我只使用自定义types。 但是,我想知道什么时候Element比Type更合适? 他们有什么区别? 有什么区别吗? <wsdl:message name="MyFunction"> <wsdl:part name="parameters" element="tns:Person"></wsdl:part> </wsdl:message> 和 <wsdl:message name="MyFunction"> <wsdl:part name="parameters" type="tns:Person"></wsdl:part> </wsdl:message> 从客户的angular度(使用Web服务的应用程序)? 正如skaffman指出的那样,上述问题导致另一个问题。 有什么区别 <xs:element name="Person" … > … </xs:element> 和 <xs:complexType name="Person"> … </xs:complexType> ?

在Java世界中,包vs vs模块vs组件vs容器vs服务vs平台

我是Java世界的新手(7年的低级C语言)。 当我开始阅读Java相关网站时: http://wiki.apidesign.org/wiki/Main_Page http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/ 我被现有的术语弄糊涂了: 类 包 模 零件 容器 服务 骨架 平台 我发现了很多关于术语定义(以及更多)的资源: 框架与工具包与图书馆 框架和容器的区别? Java中的容器是什么? Java容器的定义 http://martinfowler.com/articles/injection.html (控制容器的倒置和dependency injection模式) http://www.cafeaulait.org/course/week8/36.html (什么是AWT容器?) http://en.wikipedia.org/wiki/Web_container http://netbeans.org/features/platform/(NetBeans平台) 什么是“应用程序框架”? 什么是软件框架? 框架和库有什么区别? 类库和框架有什么区别? JavaScript框架和库有什么区别? 框架和工具包之间的主要区别是什么? http://blog.orderharmony.com/2011/07/libraries-vs-frameworks.html http://www.javacodegeeks.com/2012/04/frameworks-vs-libraries-as-inheritance.html 但是这些资源中的每一个都是根据自己的目的来定义它们的,在一般情况下,我仍然不能区分组件。 请大致说明这些术语的意思(可以是单一类平台,制作容器需要多less模块等)。

使用Scala进行新开发的最佳用例是什么?

为什么我应该select另一种语言的Scala来完成一个新的项目? 它在哪些领域擅长? 注意 有几个很好的答案给出,遗憾的是我只能标记为接受的答案。 不过,总的来说,Scala的吸引力来自两个主要的东西: 优秀的并发支持 吸引顶尖的工程人才

您如何devise基于Erlang / OTP的分布式容错多核系统的体系结构?

我想build立一个基于Erlang / OTP的系统来解决一个“不平行的问题”。 我已经阅读/浏览过: 学习一些Erlang; 编程Erlang(Armstrong); Erlang编程(Cesarini); Erlang / OTP在行动。 我掌握了进程,消息传递,主pipe,gen_servers,日志logging等的要点。 我明白,某些架构select取决于所关注的应用程序,但我仍然想知道一些一般的ERlang / OTP系统devise原则。 我应该从一个主pipe人员开始,并逐渐build立在这个基础上? 我应该有多less名主pipe? 我如何确定系统的哪一部分应该是基于stream程的? 我应该如何避免瓶颈? 我应该稍后添加日志? Erlang / OTP分布式容错多处理器系统架构的一般方法是什么?

CQRS体系结构中的域validation

危险…史密斯博士危险…前面的哲学职位 这篇文章的目的是为了确定是否将validation逻辑放在我的域实体之外(实际上是聚合根)实际上给了我更多的灵活性,或者它是kamikaze代码 基本上我想知道是否有更好的方法来validation我的域实体。 这是我打算这样做,但我希望你的意见 我考虑的第一个方法是: class Customer : EntityBase<Customer> { public void ChangeEmail(string email) { if(string.IsNullOrWhitespace(email)) throw new DomainException(“…”); if(!email.IsEmail()) throw new DomainException(); if(email.Contains(“@mailinator.com”)) throw new DomainException(); } } 我实际上不喜欢这个validation,因为即使当我将validation逻辑封装在正确的实体中时,这违反了打开/closures原则(打开以进行扩展,但是closures以进行修改),并且我发现违反这个原则,代码维护变成当应用程序复杂化时,真正的痛苦。 为什么? 由于领域规则的变化比我们想要承认的要多,而且如果规则隐藏在这样一个实体中,他们很难testing,很难阅读,很难维护,但是为什么我不喜欢这个方法是:如果validation规则改变,我必须来编辑我的域实体。 这是一个非常简单的例子,但在RL中validation可能会更复杂 所以遵循Udi Dahan的哲学, 明确的angular色以及Eric Evans在蓝皮书中的build议,接下来的尝试是实现规范模式,像这样 class EmailDomainIsAllowedSpecification : IDomainSpecification<Customer> { private INotAllowedEmailDomainsResolver invalidEmailDomainsResolver; public bool IsSatisfiedBy(Customer customer) { return !this.invalidEmailDomainsResolver.GetInvalidEmailDomains().Contains(customer.Email); } } 但是后来我意识到,为了遵循这种方法,我必须首先对实体进行变异,以便传递被赋值的值 […]

过度工程的具体症状

最近我发现自己能够解释我写给我公司喜欢雇用的两位候选人的(内部)申请,以协助维护和添加次要function。 这是我写的第一个“制作”应用程序,它有45k的LOC,我花了将近两年的“独立”开发。 我还很年轻(18),并从头开始编写应用程序,同时作为离开公司的前开发人员的替身。 在devise这种尺寸的应用程序方面没有经验,我尝试使用常见的体系结构和devise模式。 今天,我知道我已经做了一些严重的过度工程,例如,使用断开连接的变更跟踪架构,而不是工作单元模式,所select的ORM已经实现了。 我可能永远不必去“真正的”三层。 两位候选人都有10年以上的内部应用开发背景和相关平台。 虽然年龄只有他们的一半,没有经验,但我尊重他们的意见。 当我向他们解释应用程序架构时,评论的内容大致如下: 呃,没有人会付钱给我做这样的事情,我必须把事情做完 坚持框架做什么,不要使用花哨的图书馆/技术 不要包装框架代码。 在团队中,每个人都会自己写封装代码。 你正在使用.NET 3.5? 那么,我们正在使用2.0。 那LINQ的东西给我买什么? 所有这些查询组合和投影似乎太复杂了。 现在我在问自己: 我是一名build筑宇航员吗? 我怎么知道我在build筑方面太过分了? 什么是过度工程的常见症状?

为什么CommonJS只说适合非浏览器的应用程序?

为什么不把它用作Javascript的通用组件模式,包括浏览器执行的Javascript? 一目了然,这似乎是模块化我目前正在进行的项目的一个好方法,它包括一个大的Javascript代码库,有很多组件,其中一些与其他组件交互。

CMake多体系结构编译

我想知道如何编写一个CMake设置,它允许使用任何编译器和操作系统编译x86和x64体系结构。

微信,WhatsApp和其他Messenger应用程序的技术是什么?

我渴望了解不同的实时通讯应用程序的架构。 他们是否使用任何通用协议/架构?