随笔分类 - [20]DesignAnalysis设计分析
-
互联网后台服务的协议设计
摘要:互联网后台服务的协议设计互联网后台服务的协议设计1.基本概念服务(server):“服务”可以分软件和硬件两个类别,本文提到的“服务”都是指软件,是一种程序。称之为“服务”的程序一般具备2个特点:1) 程序启动后常驻内存,成为守护进程。2) 能与其他进程通信,接收请求,处理请求并做出回应。本文中的服务特指基于TCP/IP 协议通过socket进行通信的服务。为什么互联网业务需要“服务”这种类型的程序呢?主要有2个原因1) 有些功能可以通过一个独立的程序来完成,不用每个程序都写一套代码来实现这个功能,这样有利于程序的解耦和复用2) 有些功能单机、单进程无法完成,需要通过多台机器、多个程序的协作完 阅读全文
-
领域模型设计
摘要:软件设计过程经验谈 之 如何做好领域模型设计 经常听到领导教诲,开发的同事应该要往前走一步,去做产品?去做售前?这也是一种方式,只不过是一大步。个人觉得,在迈出这一大步之前,需要先走出一小步:从写好代码到做好设计。 下图是按照软件工程的通用做法,梳理出的标准设计指南,已经非常清晰地定义了软件设计的阶段和活动,产物规约,文档要求以及需要配合的培训。比较适合于人朋规模大、产品化程度高、外包服务模式。按照这个标准的设计指南,把每一阶段的事情做好,这是标准的开发方法论的实践指导。 有人会说,现在是移动互联网的时代,我们的产品开发要求短、频、快地上线,这种标准的设计方法已经不适合了,我觉的不完全正确。我 阅读全文
-
Power Designer导出实体类和NHibernate xml文件
摘要:Power Designer导出实体类和NHibernate xml文件今天研究了一下通过PowerDesigner生成实体类和NHibernate所需要的xml文件,方法是通过Power Designer的向对象模型 (OOM) 导出并配置相关模板,具体操作步骤如下:第一步:创建OOM在PowerDesigner中创建面向对象模型 (OOM)。我首先创建物理数据模型 (PDM),然后在 Tools → Generate Object-Oriented Model 做了转换。第二步:配置导出实体模板文件菜单位置:Language → Edit Current Object LanguageGe 阅读全文
-
理解对象模型图(Reading OMDS)
摘要:理解对象模型图(Reading OMDS)引言这篇文章大部分内容是翻译的帮助资料里的东西。学习技术,英语是个好工具。一直把英语的地位看得和技术一样重,也会强迫自己看英语版的技术书籍(都是PDF版的,外国的书买不起)、资料。但一开始,这完全是一件痛苦万分的事,大量的专业词汇和概率总是让我摸不着头脑。后来,慢慢积累词汇查找概念对英语这块不恐惧了,趁现在还处在记忆力黄金期希望能多补一补专业英语。这需要长期积累与坚持。这篇文章不光是翻译的内容,还有平常积累的东西和思考总结的东西。愿有个好的开始……(单是翻译过来的话,文章不好理解,有些地方稍微改变了一下表达方式,但内容没变,看内容的时候请记住和对比符号 阅读全文
-
负载均衡架构
摘要:大型网站--负载均衡架构负载均衡(Load Balancing) 负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。大型网站负载均衡的利器全局负载均衡系统(GSLB)内容缓存系统(CDN)服务器负载均衡系统(SLB)DNS域名解析的基本过程最初的负载均衡解决方案(DNS轮询)优点基本上无成本,因为往往域名注册商的这种解析都是免费的;部署方便,除了网络拓扑的简单扩增,新增的Web服务器只要增加一个公网IP即可缺点健康检查,如果某台服务器宕机,DNS服务器是无法知晓的,仍旧会将访问分配到此服务器。修 阅读全文
-
高性能分布式计算与存储系统设计概要
摘要:高性能分布式计算与存储系统设计概要发服务端分布式系统设计概要(下)摘要: 高并发服务端分布式系统设计概要(下) 上篇 链接地址:http://www.cnblogs.com/ccdev/p/3338412.html 中篇 链接地址:http://www.cnblogs.com/ccdev/p/3340484.html 现在接着设计我们的“山推”系统。有了前面两篇的铺垫,我们的系统现在已经有了五脏六腑,剩下的工作就是要让其羽翼丰满。那么,是时候,放出我们的“山推”系统全貌了: 前面啰嗦了半天,也许不少同学看的不明不白,好了,现在开始看图说话环节: (1)整个系统由N台机器组合而成,其中Globa 阅读全文
-
Web 通信 之 长连接、长轮询(long polling)
摘要:Web 通信 之 长连接、长轮询(long polling)基于HTTP的长连接,是一种通过长轮询方式实现"服务器推"的技术,它弥补了HTTP简单的请求应答模式的不足,极大地增强了程序的实时性和交互性。一、什么是长连接、长轮询?用通俗易懂的话来说,就是客户端不停的向服务器发送请求以获取最新的数据信息。这里的“不停”其实是有停止的,只是我们人眼无法分辨是否停止,它只是一种快速的停下然后又立即开始连接而已。二、长连接、长轮询的应用场景长连接、长轮询一般应用与WebIM、ChatRoom和一些需要及时交互的网站应用中。其真实案例有:WebQQ、Hi网页版、Facebook IM等 阅读全文
-
提升代码内外部质量的22条经验
摘要:提升代码内外部质量的22条经验本文主要关注代码的内部和外部质量,编程的价值观,代码质量的评估标准,整洁代码的匠艺以及如何维护已有的代码。外部质量:用户所能感受到的部分,正确性,易用性,效率,可靠性。内部质量(代码质量):可维护性,灵活性,可移植性,重用,可读性,可测试性,可理解性。总结的22条经验如下:代码分为外部质量和内部质量,好的产品不等于好的代码(Good Software != Quality Code)。产品的冰山效应:产品经理以及用户关注的部分只是冰山露在水面以上的部分,隐藏在下面的是看不见的更加庞大的部分,那就是我们庞大的代码。拒绝 PPT 架构师,架构师应当写代码,哪怕这些代码 阅读全文
-
马丁·福勒-page对象
摘要:马丁·福勒-page对象译者注:这篇文章翻译自马丁·福勒(Martin Flower,对,没错,就是软件教父)官网的一篇文章,原文出处在文底。如果你正在做WEB自动化测试,那么我强烈推荐你看这篇文章。另外透露Martin Flower将于10月份左右来成都ThoughtWorks办公室,大家有机会一睹他的风采。当你在为web页面编写测试时,你需要操作该web页面上的元素来点击链接或确定显示的内容。然后,如果你在测试代码中直接操作html元素,那么你的代码是机器脆弱的,因为UI会经常变动。一个page对象可以封装一个html页面或部分页面,通过提供的应用程序特定的API,你可 阅读全文
-
SPI and API
摘要:目录背景从面向接口编程说起“接口”位于“调用方”所在的“包”中“接口”位于“实现方”所在的“包”中“接口”位于独立的“包”中需要注意的事项另外一张图备注背景返回目录第一次听说 SPI 是阅读《软件框架设计的艺术》,以后陆续在 Log4Net 和Quartz.Net中发现了以这种形式组织代码的方式,本位给出为什么要区分 SPI 和 API 的一个思考过程。从面向接口编程说起返回目录我们在“调用方”和“实现方”之间引入了“接口”,上图没有给出“接口”应该位于哪个“包”中,从纯粹的可能性上考虑,我们有三种选择:“接口”位于“调用方”所在的“包”中。“接口”位于“实现方”所在的“包”中。“接口”位于独 阅读全文
-
OSGI原形(.NET)
摘要:OSGI原形(.NET)目前只做了基础的功能,比如:各个模块单独的AppDomain容器Activator激活导出的服务检查不过,虽说这样,但目前的这个版本已经能实现模块分离、互相依赖调用等功能了,对模块划分已经有很好的作用了。先来说下基本结构:目前这个框架对UI的模块化尚不支持,只支持单机下的模块加载(以后会改进)。特点:Runtime、Module1、Module2、Module3都是在各自的AppDomain下运行的,不会互相干扰由于采用了隔离AppDomain的方式加载Module,所以能实现轻松卸载AppDomain、某dll、dll版本切换之类的任务,对后续扩展提供了方便来看看模块 阅读全文
-
实体能否处于非法状态
摘要:目录背景参考文章如果业务上规定所有的非法数据都可以“暂存”,咋办?备注背景返回目录实体能否处于非法状态吗?如果实体只承担其作为实体的职责,我不认为实体可以处于非法状态,如果您将实体在不同的分层之间传递,如:UI->Application->Domain-Data,那么这种情况实体承担的角色就当多了(职责过重),在这种情况下是允许处于非法状态的,也可以这么说:某个类型的实体角色是不能处于非法状态的,如同这个类型还承担其它角色,是可以处于非法状态的。参考文章返回目录http://www.cnblogs.com/happyframework/p/3158338.html。http://w 阅读全文
-
怎样玩转千万级别的数据
摘要:怎样玩转千万级别的数据大数据处理是一个头疼的问题,特别当达不到专业DBA的技术水准时,对一些数据库方面的问题感到无赖。所以还是有必要了解一些数据库方面的技巧,当然,每个人都有自己的数据库方面的技巧,只是八仙过海,所用的武功不同而已。我把我最常用的几种方式总结来与大家分享,大家还有更多的数据库设计和优化的技巧,尽量的追加到评论中,有时一篇完整的博客评论比主题更为精彩。方法1:采用表分区技术。 第一次听说表分区,是以前的一个oracle培训。oracle既然有表分区,就想到mssql是否有表的分区,当时我回家就google了一把,资料还是有的,在这我儿只是再作一次推广,让更多的人了解和运用这些技. 阅读全文
-
C#利用Emit反射实现AOP,以及平台化框架封装思路
摘要:C#利用Emit反射实现AOP,以及平台化框架封装思路这是前两天扒的一段动态代理AOP代码,用的Emit反射生成子类来实现代理模式,在这里做个小笔记,然后讨论一下AOP框架的实现思路。 首先是主函数: static void Main(string[] args) { RealClass proxy = (RealClass)DynamicProxyBuilder.Wrap(typeof(RealClass)); proxy.Test(); Console.ReadKey(); } ... 阅读全文
-
推送技术
摘要:Android、iOS和Windows Phone中的推送技术 推送并不是什么新技术,这种技术在互联网时代就已经很流行了。只是随着进入移动互联网时代,推送技术显得更加重要。因为在智能手机中,推送从某种程度上,可以取代使用多年的短信,而且与短信相比,还可以向用户展示更多的信息(如图像、表格、声音等)。推送技术的实现通常会使用服务端向客户端推送消息的方式。也就是说客户端通过用户名、Key等ID注册到服务端后,在服务端就可以将消息向所有活动的客户端发送。实际上,在很多移动操作系统中,官方都为其提供了推送方案,例如,Google的云推送、IOS、Windows Phone7/8也都提供了类似的推送方案 阅读全文
-
什么是DCI
摘要:目录备注什么是DCI?如何将Role注入到Data中?开发期注入字节码增强MixinTraitTemplateT4 + 部分类 + 显式接口实现 + 扩展类型,C#专用运行期注入Mixin动态代理为什么要用DCI?DCI在C#种的两种实现第一种:显式接口实现 + 部分类第二种实现:组合备注备注返回目录之前把DCI的Role和四色原型的Role给弄混了,本文也不会比较这两种Role的区别(后面有机会再说),这里简单的记录一下对DCI的理解。参考文章:http://www.cnblogs.com/happyframework/p/3302238.html。什么是DCI?返回目录Context 选择 阅读全文
-
基于Hadoop开发网络云盘系统客户端界面设计初稿
摘要:基于Hadoop开发网络云盘系统客户端界面设计初稿前言: 本文是《基于Hadoop开发网络云盘系统架构设计方案》的第二篇,针对界面原型原本考虑有两个方案:1、类windows模式,文件夹、文件方式,操作习惯完全按照Windows方式进行,提供右键菜单管理命令。2.浏览列表式,提供常规界面按钮式命令。本文采用的方式是文件清单列表式,至于第一种方式,另列专题进行说明。一、界面原型二、设计说明 连接管理:建立连接、断开连接、设置连接参数 文件操作:浏览文件、上传文件、下载文件、删除文件、导入文件(批量)、刷新列表 用户管理:查看用户信息、修改用户密码 三、遗留问题 1.文件操作长连接还是... 阅读全文
-
新的IRepository接口+搜索和排序解耦(+基于Castle实现)
摘要:新的IRepository接口+搜索和排序解耦(+基于Castle实现)经过了上篇IRepository和IRepository的讨论【文章地址为:http://www.cnblogs.com/yomho/p/3296759.html】我选择了IRepository作为我重构框架的仓储接口一、接口定义新的IRepository接口设计如下: 1 namespace Yom.NFramework2_0 2 { 3 public interface IRepository 4 where TCompositeKey : IEquatable 5 { 6 ... 阅读全文
-
第二代支付系统商业银行行内接入系统总体设计(初稿)
摘要:第二代支付系统商业银行行内接入系统总体设计(初稿)引言:二代支付系统是人民银行新一代现代化支付系统,目前各商业银行的接入开发工作正紧锣密鼓的进行。按照人民银行的计划和安排,2013年10份,第一批接入工作将开始。本文是第二代支付系统城市商业银行接入系统的总体设计初稿。一、总体设计 详见下图:二、外部结构 城市商业银行以参与者身份接入人民银行第二代支付系统,在整个第二代支付系统中,商业银行的角色见上图。三、设计说明 3.1 系统构成 整个行内接入系统划分为:前端系统(VFS)、前置系统(FRT)、核心系统(CoreBank)、报表系统(Report)、运行监控系统(Monitor)。 ... 阅读全文
-
WinForm酒店管理软件--框架
摘要:WinForm酒店管理软件--框架搞软件开发4年多了,现在自认为还是菜鸟,从一开始走上工作岗位各种技术对我都很新奇没解决一个问题都觉得很伟大到后来开始对出路的迷茫,到现在我坚信学什么技术不重要,做什么事情不重要。重要的是你学的技术能给社会带来正能量,你做的事情有人能够肯定,你永远都不会完美,但你要有颗追求完美的心。 从去年第一次自己一个一个字母开始敲,一遍一遍的优化,也不记得多少次的调试,终于完成了一个自己开发的WinForm+WinCE开发框架。很欣慰的该框架现在已经被广泛使用在很多大型仓库,提供电商仓储管理业务,pda和pc结合完成仓库发货、入库、盘点等等功能。也许是自己的一个心结吧!离. 阅读全文