架构师向??项目经理??

最近开始了新一轮的换工作历程,投简历也集中在了架构师和项目经理这两个角色中,当然,架构师很多时候跟项目经理,team leader,高级软件工程师是重合的,当然,我指的是国内了,所谓的架构师就是更高级点的软件工程师罢了.尤其是小点的公司,注,没有看不起小公司的意思,毕竟要成本的.

     个人从事了软件业也7-8年了,说实在的,cmm3 的软件过程基本了解,做全职的项目经理,可能是欠缺一些.技术上,这些年的积累,凭心而论,也还可以.所以就产生了疑问,我该怎么走呢,真的是出在了抉择的时候,该做什么呢,还是什么也不做,直接转行.

      首先,个人的心里,是希望做一名合格的架构师,优秀的,实在不敢说,牛人多了,咱只能向人家学习,争取早点成为真正的牛人.咱们首先看一篇架构师的招聘资料:    

岗位职责:
1、带领团队进行平台的设计、开发和维护;
2、参与需求分析、系统分析、业务建模;
3、架构设计、概要设计;
4、软件工程实施和管理:开发计划制定、人员分配安排、进度跟踪及风险控制、测试管理等;
5、关键技术研究和开发、对外技术交流及沟通。
 
 
任职要求:
1、计算机或相关专业本科以上学历;
2、熟悉软件工程,5年以上大型网站项目、Web应用系统开发及管理经验;
3、对互联网业务及相关技术有高度的敏感性,对新技术和概念具备良好的学习和应用能力;
4、熟悉大型网站的开发、制作流程,具备较高大型网站项目开发管理、系统分析及架构设计的能力;
5、熟悉WINDOW、 LINUX等服务器操作系统,对WEB平台服务有深入理解
6、精通.NET开发平台,了解java、asp、PHP、C++等其他开发语言;
7、精通WEBSERVICE、REST、XML、AJAX、SQL、HTTP、TCP、WCF等技术;
8、有较高的数据库设计能力,精通SQLSERVER、ORACLE、MYSQL等主流数据库系统;
9、熟悉Memcached分布式缓存系统、MSMQ、JMS(Active MQ)、Hibernate等;
10、具备大型网站开发所需的海量数据存储及处理、高性能并发处理、分布式处理等方面的技术经验;
11、熟练使用各种常用软件开发辅助工具,如:MSPROJECT、ROSE、PowerDesigner、VISIO等;
12、具备SNS、LBS、GIS、搜索引擎、网络通信、移动开发、呼叫中心等相关行业技术背景者优先;
13、具备良好的语言表达及沟通能力,具备良好的文档能力;
14、年龄28-35岁,成熟稳重,具备良好的职业素养和团队精神,具备较强的承受能力和解决问题的能力。
 
像类似的这种很多,其实说白了,就是要求你管理经验和开发经验都是可以的,可能想对来说要求你的开发能力,尤其是处理关键问题的能力一定要强,比如这条:
具备大型网站开发所需的海量数据存储及处理、高性能并发处理、分布式处理等方面的技术经验
我想,如果咱们只是平时做企业的mis 开发,那你可能一辈子也胜任不了这个职位了.因为很多企业的mis也就那么点访问量,并发都考虑的很少了.我都在想,要是胜任这个职位的,都可以把铁路部的购票系统做好了,真的.
 个人感觉,要想做一名架构师,最重要的是应该保持对技术的热情,关注新技术,花大量时间在关键的技术,比如高并发,多线程,web service等.要弄清除它的原理,这样才能在关键时刻给出民智的决策.另,技术的广度也是要的,不然,怎么,能保证,当前的项目或产品用的技术是最合适的呢.
说到这里,一些小的软件工具,比如说跟踪soap包,多线程序的.还有研究数据库方面的都是值得学习的.
总之,坚持,保持热情,我感觉够了.
 
再看看项目经理,开发经理之类的了:
 

