标签: architecture

在编写任何代码之前,您如何规划应用程序的体系结构?

我挣扎的一件事是在编写任何代码之前规划应用程序的架构.

我并不是说收集需求来缩小应用程序需要做什么,而是有效地思考一个好的方法来布置整体类,数据和流程结构,并迭代这些想法,以便我有一个可靠的计划甚至在打开IDE之前的行动.目前,只需打开IDE即可轻松创建一个空白项目,开始编写位和bob,让设计从那里"长出来".

我收集UML是一种方法来做到这一点,但我没有经验,所以它似乎有点模糊.

在编写任何代码之前,如何规划应用程序的体系结构?如果UML是可行的方法,您能否为小型应用程序的开发人员推荐简明实用的介绍?

我很感激你的意见.

language-agnostic architecture oop

82
推荐指数
6
解决办法
3万
查看次数

像kayak.com这样的网站如何汇总内容?

问候,我一直在想一个新项目的想法,并想知道是否有人知道像Kayak.com这样的服务如何能够如此快速和准确地汇总来自这么多来源的数据.更具体地说,您认为Kayak.com是否正在与API进行交互,还是在抓取/抓取航空公司和酒店网站以满足用户请求?我知道这种事情没有一个正确的答案,但我很想知道其他人认为这是一个很好的方法.如果有帮助,假装你明天要创建kayak.com ......你的数据来自哪里?

architecture api screen-scraping aggregate

81
推荐指数
3
解决办法
8万
查看次数

胖模型/瘦控制器与服务层

我使用.Net开发了多年的企业应用程序我的应用程序通常有一个包含映射到SQL DB表的实体的域模型.我使用Repository模式,依赖注入和服务层.

最近我们开始研究MVC 3项目,我们讨论了在哪里放置哪些逻辑.我来自瘦控制器/ FAT模型架构,并想知道服务层如何适应

选项1 - 模型与服务的对话

控制器很薄,调用模型上的方法.模型"知道"如何从数据库加载自己并与存储库或服务进行通信.例如,customerModel有一个Load(id)方法,并加载客户和一些子对象,如GetContracts().

选项2 - 控制器与服务对话

Controller要求服务检索模型对象.加载/存储等逻辑在服务层中.该模型是仅具有数据的纯实体模型.

为什么选项1会成为更好的选择,特别是当我们谈论企业应用时,我的经验告诉我要分离问题,让模型和控制器尽可能地薄,并且有专门的服务来做业务逻辑(imcl.数据库交互)

感谢所有建议和对优质资源的参考.

architecture model-view-controller asp.net-mvc service-layer asp.net-mvc-3

78
推荐指数
2
解决办法
2万
查看次数

福勒的"企业应用架构模式"仍然相关吗?

我正在考虑购买Martin Fowler的"企业应用程序架构模式".

从我所看到的,它看起来像一本好书,一本偏向于企业Java的架构书 - 正是我所需要的.

然而,在计算机时代,它已经很老了.2003年是很久以前的事情,从那时起事情已经发生了很大变化.

所以我想知道是否有人能告诉我:这本书是否仍然相关,值得一读?

java architecture java-ee poeaa

77
推荐指数
8
解决办法
2万
查看次数

WPF MVVM为什么使用ContentControl + DataTemplate Views而不是直接的XAML窗口视图?

我有一个关于WPF MVVM的问题,这让我感到沮丧.

为什么这样做:?

MainWindow.xaml:

<Window x:Class="MVVMProject.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Grid>
        <ContentControl Content="{Binding}"/>
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

将您的ExampleView.xaml设置为:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:vms="clr-namespace:MVVMProject.ViewModels">
    <DataTemplate DataType="{x:Type vms:ExampleVM}" >
        <Grid>
            <ActualContent/>
        </Grid>
    </DataTemplate>
</ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)

并创建如下窗口:

public partial class App : Application {

    protected override void OnStartup(StartupEventArgs e) {

        base.OnStartup(e);

        MainWindow app = new MainWindow();
        ExampleVM context = new ExampleVM();
        app.DataContext = context;
        app.Show();
    }
}
Run Code Online (Sandbox Code Playgroud)

