没头没尾--项目开发笔记:怎样选择项目开发语言?!

原创 2003年01月20日 09:45:00

标题:没头没尾--项目开发笔记:怎样选择项目开发语言?!

关键词:分布式开发 C# 项目分工 DELPHIC#的混合开发

0115号:2003到了,感觉上也没有什么不一样的地方。日子还是总是要平平常常的过…………

 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

项目已经到了中期,项目小组也算是进入了攻坚的阶段。这个时期中所做的总结往往都是关于一些应用在项目中新的技术与新的方法目前在项目中应用出现的问题。应该说认识到以前有一些的想法是有问题的。比如基础打的不好等等。但是作为项目小组的一员,一定要有良好的心态。出现了问题并不意味着项目将会以失败告终,而是需要用更多的时间与精力来改善项目的情况。并且也要充分的进行总结,以防以后进行的项目还会出一样问题。

 

       项目开发语言的选择是项目小组在进行系统调研时需要决定的。如果项目开发语言选择不好,那么可能意味着需要花费更多的时间与精力来完成你的解决方案。但是往往在选择项目语言时可能并无法预期到下一步的公司的发展,行业的发展,项目的发展,所以没有办法在最早的时间界定出选择的项目开发语言是否真正适合本项目。我所参与的这个项目中,最终选择的项目开发语言是VS.net加上Delphi的开发方式。可以说这种开发方式本身是一种非常好的开发方式。但是综合在这个项目中,它又有一些不合适开发的部分。

如果对项目情况不清楚,可以参考以前的项目笔记。

http://www.csdn.net/develop/author/netauthor/ViktorYu/

 

Background

以前的项目笔记我提到过,公司以前的项目及产品基本上是基于VB,或是DELPHI进行开发的,开发项目适应的的业务范围也局限在开发企业内部网络的解决方案。可以帮助企业将以前单位内部使用手工开付的单据变成使用计算机进行开具与管理。卖点也就是在于可以很好的整合企业内部的业务流程。由于新技术的发展,只满足公司内部的业务整合方案已经失去了行业中的竞争力。通过对用户需求新的理解,我们为客户找出了一些跨企业应用的需求。这些新的需求如果使用以前的纯粹的基于VBDELPHI的开发技术已经明显不能够满足,必须采用新的技术来将其搞定。

由上可知,我们必须要采用一个新开发技术以可以做到开发分布式的解决方案。我们尝试过采用JAVA来开发这种分布式的解决方案。但是对于技术的发展以及公司技术人员的技术构成来说,大部分都是对于MS的开发语言要都比较的熟悉。于是新的项目又准备采用VS.net进行开发。经过了很长时间的VS.net开发的准备与熟悉之后。我们决定使用VS.NETWeb Service方式来完成本项目的解决方案。可是当深入了解客户的实际情况之后我们又发现对于传统行业来说,我们如果采用的VS.NET来开发客户端的话,硬件上的要求很难实现。特别是当我们可临要在硬件配置非常差的机器上安排.net framework。(咱们的客户端有的机器配置非常的差,586之类的机器也可能有。)而且还有一个难以突破的瓶颈,就是客户要求我们的应用程序必须可以直接从网上下载安装,试想一下用中国的拨号网络下载一个20M.net framework的安装包…………。

于是经过讨论之后剩下的两种选择。

²        做成一个纯粹的B/S结构,这种结构下使用网页将信息的SHOW给客户;

²        还是采用web service的技术,只是在客户端寻找一种比较老的语言进行开发,以这样的方式来解决客户端软件的安装问题。

最初的考虑是项目小组的成员中,以前使用ASP做过项目的只有一个小组成员,而采用DELPHI做过项目的却有四个。并且项目小组的成员很快的做出了一个DEMO来验证DELPHI调用web service方法是完全可行的。So,我们选择了放弃采用B/S的方式,而是使用VS.NET开发服务器端,DELPHI开发客户端混合开发方式。

VS.NETDELPHI进行整合开发的方式并没有一个成熟的先例可以借鉴。正如我们以前也并没有用VS.NET开发过一个可以具体实施与提交的项目。

本项目中遇见的问题

项目中目前对这种C# + DELPHI的开发方式,项目小组的成员已经从最先前的对技术高兴变成非常多的抱怨。

²        DataSetWebService格式与ClientDataSetWebService格式的区别

MSDataSet存出的WebService格式与Delphi定义出的ClientDataSetWeb Service格式有很大的区别。这个区别导致我们必须在DELPHI端接收DataSet数据时进行数据的处理。

