设计前的考虑和准备工作

 1 对业务需求的理解重要性远远胜于对技术架构的理解

2 架构包含技术架构和业务架构

3 没有万能和通用的架构,只有符合自身业务需求的架构

4 架构本身的复杂性要截至在架构设计阶段

5 扩展性和健壮性是架构设计要考虑的重要内容.

6 第三方工具,开源组件,EnterpriseLib都可借鉴,但绝对不是照单全收

架构设计前需求准备的相关知识

 1 对业务系统中业务的宏观和整体理解.

2 对DotNet分布式技术的相关知识储备

3 对Rational统一过程4+1视图的理解

4 对架构,组件,充用,设计模式,第三方工具组件的学习和借鉴.

业务层面对架构的影响

 1 能否画出全局的用例视图,用例驱动体现在哪里?到哪个粒度

2 逻辑视图是面向对象设计之本

3 逻辑视图在架构阶段要做到哪个层次系统/子系统/模块/单元

4 什么在决定部署视图?

5 实施视图和逻辑视图的关系,实施视图作用

技术层面对架构的影响

 1 技术层面重点体现在了实施视图和部署视图里面.

2 技术层面重点关注的是非功能性需求.

3 异常/日志/安全/性能/队列/缓存/离线/

4 系统管理/工作流/公用类/公用组件

5 技术架构的缺陷泄漏对应用系统是致命打击.

 分布式应用如何构建

 1 现有的分布式技术Remoting // Web Service

2 如何选择分布式技术:业务需求,性能,开发难易工作量

3 智能客户端与分布式应用的关系

4 出现前台展示既有WinUI又有WebUI的时候的统一考虑

5 选择Remoting+IIS Hosting与Web Service的优缺点对比

6 要尽早出原型对架构进行验证.

对于系统的异常和日志需求

 1 首先理解清楚业务或系统本身对异常和日志的需求

2 异常和日志一定要配合使用,一些不适合抛给用户的异常要通过后台日志记录下来

3 业务对日志有需求,如登录日志,操作日志

4 完善的异常日志功能方便后期系统的维护,出现问题后的跟踪和分析

5 微软的AppBlock和Log4Net都可以借鉴,但要分析利弊。

 对于系统的安全性的需求和考虑

 1 Remoting的安全性问题,远程暴露的服务接口是否安全

2 系统的登录和验证机制

3 数据传输的安全性问题

4 存储在数据库中的业务数据的安全性

5 部署到客户端的程序集的安全性

对于系统缓存的考虑

1 要好了系统性能大幅度提升,用不好比不用还糟糕

2 对于客户端缓存和服务器端缓存的选择问题

3 对于缓存引起的同步和并发问题的考虑和解决

4 扩展性和健壮性是设计时要考虑的重要内容

业务实体的选择问题

 1 没有使用O/R Mapping的时候千万别搞自定义类做实体

2 DataSet (虽对性能有影响,但开发简洁性和效率提升)

3 类型化和非类型化的优缺点一定要搞的很清楚.

4 再次强调-业务实体和数据库表间无一一对应关系.

5 与OO的一些区别:对象和对象操作分离开了?利弊在哪里?