职位描述及要求:
岗位职责:
1. 担任项目执行过程中需求阶段工作(具体工作参考《需求工作总结说明》),出具符合公司规范的需求规格说明书(格式参考《需求规格说明书模板》文件夹中模板说明)。
2. 担任项目执行过程中详细设计工作或设计审核工作(相关工作规范或指责要求参考《高级开发工程师岗位职责及要求》中相关说明)。
3. 担任项目执行过程中编码工作或编码审核工作(相关工作规范或指责要求参考《开发工程师岗位职责及要求》中相关说明)。
4. 确保能在合同规定交付日期范围内(无明确合同交付日期的,以合同审批单内部交付日期为准),按照合同规定工作量(以合同审批单中签字确认工作量为准)完成项目的交付及收款(首付款与售后尾款外其他款项)工作。
5. 严格监控项目执行过程中各个环节对外文件的客户的签字确认情况。
6. 制定项目计划,合理分配项目任务,监控项目进度。
7. 对项目团队成员的工作进行安排、监督、指导。
8. 定期向直属领导汇报项目相关情况(项目进度,项目投入,可能产生的风险等)。
9. 项目验收通过3个月,经直属领导允许后,向售后部门相关人员移交项目(相关文件及要求见《项目交接单.xls》,需填写其中与合同条款内容相关的所有内容)。
 
岗位要求: 
1. 掌握软件项目的开发流程;
2. 掌握VS系列的.Net平台开发工具,例如VS2003、VS2005、VS2008;
3. 精通C#、JavaScript等编程语言,熟悉VB等开发语言;
4. 精通SQL SERVER和ORACLE数据库,具备一定的数据库开发技术;
5. 具备一定的界面美化能力;
6. 具体详细设计的能力;
7. 具有快速学习能力和适应能力;
8. 具有良好的沟通能力及团队合作精神;
9. 对工作有责任心,能承受工作压力;

我找了几个,感觉这个写得很好,项目经理的职责一目了然,承担的工作压力也相当的大,但是注意到么

担任项目执行过程中编码工作或编码审核工作,说到底,你编码能力还是要求很强,关键的时刻你得亲自上,什么项目经理,这时候,你就是程序员,有点,将军当步兵用的感觉.

但终归来说,它更多的是要求你对项目的整体把握,非技术因素很多了,比如

完成项目的交付及收款(首付款与售后尾款外其他款项)工作.


所以,个人通过分析感觉,一名开发人员转那个方向都是可以理解的,如果做项目经理,我个人感觉,你会更多的关注非技术的因素,而架构师,则更多的关注技术方面,但也要求你的项目管理能力.

其实很多时候,我都在想,这些所谓的技能从那里来,管理,架构,其实我们都是可以学到的,只要自己上心了,比如管理经验,即使你不是项目经理,你也可以换位思考,如果你在这个位置上该怎么做,他是怎么做的,记住了,还怕没机会么.

架构的经验,可能就麻烦些了,如果没有大型的项目,有些高并发之类的,你是不可能学到的,但也绝对不是问题,现在的资料已经很多了,前面我记得有专门的高并发的专题,关于铁路部售票网站的,自己多看看,实践机会也肯定会有的,在不然,你可以自己模拟些场景,比如,制造些大数据,用模拟的并发测试软件,都是可以的.


软件架构

 
摘要: 最近开始了新一轮的换工作历程,投简历也集中在了架构师和项目经理这两个角色中,当然,架构师很多时候跟项目经理,team leader,高级软件工程师是重合的,当然,我指的是国内了,所谓的架构师就是更高级点的软件工程师罢了.尤其是小点的公司,注,没有看不起小公司的意思,毕竟要成本的. 个人从事了软件业也7-8年了,说实在的,cmm3 的软件过程基本了解,做全职的项目经理,可能是欠缺一些.技术上,这些年的积累,凭心而论,也还可以.所以就产生了疑问,我该怎么走呢,真的是出在了抉择的时候,该做什么呢,还是什么也不做,直接转行. 首先,个人的心里,是希望做一名合格的架构师,优秀的,实在不敢说,牛人多...阅读全文
posted @ 2012-03-28 17:47 似水流年-johnhuo 阅读(1963) | 评论 (23) 编辑
 
摘要: Controller 这一层首先要添加对WCF 的引用:如下,输入我们自己的wcf地址http://localhost:8732/Design_Time_Addresses/InfoPub.BLLService/Service1/mex为了解析嵌套结构的类,我们加入JsonBinderusing System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;using System.Web.Script.Serialization;namespace InfoPub阅读全文
posted @ 2011-07-24 10:15 似水流年-johnhuo 阅读(631) | 评论 (1) 编辑
 
摘要: BLL层我们用wcf 来提供服务,这一层我们只对外只发布一个服务,为了使我们的代码可维护更好,我们引入抽象工厂模式。这样的话我们首先也创建三个接口:1) IInfo InfoResult Add(Info info);InfoResult Update(Info info);InfoResult Delete(int infoId);InfoList GetInfoList(SearchInfo searchInfo);InfoList GetInfoById(int infoId);2) IInfoType跟上面相同,不再赘述。3) IUserInfo跟上面相同,不再赘述。然后实现这三个接口阅读全文
posted @ 2011-07-24 10:13 似水流年-johnhuo 阅读(308) | 评论 (0) 编辑
 