什么时候可以这样做:?

App.xaml :(设置启动窗口/视图)

<Application x:Class="MVVMProject.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    StartupUri="ExampleView.xaml">
</Application>
Run Code Online (Sandbox Code Playgroud)

ExampleView.xaml :(窗口不是ResourceDictionary)

<Window x:Class="MVVMProject.ExampleView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:vms="clr-namespace:MVVMProject.ViewModels">
    >
    <Window.DataContext>
        <vms:ExampleVM />
    </Window.DataContext>

    <Grid> …
Run Code Online (Sandbox Code Playgroud)

c# architecture wpf xaml mvvm

75
推荐指数
3
解决办法
8万
查看次数

Web开发中前端,后端和中间件之间的区别

我想知道是否有人可以简洁地比较/对比前端,后端和中间件("中端"?)之间的差异.

是否存在重叠的情况?是否有必须重叠的情况,前端/后端不能分开?在瓶颈方面,哪一方面与哪种类型的瓶颈有关?

architecture web-services

74
推荐指数
3
解决办法
14万
查看次数

域对象,POCO和实体之间有什么区别?

我觉得他们基本上都是一样的.模型对象也一样吗?

现在,在我的架构中,我有:

class Person 
{

    public string PersonId;        
    public string Name;
    public string Email;

    public static bool IsValidName() { /* logic here */ }
    public static bool IsValidEmail() { /* logic here */ }
}


class PersonService
{
    private PersonRepository pRepository;

    PersonService()
    {
        pRepository = new PersonRepository();
    }

    public bool IsExistingEmail(string email)
    {
        //calls repo method to see if email is in db
    }


    public Person GetPerson(email)
    {
        return pRepository.Get(email);
    }


    public void SavePerson(Person p)
    {
        if (Person.IsValidEmail(p.Email) && !IsExistingEmail(p.Email) …
Run Code Online (Sandbox Code Playgroud)

c# architecture asp.net domain-driven-design

73
推荐指数
4
解决办法
5万
查看次数

什么是Cyclomatic Complexity?

我不时看到的一个术语是"Cyclomatic Complexity".在这里,我看到了一些关于"如何计算语言X的CC"或"如何使用最小CC量来做Y"的问题,但我不确定我是否真的理解它是什么.

NDepend网站上,我看到了一个解释基本上是"方法中的决策数量.每个if,for,&&等等都给CC增加+1"得分.)真的是吗?如果是,为什么是这很糟糕?我可以看到,人们可能希望保持if语句的数量相当低,以保持代码易于理解,但这真的是它的一切吗?

还是有一些更深层的概念呢?

language-agnostic architecture cyclomatic-complexity

69
推荐指数
6
解决办法
2万
查看次数

耦合和凝聚力

我试图将耦合和内聚的概念归结为简洁的定义.有人可以给我一个简短易懂的解释(比这里这里维基百科的定义更短)?他们如何互动?

谢谢.

有人有一个好的,简短的例子吗?

architecture theory oop ooad

66
推荐指数
4
解决办法
4万
查看次数

动态数据库架构

为动态逻辑数据库模式提供存储的推荐架构是什么?

澄清一下:如果系统需要为模型提供存储,模型的架构可能会在生产中被用户扩展或更改,那么有哪些优秀的技术,数据库模型或存储引擎可以实现这一点?

一些可能的说明:

  • 通过动态生成的DML创建/更改数据库对象
  • 创建具有大量稀疏物理列的表,并仅使用"重叠"逻辑模式所需的表
  • 创建一个"长而窄"的表,该表将动态列值存储为行,然后需要进行旋转以创建包含特定实体的所有值的"短,宽"行集
  • 使用BigTable/SimpleDB PropertyBag类型系统

任何基于现实世界经验的答案都将不胜感激

sql architecture database-design dynamic-data

66
推荐指数
6
解决办法
4万
查看次数