(转)对DotNet分布式应用搭建的考虑的更多相关文章

  1. 对DotNet分布式应用搭建的考虑

    设计前的考虑和准备工作 1 对业务需求的理解重要性远远胜于对技术架构的理解 2 架构包含技术架构和业务架构 3 没有万能和通用的架构,只有符合自身业务需求的架构 4 架构本身的复杂性要截至在架构设计阶 ...

  2. 手把手教你使用spring cloud+dotnet core搭建微服务架构:服务治理(-)

    背景 公司去年开始使用dotnet core开发项目.公司的总体架构采用的是微服务,那时候由于对微服务的理解并不是太深,加上各种组件的不成熟,只是把项目的各个功能通过业务层面拆分,然后通过nginx代 ...

  3. spring cloud+dotnet core搭建微服务架构:服务发现(二)

    前言 上篇文章实际上只讲了服务治理中的服务注册,服务与服务之间如何调用呢?传统的方式,服务A调用服务B,那么服务A访问的是服务B的负载均衡地址,通过负载均衡来指向到服务B的真实地址,上篇文章已经说了这 ...

  4. spring cloud+dotnet core搭建微服务架构:Api网关(三)

    前言 国庆假期,一直没有时间更新. 根据群里面的同学的提问,强烈推荐大家先熟悉下spring cloud.文章下面有纯洁大神的spring cloud系列. 上一章最后说了,因为服务是不对外暴露的,所 ...

  5. spring cloud+dotnet core搭建微服务架构:配置中心(四)

    前言 我们项目中有很多需要配置的地方,最常见的就是各种服务URL地址,这些地址针对不同的运行环境还不一样,不管和打包还是部署都麻烦,需要非常的小心.一般配置都是存储到配置文件里面,不管多小的配置变动, ...

  6. spring cloud+dotnet core搭建微服务架构:配置中心续(五)

    前言 上一章最后讲了,更新配置以后需要重启客户端才能生效,这在实际的场景中是不可取的.由于目前Steeltoe配置的重载只能由客户端发起,没有实现处理程序侦听服务器更改事件,所以还没办法实现彻底实现这 ...

  7. spring cloud+dotnet core搭建微服务架构:Api授权认证(六)

    前言 这篇文章拖太久了,因为最近实在太忙了,加上这篇文章也非常长,所以花了不少时间,给大家说句抱歉.好,进入正题.目前的项目基本都是前后端分离了,前端分Web,Ios,Android...,后端也基本 ...

  8. 用dotnet core搭建web服务器(三)ORM访问数据库

    访问传统sql数据库,大家以前都是用sql语句去查询.这些年流行orm方法 ORM是对象关系映射的简拼,就是用一个对象(class)去表示数据的一行,用对象的成员去表述数据的列 dotnet 官方很早 ...

  9. 用dotnet core搭建web服务器(二)路由表与封装

    https://gitee.com/lightsever/netcore_study/tree/master/server02_path 先上代码,首先我们把httpserver封装一下,以后用起来方 ...

随机推荐

  1. 【JavsScript】Ember.js

    现在,我们经常都可以看到复杂的JavaScript应用程序,由于这些应用程序变得越来越复杂,一长串的jQuery回调语句或者通过应用程序在各个状态执行不同的函数调用,这些做法都会变得无法再让人接受,这 ...

  2. [MFC]MFC中OnDraw与OnPaint的区别

    问题 问题:我在视图画的图象或者文字,当窗口改变后为什么不见了?OnDraw()和OnPaint()两个都是解决上面的问题,有什么不同? OnDraw()和OnPaint()好象兄弟俩,因为它们的工作 ...

  3. IOS网络编程——第三方类库

    IOS网络编程——第三方类库 目录 概述 ASIHttpRequest AFNetworking 其他 概述 ASIHttpRequest AFNetworking 其他

  4. 使用 Team Foundation 版本控制命令

    使用 Team Foundation 版本控制命令 Visual Studio 2013   其他版本 Visual Studio 2010 Visual Studio 2008 Visual Stu ...

  5. 基于jQuery的网站首页宽屏焦点图幻灯片

    今天给大家分享一款基于jQuery的网站首页宽屏焦点图幻灯片.这款焦点图适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗.效果图如下: 在线预览 ...

  6. 最少javascript代码完成一个2048游戏

    原生javascript代码写的2048游戏.建议在谷歌浏览器下跑.'WASD'控制方向.演示地址请移步:http://runjs.cn/detail/bp8baf8b 直接贴代码~ html: &l ...

  7. 添加IFrame导致内存溢出的解决过程(IE浏览器,目前发现了原因,还未解决)

    1.  现象 每次动态添加iframe时,iexplore.exe进程占据的内存都会增加(大概10M左右),不会自动释放,最终导致内存溢出 2.  解决过程 经过网络的一番搜索,基本上给出的解决方案是 ...

  8. shadow fight 1.6.0 内购

    shadow fight 之前的版本只需要安装LocallApstore即可内购. 1.6.0的版本中加了越狱检查. 所以LocallApstore 无法直接使用. 需要安装xcon避开越狱检查. 也 ...

  9. iOS 抓取 UIwebview 上 所有 图片 并进行滚动播放

    关于在UIwebview上添加滚动图片 两种滚动手势会混淆,应为webview有webview.scrollview的属性 故参照昨天的随笔 scrollview嵌套解决方案. 本篇随笔主要讲循环使用 ...

  10. IOS 开发中判断NSString是否为空字符

    //当 请求网络 或者获取其他返回数据 首先 要做一次判断 数据是否为空 防止程序崩溃 程序崩溃 好比拿刀扎在程序员的心啊- if(为空) { 做提示对话框等操作 } else { 正常执行 } - ...