摘要: 跟model层一样,我们同样可以用动软代码生成器来生成DAL层。这一层主要是数据库的访问,不再多介绍.需要说明的是我们要把微软的SqlHelper类引入我们的项目,这样我们访问数据库用这个类就够了,关于这个类大伙可以参见微软petshop中的SqlHelper类。1. 首先定义接口我们创建三个接口: 1) IInfo InfoResult Add(Info info);InfoResult Update(Info info);InfoResult Delete(int infoId);InfoList GetInfoList(SearchInfo searchInfo);InfoList Ge阅读全文
posted @ 2011-07-24 10:12 似水流年-johnhuo 阅读(276) | 评论 (0) 编辑
 
摘要: 下面开始在我们的解决方案里面增加实体.这一层我个人感觉是跟数据库的映射层次,有了这一层,各层访问数据库会方便很多,不然的话得用DataSet或DataReader的直接访问了。理解为持久化对象就ok了。在这里我们开始使用动软.Net代码生成器,这个网上很多,想使用的下载就可以了,更好的是CodeSmith 只不过这个工具我们需要自定义模板。用代码生成器是为了我们自己一手写重复的代码,仅此而已。安装好动软.Net代码生成器后,进入下面的界面:首先在左边的树菜单新增服务器,如下:选择下一步:输入相对应的服务器,用户/密码,数据库,选择确定即可。然后在左侧新建好的服务器选择连接:选择其中的info表阅读全文
posted @ 2011-07-24 10:10 似水流年-johnhuo 阅读(278) | 评论 (0) 编辑
 
摘要: 由于vs2010 本身不带 mvc3,所以我们需要下载AspNetMVC3ToolsUpdateSetup.exe下载地址如下:http://www.asp.net/mvc安装完成后,即可创建mvc3的项目如下,输入我们的项目名称InfoPub:选择ok,进入下个页面:在这里我们选择Empty,注意默认的其他两个项目模板会自动生成登录,注册相关的一些东东,我们不需要,自动生成的结构如下:系统已经默认帮我们把jquery加入到Scripts下了,这里介绍一下:这里面包括了我们后面要用到的jquery 1.5.1(基本的jquery 1.5.1),jquery validate(验证),jquer阅读全文
posted @ 2011-07-22 23:03 似水流年-johnhuo 阅读(284) | 评论 (0) 编辑
 
摘要: 数据库设计工具我们依然采用Enterprise Architect 7.5 汉化版在这里可以稍微介绍下EA,个人比较喜欢Enterprise Architect ,这个工具比较类似Rational Rose网上有破解版本,它可以支持从需求分析到设计部署的全过程建模上问我们用了它的用例建模,下面我们开始使用它的数据库建模,下面是ea的操作界面:我们双击右边model下的Data model,选择左边Class下的table,出现新建table:这里一个关键的地方是记得选择数据库:我这里选择的是sql server 2005,输入数据名称后,选择Table Detail:选择列/变量:为表定义列名阅读全文
posted @ 2011-07-22 09:17 似水流年-johnhuo 阅读(309) | 评论 (0) 编辑
 
摘要: 最近朋友的公司已经注册完成了,需要我帮它来开发信息发布系统. 我最近在公司做的项目多为微软的mvc 架构的开发,借给朋友做系统的机会,自己也总结一下,也跟大伙分享一下. 首先是工具准备 Enterprise Architect 7.5 汉化版(描述需求和设计) microsoft visio VS2010+SQL SERVER 2008(朋友的网站小access就够了,我本机就用sql server吧) 动软.Net代码生成器+CodeSmith Studio(用于生成一些重复用的代码) 下面描述一下信息发布的需求: 开发这个系统本身是为了朋友公司的网站信息发布,朋友的公司主要是做仪表类的产.阅读全文
posted @ 2011-07-21 17:19 似水流年-johnhuo 阅读(1075) | 评论 (2) 编辑
 