可以说我们在开始之初就已经想到了这个问题。但是麻烦的不只是格式上的区别。更加麻烦的是MSDataSet中已经将对数据处理加入其中。对数据的增加,修改,删除之类的动作都可以在传送的过程中记录在XML文档中。这个就对直接回传ClientDataSet产生了很大的麻烦。在开发的初期,我们提供出模拟MSDATASET的运作函数,并要求开发客户端应用的开发人员去调用这些方法。这种操作的方式带来的问题是客户端写的代码非常的罗嗦。又由于一开始就要用这么非常麻烦的操作方式,导致开发人员开发效率非常的低。双重的低。当然后面我们重新的进行了封装,对操作的说明都放在了接口程序进行统一的处理。这样才将我们的开发效率提高了很多。

 

由于之前我们已经作过了很多NET上使用web service的例子。那么开发语言的转变我们希望客户端的开发类似于使用VS.NET开发的客户端。这样的话,如果我们会有新的客户,可以使用C#做为其客户端的话,我们开发的经验也可以最大限度的使用。所以目前的实现方式是在客户端的开发中,也需要去模拟一些C#的操作方式。而相对来说,C#对数据的操作方式要求比较严格,将会对数据进行非常严格的约束。这种强的约束的情况会使得习惯了去使用VBDELPHI对数据库进行直接写SQL语句进行操作的开发人员非常不习惯。

例如:当修改一条商品的时候,传统的方式采用回传一个时间标记以及修改记录的主键与最后的修改值。这样回传就可以满足校验数据库数据,以及校验成功之后的数据修改。C#的方式是要将原数据与修改过后的数据完成的回传给服务器,服务器第一步的动作将是自动比较回传原数据与数据库中的版本是否完成相同,数据是否完全一样,这其中的数据并没一个优先级的概念,最重要的数据与最不重要的数据都必须完全一样才可以进行数据提交。上面这两种方式的不一样引起了开发人员很多的争议。对数据没有一个重要性的概念使得开发时候有时出现的数据提交错误调试起来非常的困难。

对上面的问题处理可以说我们过于教条。MS提供出来的是一种非常完备的数据校验的机制,这种机制对于使用Web Service进行这种可能会有并发性的数据库提交的方式非常的完备。但并不意味着我们的项目也必须要求这种完备。针对我们的特殊的业务需求,可能我们在某一些的业务中并不会出现并发的处理,可能我们的对并发的处理并不要求做的如此完备,那么应该可以找出一种更好的方式来进行数据提交的处理。

²        开发管理上的困难加强

用开发管理上,两种语言混合开发对源代码的管理难度加大了。并且项目组也并没有去研究找出一种好的方式来针对两种语言混合开发源代码管理的方法。(以前的经验只有在一个项目中采用两种语言,但是这两种语言还是分别有人负责去管理。目前的情况是两种语言之间的接口定义并不是很清楚,而最终采用的分模块开发方式使得每一个模块的开发人员都要同时的使用两种语言进行开发,以及管理两种语言开发的源代码。这种经验是没有的,而且从开发的角度上来说,这种情况应该是要被避免的。)

 

选择项目开发语言时需要注意的方面

如果要选择一种语言来开发一个分布式应用系统的项目,那你的选择可以有非常非常的多。从JAVA,到VS.NET,等等。那么选择开发语言应该有什么样子的规则,应该注意去避免什么样的一些事情,这里有一些项目中的体会。

l         项目的特点

项目的特点无疑是选择是开发语言时最为重要的因素。由于选择开发语言的时候,一般都是由公司中负责技术的主管来进行选择。有的时候会具体的与开发人员无关,可以真正的开发过程又是由开发人员动手一行一行的写代码(工具生成代码不算)。可是往往不会让开发人员来选择开发语言。

经常听到很多的朋友以过来人的经验告诉我,所谓做项目,一定是要以最为成熟的技术来做。千万不要用最新的技术,不要被宣传的东东搞到头脑发热。这个原则可以说是做项目非常合适的原则。但是仔细的分析这个规则之后可以发现,实际上这个规则只适用于做一个时间比较紧的项目(中国哪一个项目不是这样子?所以这个规则总有人跟我说L )如果对时间比较长,或者说有一点带实验性质的项目中,那么还是要对新技术进行全面的尝试。

根据项目的特点来进行选择时要注意的

u       公司的情况

公司如果处在一个生存期,那么一定不要去搞自己不熟的东东,先把项目做出来再说。

u       项目所处理的范围

项目只是一个简单的应用,比如企业内部网的应用,那么就选择简单的方法,不要去用什么Web Service 之类的技术。至少不要在看不见先例的情况下去采用新的技术

u       项目时间

项目时间如果非常的紧张的话,那么最后用自己熟悉的开发语言进行开发。

u       项目成员的人员配置。

项目成员中如果有很多人对某类的语言比较熟悉,这种语言又可以解决你的问题,那么最好选择这种语言。

l         最后选择的依据

当有了很多的选择摆在项目小组面前的时候,最后选择的依据是什么?