摘要: InterpreterTemplate Method Chain of ResponsibilityCommandIteratorMediatorMementoObserverStateStrategyVisitor 名称Interpreter结构 意图给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。适用性当有一个语言需要解释执行, 并且你可将该语言中的句子表示为一个抽象语法树时,可使用解释器模式。而当存在以下情况时该模式效果最好: 该文法简单对于复杂的文法, 文法的类层次变得庞大而无法管理。此时语法分析程序生成器这样的工具是更好的选择。它们无需阅读全文
posted @ 2011-07-14 18:35 似水流年-johnhuo 阅读(113) | 评论 (0) 编辑
 
摘要: 名称Adapter结构意图将一个类的接口转换成客户希望的另外一个接口。A d a p t e r 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。适用性你想使用一个已经存在的类,而它的接口不符合你的需求。 你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。 (仅适用于对象A d a p t e r )你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口。 Code Examplenamespace Adapter_DesignPattern{ using System; 阅读全文
posted @ 2011-07-14 18:25 似水流年-johnhuo 阅读(182) | 评论 (0) 编辑
 
摘要: 为了方便阅读,我把一篇设计模式的资料拆分开发,分为三个大的部分,如下:Factory Abstract FactoryBuilderPrototypeSingleton 名称Factory Method结构意图定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。适用性当一个类不知道它所必须创建的对象的类的时候。 当一个类希望由它的子类来指定它所创建的对象的时候。 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。 Code Examplenamespace FactoryMet阅读全文
posted @ 2011-07-14 18:20 似水流年-johnhuo 阅读(369) | 评论 (0) 编辑
 
摘要: http://tech.it168.com/zt/sharepoint/index.html找了找感觉这个比较全,留个记录吧阅读全文
posted @ 2011-04-09 22:23 似水流年-johnhuo 阅读(4) | 评论 (0) 编辑
 
摘要: 单表使用建立一下表CREATE TABLE [dbo].[Employees] ( [Employeesid] [int] IDENTITY (1, 1) NOT NULL , [LogonName] [varchar] (40) COLLATE Chinese_PRC_CI_AS NULL , [LastLogon] [datetime] NULL ) ON [PRIMARY]GO建立一个实体类,代码如下using System;using System.Data;using System.Configuration;using System.Collections.Generic;usin阅读全文
posted @ 2011-04-09 21:45 似水流年-johnhuo 阅读(18) | 评论 (0) 编辑
 
摘要: 高负载、高并发网站架构知识汇总-大流量网站架构的几点认识[其它] post by Wrong-T / 2010-6-7 16:43 Monday一:硬架构 1 :机房的选择: 在选择机房的时候,根据网站用户的地域分布,可以选择网通或电信机房,但更多时候,可能双线机房才是合适的。越大的城市,机房价格越贵,从成本的角度看可以在一些中小城市托管服务器,比如说广州的公司可以考虑把服务器托管在东莞,佛山等地,不是特别远,但是价格会便宜很多。 2 :带宽的大小: 通常老板花钱请我们架构网站的时候,会给我们提出一些目标,诸如网站每天要能承受100 万PV 的访问量等等。这时我们要预算一下大概需要多大的带宽,阅读全文
posted @ 2011-04-09 21:44 似水流年-johnhuo 阅读(38) | 评论 (0) 编辑
 
摘要: 摘要:ActiveRecord在底层封装了NHibernate,在框架启动时需要指定相关的配置信息,那么我们需要配置些什么?又该如何去配置呢?本文将会介绍在ActiveRecord中构建配置信息。主要内容1.需要配置什么2.如何去配置3.常见的配置示例一.需要配置什么在第一篇大家都已经看到了,其实我们的配置信息跟用NHibernate时的配置是一样的,这是因为ActiveRecord在底层封装了NHibernate。为了没有用过NHibernate的朋友,这里再把配置信息简单介绍一下。1.配置NHibernate ADO.NET属性 属性名说明hibernate.connection.prov阅读全文
posted @ 2011-04-09 21:41 似水流年-johnhuo 阅读(19) | 评论 (0) 编辑
 
摘要: 单表使用建立一下表CREATE TABLE [dbo].[Employees] ( [Employeesid] [int] IDENTITY (1, 1) NOT NULL , [LogonName] [varchar] (40) COLLATE Chinese_PRC_CI_AS NULL , [LastLogon] [datetime] NULL ) ON [PRIMARY]GO建立一个实体类,代码如下using System;using System.Data;using System.Configuration;using System.Collections.Generic;usin阅读全文
posted @ 2011-04-09 21:36 似水流年-johnhuo 阅读(51) | 评论 (0) 编辑
 
摘要: CSLA.NET是一个在分布式计算环境下利用面向对象思想创建业务对象的一个框架。现在已经发布了3.6版本,包括for Windows和for Silverlight,来支持不同的平台。CSLA.NET for Windows 和CSLA.NET for Silverlight共享了许多相通的特性和功能。两个框架实作之间的通用性,能允许在.NET和Silverlight之间,共享业务对象(Business Object)的程序代码,而它们之间的不同就是允许你利用两个不同平台的强大功能。 CSLA.NET是自2001年左右开始,CSLA.NET 3.6是现在最新的版本。在过去八年,该框架已在许多方阅读全文
posted @ 2011-04-09 21:33 似水流年-johnhuo 阅读(25) | 评论 (0) 编辑
 
摘要: 工作描述: 将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。架构师的主要任务不是从事具体的软件程序的编写,而是从事更高层次的开发构架工作。他必须对开发技术非常了解,并且需要有良好的组织管理能力。 架构师==软件总设计师 开发人员和项目经理之间的共用沟通媒体具体工作内容:第二:审查需求第三:审查技术设计方案第四:负责软件整体设计、关键构件、接口设计、开发规范、开发政策设计;对号提供给团队DEMO;要负责整体设计的性能、可靠性、可维护性、可扩张性第五:详细设计、编码人员的顾问第六:下一个版本的功能、升级的发起和决策人需要技能:第一:技术精通、全面,至阅读全文
posted @ 2011-04-09 21:30 似水流年-johnhuo 阅读(54) | 评论 (0) 编辑
 
摘要: 前言:PetShop是一个范例,微软用它来展示.Net企业系统开发的能力。业界有许多.Net与J2EE之争,许多数据是从微软的PetShop和Sun的PetStore而来。这种争论不可避免带有浓厚的商业色彩,对于我们开发人员而言,没有必要过多关注。然而PetShop随着版本的不断更新,至现在基于.Net 2.0的PetShop4.0为止,整个设计逐渐变得成熟而优雅,却又很多可以借鉴之处。PetShop是一个小型的项目,系统架构与代码都比较简单,却也凸现了许多颇有价值的设计与开发理念。本系列试图对PetShop作一个全方位的解剖,依据的代码是PetShop4.0,可以从链接http://msdn阅读全文
posted @ 2011-03-26 22:49 似水流年-johnhuo 阅读(290) | 评论 (0) 编辑
 
摘要: 1.框架的概要介绍微软刚推出了基于ASP.NET 2.0下的Pet Shop 4, 该版本有了一个全新的用户界面。是研究ASP.NET 2.0的好范例啊,大家都知道,一直以来,在.NET和Java之间争论不休,到底使用哪个平台开发的企业级应用性能最好、结构最优、生产力最高。为了用事实说话,通过对项目各方面的性能评估进而在比较.NET和Java的高下。用户做比较的这个项目就是Petshop。正因为Petshop肩负着上面所说的重任,各方面必须是最优的,架构设计应该是经过慎重考虑的。所以其一经推出,便成为了开发者、架构师等人学习、研究的典范。日前微软推出了基于.NET Framework 2.0开阅读全文
posted @ 2011-03-26 22:41 似水流年-johnhuo 阅读(52) | 评论 (0) 编辑
 
摘要: PetShop数据库解读PetShop数据访问层之数据库访问设计PetShop的工厂模式PetShop之业务逻辑层设计PetShop数据库解读PetShop 4.0使用了四个数据库,分别为:MSPetShop4 、MSPetShop4Orders 、MSPetShop4Profile 、MSPetShop4Services 一、MSPetShop4其中MSPetShop4用来管理产品、分类等基本数据信息,其中共有六个表 AspNet_SqlCacheTablesForChangeNotification Category Inventory Item Product Supplier Cate阅读全文
posted @ 2011-03-26 22:13 似水流年-johnhuo 阅读(50) | 评论 (0) 编辑
 
摘要: 在这篇文章中我们将对BlogEngine.Net的全局配置进行一下分析与探讨。关于配置这一部分单独拿出来做一篇文章实在有些牵强,但是我总觉得这个配置部分比较独立,而且BlogEngine.Net的设计和实现都有很多可以参考的地方。在一个企业级应用系统中,对一些系统全局参数进行配置是必不可少的,那么我们是怎么处理这些配置的呢? 一般都有以下三步:1.在业务模块开发的过程中将一些可变的参量提取出来。2.当所有业务模块开发完成时,将这些参量分类存储起来。3.开发出相应的管理功能,允许用户对这些参量进行设置。 相信大多数开发者都是直接操作数据库中的数据,可能有些比较完善的系统会做出单独的页面来给用户管阅读全文
posted @ 2011-03-26 21:50 似水流年-johnhuo 阅读(17) | 评论 (0) 编辑
 
摘要: 在上一篇文章中,我们主要分析了一下BlogEngine.Net的整体设计,在后半部分我们又对BusinessBase业务对象的状态维护做了一些比较深入的探讨。在这篇文章中我将引领大家完成对BlogEngine.Net中业务对象数据存储的设计思路与实现细节的分析。BlogEngine.Net中的数据存储主要是应用Provider模式实现的,那么首先让我们认识一下Provider模式。 Provider模式应该是一种设计模式,是用来解决软件变化问题的。不过它关注的角度(或者维度)是功能声明跟功能实现的分离。一般来说,系统对某一功能的需求可能是相对稳定的(比如每个系统都要求对登录用户进行验证,这个需阅读全文
posted @ 2011-03-26 21:49 似水流年-johnhuo 阅读(9) | 评论 (0) 编辑
 
摘要: 上篇文章朋友的评论给了我很大的动力写这个系列的文章,看来大家都比较关注这个系列。为了后续文章做一个铺垫,我在这篇文章的前半部分讲解一下BlogEngine.Net的整体架构,后半部分主要是对于BusinessBase类的分析。下载源代码以后打开解决方案,我们发现从项目的组织结构上BlogEngine.Net分成两个项目:一个是BlogEngine.Core,顾名思意,它就是BlogEngine.Net的核心逻辑层。所有的业务逻辑和一些功能都在这个项目中体现,实际上这个核心业务层中也有数据访问的一部分,那就是Provider模式。在BlogEngine.Net中,关系数据库或XML等的作用只有一阅读全文
posted @ 2011-03-26 21:47 似水流年-johnhuo 阅读(10) | 评论 (0) 编辑
 
摘要: 近我要开始这个系列了,这是我的第一个系列。关于BlogEngine.Net我想说的是,它设计的真的很棒,代码简洁但是功能很多,真是麻雀虽小,五脏俱全啊,而且具有了很多Web2.0的特征,甚至它的每一行代码都值得我们去研究一下,它的开发团队很棒。实际上很多国外的个人Blog都是采用BlogEngine.Net加上自定义皮肤实现的,如果您是一个Blog的开发者,这更是您的必备参考! 很多兄弟都推荐BlogEngine.Net看一看,甚至www.asp.net也把它放在了很重要的位置。前一阶段我仔细的把它的源代码阅读了一遍,看完以后兴奋的很冲动,心想居然还有这么好的玩意,这个开源项目设计的真的不错。阅读全文
posted @ 2011-03-26 21:45 似水流年-johnhuo 阅读(11) | 评论 (0) 编辑
 
摘要: 在这篇文章中,将讨论一下表示层的实现方法。 表示层是一个系统的“门脸”,不论你的系统设计的多么优秀,代码多么漂亮,系统的可扩展性多么高,但是最终用户接触到的大多是表示层的东西。所以,表示层的优劣对于用户最终对系统的评价至关重要。一般来说,表示层的优劣有一下两个评价指标: 1.美观。即外观设计漂亮,能给人美的感觉。 2.易用。即具有良好的用户体验,用户用起来舒服、顺手。 表示层的设计牵扯到很多非技术性问题,如美工、用户心理学等问题,但是在这篇文章中,将不过多涉及这些问题,一来是我的水平有限,二来是这些内容和本系列文章的关系不是很密切。这里将主要从技术实现的角度讨论表示层的设计。 一般来说,表示层阅读全文
posted @ 2011-03-26 21:41 似水流年-johnhuo 阅读(10) | 评论 (0) 编辑
 
摘要: 在这一篇文章中,将实现一个NGuestBook的业务逻辑层。 在实际应用中,业务逻辑层是至关重要的,他承载着整个系统最核心的部分,也是客户最关注的部分。这一部分的实现,通常需要技术专家和领域专家通力合作。当然,在本文章系列的Demo中,由于业务逻辑的简单性,这里看的可能还不是很明显。 在本篇文章的业务逻辑层实现中,业务逻辑层主要承担了以下职责: 1.对不同数据访问层的封装。使得表示层可以不关心具体的数据访问层。 2.业务逻辑数据的填充与转换。如管理员口令的加密。 3.核心业务的实现。这里很多业务逻辑只有一行代码,即一个业务逻辑方法恰好对应一个数据访问方法,但是也有通过多个数据访问方法实现业务的阅读全文
posted @ 2011-03-26 21:40 似水流年-johnhuo 阅读(12) | 评论 (0) 编辑
 
摘要: 前面的文章讨论了使用SQL语句和存储过程两种数据访问层的实现方式,这一篇里,将讨论使用ORM方式实现数据访问层的方法。 对象-关系映射(Object/Relation Mapping,简称ORM),是随着面向对象的软件开发方法发展而产生的。面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,对象-关系映射(ORM)系统一般以中间件的形式存阅读全文
posted @ 2011-03-26 21:39 似水流年-johnhuo 阅读(33) | 评论 (0) 编辑
 
摘要: 在上一篇(基于.NET平台的分层架构实战(七-外一篇)——对数据访问层第一种实现(Access+SQL)的重构)中,讨论了使用SQL构建数据访问层的方法,并且针对的是Access数据库。而这一篇中,将要创建一个针对SQLServer数据库的数据访问层,并且配合存储过程实现。 曾经有朋友问我使用SQL和存储过程在效率上的差别,惭愧的是我对这方面没有研究,也没有实际做过测试。通过查阅资料,发现在一般情况下,存储过程的效率由于使用SQL,但是也不绝对,也发现有的朋友测试时发现在特定情况下SQL的效率优于存储过程,所以这个问题不能一概而论。 好,废话不多说,这里先列出使用存储过程构建数据访问层的一般步阅读全文
posted @ 2011-03-26 21:34 似水流年-johnhuo 阅读(21) | 评论 (0) 编辑
 
摘要: 昨天的文章 基于.NET平台的分层架构实战(七)——数据访问层的第一种实现:Access+SQL 发布后,很多朋友对我的程序提出了意见和建议,在这里先谢谢你们!!!尤其是 金色海洋(jyk),对我的程序提出了很多建设性的意见。 我大体总结了一下,昨天程序的主要缺点有: 1.Connection对象没有关闭 2.DataReader对象没有关闭 3.相似代码太多,造成代码冗余。 其中第一点问题,目前还没有太好的解决方案,主要是因为Connection一旦关闭,DataReader就无法读取了。而且,Connection对象应该会自动在适当的时候关闭(通过观察临时文件得出),并且在实际运行时并无影阅读全文
posted @ 2011-03-26 21:31 似水流年-johnhuo 阅读(12) | 评论 (0) 编辑
 
摘要: 经过上面篇文章的介绍,整个系统的框架算是基本搭建完了,下面,我们要具体实现各个层次。关于数据访问层的实现,我准备讨论三种实现方式,这一篇文章讨论第一种:Access+动态生成SQL。 顾名思义,这种实现将使用Access作为后台数据库,而操作方式也是最基本的使用SQL命令。 在具体编写实现代码之前,我们需要做一些准备工作: 第一步,我们要将Access数据库搭建完成,具体做法如下。 在Web工程下新建一个文件夹,命名为AccessData,并在其中新建一个mdb文件(即Access数据库文件),按照前面介绍过的数据库设计构架,将数据表及表间关系建好,这里不再赘述。 第二步,我们要进行一些配置。阅读全文
posted @ 2011-03-26 21:23 似水流年-johnhuo 阅读(19) | 评论 (0) 编辑
 
摘要: 我们设计的分层架构,层与层之间应该是松散耦合的。因为是单向单一调用,所以,这里的“松散耦合”实际是指上层类不能具体依赖于下层类,而应该依赖于下层提供的一个接口。这样,上层类不能直接实例化下层中的类,而只持有接口,至于接口所指变量最终究竟是哪一个类,则由依赖注入机制决定。 之所以这样做,是为了实现层与层之间的“可替换”式设计,例如,现在需要换一种方式实现数据访问层,只要这个实现遵循了前面定义的数据访问层接口,业务逻辑层和表示层不需要做任何改动,只需要改一下配置文件系统即可正常运行。另外,基于这种结构的系统,还可以实现并行开发。即不同开发人员可以专注于自己的层次,只有接口被定义好了,开发出来的东西阅读全文
posted @ 2011-03-26 21:16 似水流年-johnhuo 阅读(34) | 评论 (0) 编辑
 
摘要: 接下来,将进行接口的设计。这里包括数据访问层接口和业务逻辑层接口。在分层架构中,接口扮演着非常重要的角色,它不但直接决定了各层中的各个操作类需要实现何种操作,而且它明确了各个层次的职责。接口也是系统实现依赖注入机制不可缺少的部分。 本项目的接口设计将按如下顺序进行: 1.首先由前文的需求分析,列出主要的UI部分。 2.分析各个UI需要什么业务逻辑支持,从而确定业务逻辑层接口。 3.分析业务逻辑层接口需要何种数据访问操作,从而确定数据访问层接口。 另外,为保证完全的面向对象特性,接口之间的数据传递主要靠实体类或实体类集合,禁止使用DataTable等对象传递数据。 由需求分析,列出主要UI 需求阅读全文
posted @ 2011-03-26 21:15 似水流年-johnhuo 阅读(23) | 评论 (0) 编辑
 
摘要: 实体类是现实实体在计算机中的表示。它贯穿于整个架构,负担着在各层次及模块间传递数据的职责。一般来说,实体类可以分为“贫血实体类”和“充血实体类”,前者仅仅保存实体的属性,而后者还包含一些实体间的关系与逻辑。我们在这个Demo中用的实体类将是“贫血实体类”。 大多情况下,实体类和数据库中的表(这里指实体表,不包括表示多对多对应的关系表)是一一对应的,但这并不是一个限制,在复杂的数据库设计中,有可能出现一个实体类对应多个表,或者交叉对应的情况。在本文的Demo中,实体类和表是一一对应的,并且实体类中的属性和表中的字段也是对应的。 在看实体类的代码前,先看一下系统的工程结构。附件: f3.jpg 如阅读全文
posted @ 2011-03-26 21:11 似水流年-johnhuo 阅读(16) | 评论 (0) 编辑
 
摘要: 本文主要是对将要实现的架构进行一个总体的描述,使朋友们对这个架构有个宏观上的认识。这篇文章理论性的东西会偏多一点,从下篇开始,将进行实际项目的开发。这篇文章的许多内容摘自我的毕业论文。架构基本原则: 这里,将描述一些在这个架构设计中的基本原则,其中很多都是经典的设计原则,不过针对分层架构的特点,用我自己的语言进行了描述。其中也有我自己提出的原则。 逐层调用原则及单向调用原则 现在约定将N层架构的各层依次编号为1、2、…、K、…、N-1、N,其中层的编号越大,则越处在上层。那么,我们设计的架构应该满足以下两个原则: 1.第K(1<K<=N)层只准依赖第K-1层,而不可依赖其他底层。 阅读全文
posted @ 2011-03-26 21:09 似水流年-johnhuo 阅读(46) | 评论 (0) 编辑
 
摘要: 在实际的项目中,需求分析和数据库的设计是很重要的一个环节,这个环节会直接影响项目的开发过程和质量。实际中,这个环节不但需要系统分析师、软件工程师等计算机方面的专家,还需要相关领域的领域专家参与才能完成。 但是,在这个文章系列中,所要使用的Demo仅仅是一个例子,而且其业务极为简单,因此,这里并不是真正的需求分析和数据库设计,而是将Demo的需求和数据库罗列至此,使朋友们对Demo有一个大体的了解,方便后续文章中开发过程的理解。需求分析: 这个项目是一个留言本,其业务极为简单,现将其描述如下。 1.任何访问者可以进行留言,留言完成后,不会立即显示正文,而是要经过管理员验证后才可显示。 2.任何访阅读全文
posted @ 2011-03-26 21:08 似水流年-johnhuo 阅读(23) | 评论 (0) 编辑
 
摘要: 通过浏览博客园的文章发现,很多朋友对分层架构特别感兴趣,刚好我刚做完的毕业设计就是专门研究.NET平台上分层架构的(题目叫“基于.NET平台的分层架构与设计模式应用研究”)。通过做这篇论文,我对分层架构有了一定的了解,所以,就萌发了想写一个文章系列,详述一下分层架构。然而,论文的理论性太强,不适合在网上发布,尤其不适合初学者理解,所以,我想在这个文章系列中,少讲理论,而是通过做一个完整的案例来讨论分层架构的基本方法,这样会直观很多。希望在这个文章系列的写作过程中,能和朋友们一起学习,一起进步。 为了让朋友们把主要精力放在理解分层架构而不是案例本身,我准备选择一个相对简单的留言本系统作为Demo阅读全文
posted @ 2011-03-26 21:06 似水流年-johnhuo 阅读(24) | 评论 (0) 编辑
原文地址:https://www.cnblogs.com/Leo_wl/p/2422789.html