我们的项目小组在这件事情上出现的一个比较大的错误是对项目语言的选择过于简单化。只考虑了项目语言选择的方案是可行还是不可行。没有充分的对这种方案进行认证与全面的考虑。由于项目小组就是没有好好进行的认证,导致我们在开发的时候浪费了很多的时间与精力。这个尺度在没有时间进行认证时非常容易忽略。

从上面所说的可以看出,时间因素对于项目技术的选择是有很大的影响的。而以上所说的也只是一部分。还有一个部分是时间紧的时候,一定要选择用开发人员比较熟悉的开发语言进行开发,其它的语言即使有更好的生命力,也不能作为项目的开发语言。本项目中,正是基于对这一点的考虑,所以才选择客户端采用DELPHI进行开发。这样我们还可以在浪费了很多的时间与精力之后还可以保持继续的进行项目。很多出现的问题我们可以依靠开发人员对客户端语言的熟悉程度来快速的解决。

 

以上所说的还不包括项目管理,代码管理,测试所采用的语言与工具,暂时我还想不到这些东东的选择应该通过什么来决定。

 

总的来说,项目开发语言的选择基本没有对错。只是选择之后会给项目带来有利的影响还是会加大开发的难度。希望遇见这些问题的朋友与我交流。

mailto:Viktoryu@hotmail.com

 

 

C语言可以开发哪些项目?

C语言是我们大多数人的编程入门语言,对其也再熟悉不过了,不过很多初学者在学习的过程中难免会出现迷茫,比如:不知道C语言可以开发哪些项目,可以应用在哪些实际的开发中……,这些迷茫也导致了我们在学习的过程...
  • shiyanlou_chenshi
  • shiyanlou_chenshi
  • 2016年11月24日 17:26
  • 680

C语言项目开发-项目架构和编程命名规范

一个项目的流程:1、公司市场人员与客户交流,了解客户、引导客户使用公司最优资源并产出一份市场需求文档2、公司需求人员(BA)与客户交流,了解客户需求并产出一个软件需求文档3、项目经理、开发小组成员、需...
  • qq_31810357
  • qq_31810357
  • 2017年02月28日 12:40
  • 994

Android项目开发时版本选择

一、引言 没事就喜欢瞎扯,就算瞎扯也要好好记录问题,写点有用的东西。好了,言归正传。 二、Android软件开发时怎么选择版本 如上图所示,新建项目时有三个地方要进行选择,这里说一下三个选项...
  • wenwen091100304
  • wenwen091100304
  • 2015年09月08日 11:43
  • 1615

Linux下C开发实用小技术、好代码总结 —— 银行项目

1 Linux下C语言中预定义的几个调试宏Linux几个调试宏__LINE__ __FILE__ __FUNCTION__ __TIME__ __DATA__这几个宏是编译器内置的,不是在哪个头文件...
  • Robot__Man
  • Robot__Man
  • 2016年09月02日 14:46
  • 1223

值得学习的C语言开源项目

值得学习的C语言开源项目 - 1. Webbench  Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站...
  • chinabhlt
  • chinabhlt
  • 2016年01月13日 13:40
  • 2031

如何在VS2015创建C语言项目

1.文件->新建->项目 2.已安装->模板->Visual C++->Win32->Win32控制台应用程序 3.直接下一步过后,在附加选项里勾选空项目后,点击完成 4.在生成的解决方...
  • Timbo0
  • Timbo0
  • 2016年12月13日 16:06
  • 7676

软件项目开发模型

软件工程之软件开发模型类型1.边做边改模型2.瀑布模型3.演化模型4.增量模型5.螺旋模型6.喷泉模型7.敏捷模型-SCRUM各种模型的优点和缺点  瀑布模型 文档驱动 系统可能不满足客户的需求   ...
  • u011225629
  • u011225629
  • 2015年08月31日 09:10
  • 1557

H5游戏项目开发总结

今年5月1日公司立项准备开发一款SLG的H5游戏。经过调研决定使用LayaAir引擎。 目前游戏第一轮测试已经结束。简单回顾一下: 明确要求赶在暑期档上线,由于之前一直是用cocos2dx-lua...
  • yhhwatl
  • yhhwatl
  • 2016年09月10日 20:44
  • 1259

基于Ajax+SpringMVC+Spring+MySQL框架的云笔记项目cloud_note知识点总结

笔记管理系统,用户可以管理笔记信息,可以查看其他用户分享的笔记。
  • yuanxindev
  • yuanxindev
  • 2017年06月20日 21:43
  • 546

整体项目开发流程

1、需求分析 需求分析是一个项目中比较重要的一项,
  • android_xiaozhou
  • android_xiaozhou
  • 2014年04月07日 00:22
  • 1411
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:没头没尾--项目开发笔记:怎样选择项目开发语言?!
举报原因:
原因补充:

(最多只允许输入30个字)