《.NET程序开发》心得总结

2024-10-12

《.NET程序开发》心得总结(共9篇)

《.NET程序开发》心得总结 篇1

《ASP.NET程序开发》心得总结

短短的四个月很快过去了,在这短短的四个月里,我学到了很多,了解了很多。经过一个学期的简单学习和上课听讲,初步掌握了ASP.NET动态网页制作的一些简单的知识和基本常识,也能从老师讲的基本知识中简单的应用一下上课所学到的知识。

开始学习后也并非是想象中那样顺利,开始的学习让我异常感到学习任务的艰巨,因为学习中我们遇到了很多以前未曾遇到的难点,有时难免冥思苦想也无济于事。曾经看到网上有这么一句话,一个优秀的网络程序员不但要了解自己领域的一些专业技术,而且很多时候还要充当半个网络工程师,半个美术设计师和半个数据库管理员。照这么说来,我单单学习ASP.NET是远远不够的,还要学习计算机网络、美术设计、数据库,我很喜欢有关计算机方面的东西,认为我们当代的生活越来越离不开计算机,并且我也很痴迷计算机所带来的强大功能。

首先感谢老师的教诲,经过这门课程的学习,我的收获如下:(1)进一步巩固和加深“ASP动态网页设计”课程的基本知识,了解ASP动态网页设计知识在实际中的应用。

(2)综合运用“ASP动态网页设计”课程和先修课程的理论及生产实际知识去分析和解决问题,进行的相关训练。

(3)学习ASP动态网页设计的一般方法,了解和掌握通用数据库的连接、数据的相关操作或网站的设计过程和进行方式,培养正确的设计思想和分析问题、解决问题的能力,特别是网站功能规划的能力和实现相关功能的能力。

(4)通过本程序的开发,并对电子商务系统的系统的分析、系统设计、数据库设计和功能的实现等,培养ASP动态网页设计的基本技能。

在本次课程设计过程中,我学到了好多东西。在此特别感谢老师教诲。老师不仅上课生动、幽默,平时上机时又悉心的指导。同时感谢学校给我们提供了非常优越的设计环境,对于我顺利完成这次课程设计起到了关键性的作用。通过开发本系统,我较全面的掌握了ASPT及SQL的基本知识和编程技巧,并在开发过程中我的ASP.NET开发能力得到了进一步的提高。如: SQL语言的使用;以前学过的软件工程知识、数据库原理及操作也得到了充分的应用。

在开发过程中我学到了一些经验:系统分析的好坏将决定着的系统开发成功与否,一份好分析设计将是成功开发主要因素。我们在着手开发之前不要急于编程,先应有较长的时间去把分析做好,做好数据库设计工作,写出相关的开发文档等。然后再开始编写程序代码,这样做到每写一步代码心底有数,有条不絮。当然也有些还需待继续深入地方如:COM技术等。

在这短短的几个月中,我知道在程序设计的时候,不要太在意程序是否最简洁灵活,对于一般开发者而言,程序规范化和可读性可能比追求程序的灵活性更加重要。在互联网资源越来越丰富的情况下,我们可以参考一些规范的程序源代码来学习。同时我也知道,想要学好这门课程,所要具备很多条件,首先打代码要规范,要做注释,这样回头来看程序时可以很快的看懂,一方面可以练习自己的逻辑表达能力,对以后遇到难以实现的功能也可以很好的表达出来向别人请教,而且出去从事编程工作的话,代码的规范是相当重要的。还有一点要学会总结,把自己做的程序用到的知识点列出来就可以很好的总结自己的知识点。当形成知识体系,对知识的理解就会更上一层楼。

13级软件班

***

2015年7月1日

《.NET程序开发》心得总结 篇2

一确定学生基础知识

基础不牢, 地动山摇。Asp.net程序设计课程是一个综合应用较强的课程, 一般来说该课程应该放到先导课程结束后再开课, 先导课程包括网页设计、C#程序设计、数据库程序设计以及Java Script等。那么在Asp.net开课之前, 就要大概了解学生的先导课程基础掌握情况, 如果大部分学生对于先导课程知识基本上能掌握, 在讲课时进度就可以稍微快些, 否则在讲课时就要针对可能用到的先导课程知识进行补充提示。这点是非常重要的, 如果把握不好, 对讲课的进度、学生对课程的学习态度以及理解都会产生较大影响。

二确定所讲内容顺序

细节决定成败。Asp.net程序设计课程内容繁多, 细心的读者会发现, 不同的教材会有不同的内容安排顺序。那么, 不同的讲课顺序对学生的学习有影响吗?正常情况下, 讲课的顺序肯定是先易后难, 遵循知识结构的先后顺序。诚然, 这个顺序听起来应该是正确的, 但是笔者认为, 对于不同基础的学生, 对于不同的讲课对象, 顺序就要有所区别, 才能达到各自的最好效果。例如, 针对程度较好的本科生, 就应该先讲Asp.net操作数据库, 后讲数据源控件, 这样做的效果是提高了学生对编程的重视, 可以更好地利用先前所学的面向对象的内容来封装数据库访问类, 而不会受到数据源控件带来的便捷操作的影响;对于程度较差的专科生, 一般来说编程能力稍差一些, 因此, 为了让学生感觉到这门课的易操作、易入门的特性, 就需要先讲数据源控件访问数据库, 后讲Asp.net访问数据库。再如验证控件, 因为学生在上网的过程中, 对这些常用验证还是很熟悉的, 但是很少有人会考虑这些验证的原理, 那么, 对于验证控件的使用, 学生不但容易接受, 而且会很感兴趣。因此, 验证控件的讲解可以提前讲, 对提高学生对Asp.net这门课程的兴趣有着非常重要的作用。当然, 还有很多问题在讲课的过程中都需要认真地确定先后顺序, 这样对学生学习的积极性, 教学效果的提高有着非常重要的作用。

三知识点必有应用的原则

知其然知其所以然。对于教学知识点来说, 我们仅仅让学生知道是什么、怎么用还不够, 还需要让学生知道用在什么地方, 什么情况下使用。计算机教学与其他科目有所不同, 同样从书本教学的知识, 其他科目可以直接用于社会实践, 而计算机知识从书本来, 需要经过反复动手操作, 才能在实践中运用。我们在计算机教学环节中秉承“知识点必有应用”的原则, 即在讲到某个知识点时, 一定要结合该知识点的实际应用来讲, 和学生一起分析解决方法, 循序渐进的引出知识点。例如, 我们讲C语言或者java中的数组部分, 可以以中国象棋为例:中国象棋游戏的设计中就会用到数组, 棋盘信息就可以用一个9*10的二维数组来存储, 这样, 不但会提高学生学习的兴趣, 而且对提高学生的设计能力也会很有帮助。相比之下, 这种方式比起只是介绍数组的遍历读写要好很多。也许有些人会质疑, 难道任何一个知识点都会有应用吗?回答是肯定的。当然, 有些知识点的应用也许会比较偏, 这就需要教师们相互交流和提炼。而且, 这种方式长期积累下来, 对学生的知识面的扩展、设计能力的提高非常有用。

四案例驱动

事实胜于雄辩。在Asp.net教学中按照“案例驱动”机制组织, 通过一个个典型的设计实例贯穿整个课程。通过这些实例, 将编程资源介绍和编程方法讲解有机地结合在一起。

1. 教学案例设计

采用循序渐进的方式组织学习Asp.net程序设计内容。在实际生活中我们都有体会:随着知识的增加, 对事物的认识也会产生变化。所以我们用一系列的循环知识单元代替平铺直叙的知识, 采用这种教学方法, 在学习过程中总是以一种非常熟悉的状态在学习。以这种方式设计案例, 并在此基础上组织学生进行学习, 重点研究如何根据课程内容及学生特点设计合理的子案例, 进而实现大的综合案例的开发的问题。为了保证学生对案例学习兴趣的持续性和教学评价的准确性, 在基于教学案例的基础上, 使用和教学案例相同或相似的知识点, 同时再给出一定的选题空间, 让学生在特定范围内, 根据自身的情况选择异于教学案例内容的设计案例, 分小组实现各自的功能模块。例如, 教学案例为课程申报管理网站, 学生可选案例为项目申报网站、成绩管理网站等。这样既能实现既定的教学目标, 又能发挥学生的创新作用;学生既能掌握课程要求的知识点, 又能提高实践能力。

2. 自主学习

有了以上总体的布局结构后, 可把学生分为两大组。前台用户模块设计的同学负责首页的设计、商品信息的浏览、搜索商品、添加到购物车、查看购物车、查看订单等页面的设计。后台管理员模块设计的学生负责商品分类、添加商品信息、商品信息管理、订单管理以及数据库结构的设计及实现。当学生明确自己所要解决的问题时, 他们就会解决面临的一系列问题。学生在解决问题的过程中不知不觉地复习了旧知识, 也理解和掌握了新知识。

3. 教师评价

当学生完成学习任务时, 教师应进行教学评价。教师一方面要表扬任务完成得比较好的同学, 同时也要对完成得不好的学生提出问题的所在和可能解决问题的方法, 从而促进他们的学习。如果学生所遇到的问题很普遍, 教师也可以引导学生进行讨论, 让他们在讨论中互相学习, 从而掌握知识、提高技能。并结合实际项目实例, 说明知识点的具体使用。

4. 师生小结

当学生完成任务后, 教师要引导学生进行总结。总结的内容和方式因人、因内容而异, 最主要的是谈谈自己遇到的问题和解决方法。例如, 在设计用户登录模块时, 学生做了几个模式, 有“用户直接登录”模式、“cookie存储用户名和密码”模式、“文件存储用户名和密码”模式、用户名和密码等信息保存在数据库等模式, 学生通过总结讨论体会到无论哪种登录方式, 其取得用户信息进行系统登录的原理是相同的。学生有了实际经验, 起到了很好的教学效果。

五实践环节, 善于利用网络资源

实践出真知。实践环节是该课程的一个重要环节, 学生所学的理论知识, 所讲的知识点, 必须通过具体的实践动手才能彻底地领悟和掌握。实践环节采用“两人一机”的模式, 而不是通常的“一人一机”模式, 因为在实际教学环节中发现, 一人一机的模式会影响学生的练习效率, 因为碰到一个问题时, 需要一个人去解决, 就会花去较长的时间;如果是两人一机, 那么当碰到问题时, 两个人解决问题肯定比一个人解决问题的效率高。通过实践证明, 该模式有利于提高学生实践环节的效果。

还有一句古话叫“熟读唐诗三百首, 不会作诗也会吟”, 主要意思就是熟能生巧。读多了, 模仿、转化、借用、引申, 都是一种熏陶, 都是一种积累。那么对于我们的程序或者项目实例, 也是一样的道理。现在网络的教学资源丰富, 包括一些程序源码、项目实例, 我们可以让学生下载一些源码进行阅读, 包括源码的设计架构、设计思路、源程序。这种方式不但可以提高学生对知识点的掌握, 还可以查漏补缺, 扩大知识面。

六结束语

本文结合教学实际, 对Asp.Net程序设计课程进行了教学总结和改革, 通过对确定学生基础、确定讲课顺序、知识点必有应用的原则、案例驱动教学模式以及实践环节的分析和改革, 使得教学过程更加科学合理, 解决了教学中的一些效率低下的问题, 对教学效果和学生能力的提高具有积极的作用。

摘要:本文针对计算机软件开发专业的特点和培养目标, 分析了Asp.net在计算机专业课程中的重要作用, 从多个方面探讨了Asp.net课程的教学方法以及需要注意的一些问题, 对提高该门课程的教学效果, 提高学生的学习积极性, 提高学生的实践动手能力具有一定的指导作用。

关键词:课程基础,知识点必有应用,案例驱动

参考文献

NET程序员 篇3

杭州潮流信息技术有限公司成都分公司

公司规模:

10049人 公司性质:

私营.民营企业 公司行业:

计算机软件,教育·培训·科研·院校,中介服务

          职位性质:全职

发布日期:2008-10-2 截止日期:2008-12-20 工作经验:3-5年 学历要求:本科以上 招聘人数:2人

语言能力:英语/良好 简历语言:中文 其它待遇:包吃住 工作地点:成都

职位描述:

职位描述:讲授.Net技术课程(赴成都短期培训08年11月--09年3月,月薪万元以上)任职条件:

1、计算机相关专业,大学本科以上学历,硕士以上学历优先;

2、有三年以上的基于.Net的项目开发经验;

3、一年以上培训经验;

4、熟悉IT专业术语,英语; 联系方式:

公司网址:

高级软件设计工程师(VB.Net欧美项目)(004)信德管理顾问(大连)有限公司

公司规模:

149人 公司性质:

私营.民营企业 公司行业:

计算机软件,IT服务·系统集成

      职位性质:全职

发布日期:2008-10-1 截止日期:2008-11-9 工作经验:1-2年 学历要求:本科以上 招聘人数:5人     语言能力:不限 简历语言:中文

其它待遇:两年内送一次第三方培训 工作地点:成都

职位描述:

.net(c#)软件工程师

要求有.net(c#),oracle开发经验 1年以上相关WinForm开发经验。熟悉ADO.NET,熟悉面向对象开发。

具备Oracle数据库开发经验者优先、熟悉Remoting开发者优先、了解Win32 Api优先;

本科,1年以上相关开发经验; 有政法方面项目开发经验更优; 良好的沟通表达能力; 学习能力强;

有良好的个人品格; 愿意出差

直接赴日.NET高级软件工程师

北京阿提拉科技有限公司

公司规模:

100499人 公司性质:

外商独资.外企办事处 公司行业:

计算机软件,互联网·电子商务,通信(设备·运营·增值服务)         职位性质:全职

发布日期:2008-9-30 截止日期:2008-12-27 工作经验:1-2年 学历要求:本科以上 招聘人数:若干

语言能力:英语/熟练 简历语言:中文和英文 工作地点:成都

职位描述:

Essential Requirements 1.Bachelor Degree in Computer Science or related fields 2.Proficient in VB.NET AND C#.NET 3.Familiar with SQL Server and database programming 4.Able to work independently, with high level of motivation and service mindset 5.Possess good communication, and interpersonal skills 6.At least a CET4 certification in English language

职位描述及要求

1.从事 ASP.NET 系统的开发和维护及编写数据库的绝本文件 2.计算机及相关专业本科以上

3.具有良好的程序设计以及分析、解决问题的能力 4.具有良好的英文读写能力;英语四级以上 5.熟悉VB.NET,ADO.NET和XML 6.熟悉OraclePL/SQL或SQLServer2000数据库 7.1年以上相关工作经验,也欢迎应届毕业生加盟

.NET 项目经理(DH010)德和商务信息咨询有限公司

公司规模:

5099人 公司性质:

外商独资.外企办事处 公司行业:

互联网·电子商务,计算机软件,网络游戏

           职位性质:全职

发布日期:2008-9-30 截止日期:2009-5-26 工作经验:3-5年 学历要求:中专以上 招聘人数:5人

语言能力:英语/良好 职位月薪:4000~5999 简历语言:中文

其它待遇:公司提供免费中、晚两餐 工作地点:成都

职位描述:

招聘岗位:

高级.NET软件工程师(构架师)

职位要求:

1、精通C#/ASP.NET开发,但不只是C#,要求你是一位全能的程序设计者,你写的程序要能够同时照顾到用户体验和SEO。熟悉C#设计模式,WEBSERVICE,REMOTING,了解软件工程流程,熟悉,Javascript,AJAX。熟悉SQL SERVER,能够熟练编写存储过程、触发器等,熟悉数据库调优的各种方法,深刻理解各种主流架构的优势与劣势,并能扬长避短,用恰当的技能组合解决各种难题。

2、思路开阔,头脑清晰,手法灵活,乐于钻研,富有激情。

3、拥有良好的代码习惯,要求结构清晰,命名规范,逻辑性强,代码冗余率低。

4、英文水平过硬,能基本不借助字典快速阅读英文文档。

5、有自主或组织研发B/S应用产品者优先。

6、有丰富的需求变更处理能力经验和敏锐的网站功能嗅觉,对UI/UE有良好的感知,熟悉用户的浏览习惯,了解用户心理(好的产品源于对用户体验的熟悉,掌握代码的程序员让产品拥有生命,而掌握用户的程序员让产品拥有灵魂)。

7、你没有以上经验,但是每天都在关注着互联网前沿的信息,同时对网站的宣传和流量引入方法非常精通,各种SEO手段运用自如,且自信身怀绝技并有信心通过团队的配合打造多种互联网系统或产品,也非常期待你能过来一试。

8、你将获得2000-4000的底薪,和一群年轻的团队成员,在一个宽阔的办公环境中运用各种技术手段开发出能够产生巨大价值的产品。

提示:

1、有意者请将个人简历投递到公司指定的联系地址或通过招聘网直接投递。(请勿重复投递简历)

2、发送电子邮件请以“应聘+姓名+应聘职位”作为邮件标题发送。

3、合适者公司将电话通知面试。

4、未接到面试通知者,应聘资料将自动存入公司人才库,如有合适岗位,本公司会主动与您取得联系!

5、工作咨询QQ:875122838 584771539 QQ验证请以”应聘+岗位+姓名”的形式

.NET Consultant NCS 公司规模:

100成都499人 公司性质:

外商独资.外企办事处 公司行业:

计算机软件,互联网·电子商务,通信(设备·运营·增值服务)        职位性质:全职

发布日期:2008-9-30 截止日期:2008-12-28 工作经验:6-7年 学历要求:不限 招聘人数:1人

语言能力:英语/熟练 简历语言:中文和英文  工作地点:成都

职位描述:

Primary Skills Required:

•Lead a sub-team of software engineers to deliver a software module based on design and requirements;•Design vertical modules or horizontal layers of a large enterprise software system using UML tools;•Participate in conference calls with project manager or client in the Singapore;•Author technical documents in English;•Participate in technical pre-sales activities, including estimation and solution analysis.Qualifications: •5+ years experience in C++/Java /.NET software development;•2+ years experience in commercial.NET software development after receiving the BS degree, or equivalent years with higher degrees.Ability to design vertical slices of an enterprise-scale software based on MS.NET architecture, or a horizontal layer of such software;•Experience in software development processes, including implementing small improvements;•Hands-on experience with leading edge.NET technologies, especially Enterprise Service, Cluster Server, WCF, O/R Mapping, Distributed Transaction, and NUnit/NAnt;•Fluent in English;

Work in the Singapore for 1-2 years.请将简历发送到 cd-hr@ncsi.com.cn,并在主题中注明“Senior.NET Engineer(Team Leader)XXX(应聘者姓名)”

NET方向软件工程师

成都雷奥风电传感器有限公司

公司规模:

5049人 公司性质:

私营.民营企业 公司行业:

计算机软件,互联网·电子商务,网络游戏

         职位性质:全职

发布日期:2008-9-29 截止日期:2009-8-6 工作经验:3-5年 学历要求:大专以上 招聘人数:4人

语言能力:英语/良好 简历语言:中文 工作地点:成都

职位描述:

1)计算机相关专业大专以上学历,至少3年以上程序编写工作经验; 2)熟悉B/S、C/S两种开发模式与流程,有较强的.NET(C#)框架下的项目设计能力;

3)熟练掌握Web项目开发的相关技术(Javascript、Ajax、WebService、Xml、CSS/DIV/XHTML等);

4)较强后台程序设计与代码编写能力,熟悉网络通讯编程(Socket)、通讯协议设计; 5)熟悉MySQL、SQLServer、Oracle或其它主流数据库的应用,熟练掌握SQL语句、Stored Procedures的程序编写;

6)带领或独立承担过至少3个以上的商用软件项目开发,能较好的处理从需求到测试的软件开发流程,有3人以上的软件开发项目组管理经验; 7)非常好的团队合作精神、工作细致认真,善于沟通,能很好的处理同事关系;

8)较强文档编写能力,能在工作压力下高效的工作,非常强的责任感; 9)从事过,或有兴趣从事休闲竞技类网络游戏开发者佳。

ASP.NET软件工程师

成都优速软件有限公司

公司规模:

149人 公司性质:

私营.民营企业 公司行业:

计算机软件,互联网·电子商务,网络游戏

         职位性质:全职

发布日期:2008-9-29 截止日期:2009-8-6 工作经验:1-2年 学历要求:不限 招聘人数:4人

语言能力:英语/良好 简历语言:中文 工作地点:成都

职位描述:

1)计算机相关专业大专以上学历,至少1年以上C#程序编写工作经验; 2)熟悉B/S、C/S两种开发模式与流程;

3)熟练掌握Web项目开发的相关技术(Javascript、Ajax、WebService、Xml、CSS/DIV/XHTML等);

4)有至少2个以上商用软件项目开发经验,有独立完成模块设计与程序编写的能力。

5)熟悉MySQL、SQLServer、Oracle或其它主流数据库的应用,熟练掌握SQL语句、Stored Procedures的程序编写; 6)工作细致认真,善于沟通、善于学习;

7)熟悉文档规范,能在工作压力下高效的工作,有责任心; 8)从事过,或有兴趣从事休闲竞技类网络游戏开发者佳。

.NET(C#)Software Engineer 成都爱敏王科技有限公司

公司规模:

149人 公司性质:

中外合营(合资.合作)公司行业:

计算机软件

         职位性质:全职

发布日期:2008-9-27 截止日期:2009-7-28 工作经验:不限 学历要求:本科以上 招聘人数:3人

语言能力:英语/良好 简历语言:中文和英文 工作地点:成都

职位描述:

If you have a:

Team Mentality • We work in small highly technical groups where team bonds are strong.• Learn from a mentor and work on challenging problems early in your career.Good English • If you are going to go to training in the U.S.your English must be good.• You will be working with English speakers’ world wide.Love of Learning • Work with great programmers and learn by doing.• Learn a diverse number of skills besides programming from G.P.S to G.I.S.Do you have what it takes to grow into an elite Microsoft developer or architect?

We specialize in the following technologies.• Component Framework Design

• Visual Studio 2008(C# & VB.NET)• HTML & JavaScript • ASP.NET with Ajax • Microsoft Silverlight

• WPF(Windows Presentation Foundation)• WCF(Windows Communication Foundation)• PocketPC Platform • Oracle Spatial • Microsoft SQL 2008 • Postgre & PostGIS • G.I.S Technology

.NET测试工程师

中兴软件技术

公司规模:

50099人 公司性质:

私营.民营企业 公司行业:

互联网·电子商务,IT服务·系统集成,广告·会展·公关

         职位性质:全职

发布日期:2008/9/26 截止日期:2008/11/15 工作经验:1-2年 学历要求:大专以上 招聘人数:2人 语言能力:不限 简历语言:中文 工作地点:成都

职位描述: 熟悉Asp.net,熟悉3层结构开发,有2年以上项目开发经验。2 熟悉Html/Javascript,了解如何运用CSS和JS控制表现层,可以熟练调用和修改一般的Js脚本。熟练使用sql2000/2005开发,了解存储过程、数据库性能优化。优先条件: 数据处理和分析相关的开发经验 2 基于Web的图形和图表开发经验(例如OWC、Flash或开源或商业组件,最好有作品)大型数据库(》10w记录)设计、开发、维护经验

注意:发送简历的同时请附上作品!

.Net系统工程师

中兴软件技术

公司规模:

500999人 公司性质:

国有企业 公司行业:

计算机软件,IT服务·系统集成,互联网·电子商务

          职位性质:全职

发布日期:2008-9-28 截止日期:2009-1-17 工作经验:3-5年 学历要求:本科以上 招聘人数:4人

语言能力:英语/良好 简历语言:英文 其它待遇:社保 工作地点:成都

职位描述:

岗位描述 1.参与公司信息化软件系统的开发,为公司提供高效实用的IT支撑系统; 2.对公司内部用户提供应有的技术支持;撰写技术文档,协助收集整理公司内部IT需求;

3.开发和支持现存和新的IT应用系统;

技能要求

1.熟悉.Net框架,至少2年的 C# 开发经验,具有较强的编码能力; 2.对面向对象技术有较深入的了解,熟悉OOP,OOD/OOP; 3.精通ASP.NET(C#),能够较好的运用JAVASCRIPT、XML、CSS等技术,了解微软最新技术动向,如AJAX、ASP.NET2.0、ADO.NET2.0等;

4.至少1年SQL Server数据库设计开发经验,或者熟悉ORACLE、DB2; 5.具备钻研应用新技术、新知识的能力;

6.有良好的沟通、表达能力,能够独立完成工作,有敬业精神,具备良好的团队精神和高度的责任心;

7.大学本科学历,计算机相关专业毕业,英语四级; 8.能够承受较大工作压力。

.net中级开发工程师(成都工作)

北京云网无限网络技术有限公司

公司规模:

100499人 公司性质:

私营.民营企业 公司行业:

互联网·电子商务,通信(设备·运营·增值服务)         职位性质:全职

发布日期:2008-9-28 截止日期:2009-4-16 工作经验:3-5年 学历要求:本科以上 招聘人数:2人 语言能力:不限 简历语言:中文 工作地点:成都

职位描述:

岗位职责:

1、负责公司电子商务网站程序及项目的构架、设计和核心开发;

2、协助项目经理/产品经理完成相关任务达成商业目标;

3、参与评审、测试和质量控制;

4、指导和培养团队成员提高技能。

岗位要求:

1、计算机相关专业本科及以上学历,3年以上工作经验;

2、精通c#进行ASP.Net进行电子商务网站开发,熟悉asp+.COM构架;

3、精通Oracle或者Sql Server,有大型数据库研发经验;

4、熟悉微软.NET架构,精通Web Service、Javascript等技能;

5、有电子商务系统或者即时通讯系统开发经验者优先;

6、良好的面向对象设计及编码经验;

7、有良好的沟通、表达、分析能力,有团队合作精神;

8、有学习新知识的渴望和优秀的学习能力。备注:

1.应聘邮件请注明“成都”;

.net程序员面试试题 篇4

(1)new 运算符

用于创建对象和调用构造函数。

(2)new 修饰符

用于向基类成员隐藏继承成员。

(3)new 约束

用于在泛型声明中约束可能用作类型参数的参数的类型。

2.如何把一个Array复制到ArrayList里

(1) 实现1

string[] s ={ ”111“, ”22222“ };

ArrayList list = new ArrayList;

list.AddRange(s);

(2)实现2

string[] s ={ ”111“, ”22222“ };

ArrayList list = new ArrayList(s);

3.DataGrid的Datasouse可以连接什么数据源

DataTable

DataView

DataSet

DataViewManager

任何实现IListSource接口的组件

任何实现IList接口的组件

4.概述反射和序列化

反射

公共语言运行库加载器管理应用程序域。这种管理包括将每个程序集加载到相应的应用程序域以及控制每个程序集中类型层次结

构的内存布局。

程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创

建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性。

序列化

序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来

,可以轻松地存储和传输数据。

5.概述O/R Mapping 的原理

利用反射,配置将对象和数据库表映射。

6. 可访问性级别有哪几种

public 访问不受限制。

protected 访问仅限于包含类或从包含类派生的类型。

internal 访问仅限于当前程序集。

protected internal 访问仅限于从包含类派生的当前程序集或类型。

private 访问仅限于包含类型。

7. sealed 修饰符有什么特点

sealed 修饰符可以应用于类、实例方法和属性。密封类不能被继承。密封方法会重写基类中的方法,但其本身不能在任何派生

类中进一步重写。当应用于方法或属性时,sealed 修饰符必须始终与 override一起使用。

8.列举ADO.NET中的共享类和数据库特定类

共享类

DataSet

DataTable

DataRow

DataColumn

DataRelation

Constraint

DataColumnMapping

DataTableMapping

特定类

(x)Connection

(x)Command

(x)CommandBuilder

(x)DataAdapter

(x)DataReader

(x)Parameter

(x)Transaction

9.执行下面代码后:

String strTemp =”abcdefg 某某某“;

Int i=System.Text.Encoding.Default.GetBytes(strTemp).Length;

Int j=strTemp.Length;

问:

i=?

j=?

i=(14 ) ;j=(11 ) 中文两个字节

10.C#中,string str = null 与 string str =”“,请尽量用文字说明区别。

string str =”"初始化对象分配空间

而string str=null初始化对象

11.详述.NET里class和struct的异同

结构与类共享几乎所有相同的语法,但结构比类受到的限制更多:

尽管结构的静态字段可以初始化,结构实例字段声明还是不能使用初始值设定项。

结构不能声明默认构造函数(没有参数的构造函数)或析构函数。

结构的副本由编译器自动创建和销毁,因此不需要使用默认构造函数和析构函数。实际上,编译器通过为所有字段赋予默认值(

参见默认值表)来实现默认构造函数。结构不能从类或其他结构继承。

结构是值类型 -- 如果从结构创建一个对象并将该对象赋给某个变量,变量则包含结构的全部值。复制包含结构的变量时,将复

制所有数据,对新副本所做的任何修改都不会改变旧副本的数据。由于结构不使用引用,因此结构没有标识 -- 具有相同数据的两个

《.NET程序开发》心得总结 篇5

最近园子里好多人谈到了招聘面试,特别是多线程这个问题出现了很多次;多线程也是我在面试中很喜欢问的一个题目,和大家分享一下(仅限.net)

为什么喜欢在面试中问这个问题

因为这是一个很好的了解面试者知识深度的问题,在现代CPU都是多核的背景下,多线程作为一种能充分发挥CPU资源的技术使用的越来越广泛.而且这个问题可以把普通的应用开发人员(增删改查)和有一定技术深度/专研精神的人区分出来

背景:

面试.net中高级软件工程师/架构师(事先可能不知道对方的目标等级,要在这次面试过程中确定)

本文只是单纯的一个技术面试的一个问题而已,不是完整的一个面试

以下是我的一般面试流程(不是所有的,不过60%都会在下面,所有问题都不是定死的,会看对方的情况再安排)

A 了解(要求简述,看回答的水平和方向选择2,3,4,5中的一个)

B 不了解(到结论1)

A 准确描述线程池的意义和使用场景;并且能深入介绍线程的资源消耗 [最好还能列举多种类似设计的比较](到问题4)

B 准确了描述了池的意义,并能描述对应的使用场景, 例如很多短时间的操作会用线程池中以避免构建线程的资源消耗(到问题3)

C 能描述使用场景,但是无法系统的说明原因(到结论2)

D 能系统的的介绍线程池,但是无法描述使用场景(到结论0)

A 能准确描述意义和优劣势, [例如性能,逻辑独立性,额外的性能消耗,线程调度和切换](到问题4 看起来技术细节/底子不错 继续问技术细节)

B 能描述一个准确的使用多线程的场景,但是无法系统的描述多线程的意义(到问题5, 想了解一下这个场景是否真的是他设计解决的,还是他只是其中的一个开发人员)

C 什么都说不出来,或者说不到点子上(结论2)

A 什么都说不出来(结论0/2 太奇怪了之前的问题是背的?这里同步居然说不出来)

B 知道lock关键字,然后其他的不懂(结论2)

C 知道lock autoresetevent 信号量等常见的.net中的同步方式,偶尔还能说跨进程同步(结论3-)

D 知道spinlock monitor event等基本上所有的常用同步方式,知道在某些场景适合用某种方式,但是说不出原因(到问题5 或者结论3)

E 知道user mode和kernel mode.对两者有一些细节上的了解,明白一个线程所持有的资源,能描述出不同同步方式的差别和使用场景,可以对monitor的内部原理作出介绍(结论4 或者到问题5)

A 没有具体的使用场景,(到结论0/2/3)

B 能从某一个角度介绍使用场景,并且能表述为什么当初使用了这个场景(到结论3)

C 作为团队的一员,参加过某个大型项目, 所以有一个很适合的使用场景,但是只讲过猪cucci女包、香奈儿包包、爱马仕包包:|冬装外套、冬装女装、时尚冬装:

:|皮草外套、水貂皮草、皮草大衣:

跑,没吃过猪肉(到结论3)

D 能系统的描述和介绍一些很适合的使用场景,并结合自己的项目经验介绍当初为什么使用这样的设计,同时还能提出优化建议以便能做的更好(到结论4)[可能会提出一个场景让他按照他的经验做现场设计]

初步结论0: 这人可能是事先准备的面试题,或者是听别人介绍过,但是自己从来没用过;接下来我会问问他其他方面的技术问题(特别是细节),确认他是否只会吹牛

初步结论1: 能力<=中级开发人员 [没吃过猪肉好歹要见过猪吧]

初步结论2: 能力在中级开发人员附近[有过不少实践经验,但是没有系统的想过原因,知其然而不知其所以然]

初步结论3: 能力在中级开发人员到高级开发人员之间 [知道点东西,不知道更详细的, 别人交代的任务可以完成的比较顺利,但是想做的很好有点难,需要架构师帮忙控制设计]

初步结论4: 能力在高级开发人员和架构师之间 [对多线程有较深入的了解,能在架构设计的时候选择适合的解决方案,能系统的描述多线程的意义,并给团队其他成员技术支持]

所有的结论都不是定死的,一般还会补充一些问题,或者最后让面试者自由问问题;希望面试者能充分表现他的技术能力在这个点

某些可能会被问到的技术细节:(上面已经提到的就不问了)

1.如果你是个leader/manager 如何解决掉产品里面存在的多线程的bug(你的团队成员水平可能很一般,会写出一些BUG)

2.IO线程和worker线程(window 和.net)

3.后台线程和前台线程

4.Stackoverflow的问题排查(询问线程栈)

5.线程池的配置和影响范围(有没有通过配置优化.net应用程序的性能)

6.有没有做过多线程程序的debug

如何排查某个进程中CPU 100% 的根本原因(假设只在生产环境出现)

出现意料之外的数据怎么处理

8.是否了解TLS thread local storage(可能会问到CallContext)

9.经典案例, 每隔一分钟执行一次的定时任务, 用 thread+ while(true)还是timer

10.一个.net线程的资源消耗

11..net线程和window线程的异同几种常用的概念的性能差别asp.net的线程机制和一些关键配置一些常见的多线程设计的场景 例如 thread1-queue-theads多线程和异步有什么关系和区别

本文描述了一些我个人比较喜欢的多线程方面的问题,以确定面试者是不是有足够的能力和技术深度

顺便看看他是否有系统的分析和解决问题的能力以及足够的知识面,顺便看看面试者的经验和知识体系

此外如此多的描述也是考验对方表达和沟通能力(这是架构师的重要能力)

当然,肯定有遗漏,不足或者误判..还请大家一起讨论讨论

补充(感谢各位在评论中的提醒)

1.这不是一个完整的面试,完整的面试更多是考核面试者是不是适合我们的公司的这个职位;包括说 性格,解决问题的能力,学习能力,团队合作,目前的技术水平

而这只是询问一个技术细节

.NET平台下开发框架体系研究 篇6

(1) 框架应具备较好的通用性, 能应用于大多数基于B/S和C/S模式的项目开发。 (2) 框架应具备较强的安全性, 能保障系统的稳定运行。 (3) 框架应该是分层设计, 各层组件可以部署在一台服务器上, 也可以部署在多个系统中, 从而使整个系统具有很好的可扩展性。 (4) 多个开发人员可以共享数据库的连接。因为数据库连接不是表示层直接实现的, 而是由中间层调用数据访问层完成的, 通过同一中间层就可以实现对数据库连接的共享。 (5) 如果业务发生变化, 确保可以重新部署所有程序。

2、框架体系结构

现阶段的系统开发大多是基于B/S或者C/S模式, 相应的表示层通常表现为web和winform方式, 为了体现出更好的灵活性和通用性, 本框架没有对表示层进行设计, 而是在表示层下面加入了应用接口层, 应用接口层提供了表示层和下层之间的接口, 体现了设计模式中的依赖倒转原则, 降低了程序各部分之间的耦合。

这样, 框架可以同时应用于windows应用系统和web应用系统中。对于传统数据访问控制层, 可以再分为数据服务层和数据库操作层。其中, 数据服务层封装了三种数据访问方式:本地访问、分布式远程访问和Web Service访问。为了实现不同数据访问方式的调用, 还必须加入核心调用层的设计。同时, 框架还加入了安全防护层, 确保系统具有较好的安全性。

(1) 表示层。表示层是客户端的用户界面, 负责从用户方接收命令, 请求, 数据, 传递给应用接口层处理, 最后将结果呈现出来。根据不同的需要, 表示层可以表现为web或winform方式。 (2) 应用接口层。应用接口层作为用户表示层和下层的接口, 负责给用户表示层提供组件的访问接口, 并且负责封装用户表示层传入的数据信息。同时, 表示层还可以作为隔离层, 将用户界面与各种业务功能的具体实现隔离开来。 (3) 核心调用层。核心调用层根据配置文件的配置信息, 确定所需要调用的服务方式, 启动数据服务层。 (4) 数据服务层。数据服务层封装了三种不同的数据访问方式, 分别为本地访问、分布式远程访问、Web Service访问, 并且通过.NET特有的反射机制, 动态调用相应的数据库操作。 (5) 数据库操作层。数据库操作层定义了数据库操作组件, 执行对应的数据库操作, 返回结果集。

3、框架中的配置管理规范

.NET多层开发框架中的配置管理规范主要由配置文件Envir onment Manager。config和配置文件管理类Environment Manager组成。配置文件Environment Manager。config为标准XML格式文档, 规定了框架中各种配置信息的读写规范, 其主要内容包括:数据库连接信息、数据服务层实现方式信息和服务器管理信息等。

数据库连接信息定义了数据库的路径、数据库名、连接密码等基本信息;数据服务层实现方式信息定义了框架中数据服务层的实现方式, 分为Local、Remoting、Web Service三种;而服务器管理信息定义了对服务器进行管理控制的相关信息, 供服务启动和数据操作层使用。

配置文件管理类Environment Manager负责管理配置文件, 包括配置文件的路径、配置文件加载、配置文件中对应的键值的获取、验证等功能。

4、框架中的数据传输与共享

按照基于设计模式的软件开发方式, 框架的设计应该遵循接口与实现分离的原则, 即使利用已有的模块, 只要知道它预定义的接口和实现的功能, 不用关心其实现的细节, 对于我们具体的实际应用来说, 应该保证在确定输入和输出数据的情况下, 尽量实现“黑盒重用”。因此必须预定义框架中数据的输入和输出形式, 可以设计一个通用的数据传输共享类, 用来传递数据, 需要实现的共享信息主要包括:系统信息、用户信息、用户操作信息、操作数据信息、返回数据集信息。根据需要将共享信息封装到两个类中:操作参数类和数据传递基类。

4.1 操作参数类

操作参数类Request Parameter由环境信息和用户操作信息组成, 用于向框架各层之间传递信息。环境信息包括系统信息和用户信息。这里的系统信息和用户信息包括系统时间、登陆系统的主机名称、IP地址、用户ID等。环境信息由配置文件管理类对象Environ ment Manager获取, 用于应用接口层向下传递给核心调用层。用户操作信息包括用户调用的框架类和具体操作信息。

4.2 数据传递基类

在对数据库的操作过程中, 一般是以Data Table的形式返回数据集信息。同时由于用户在进行数据库操作时, 需要传递不同的操作参数, 这样就可以设计一个数据传递类, 专门用于数据的传递。这里由于用户传入参数的不确定性, 只定义数据传递基类Base Appli cation Data, 具体某部分进行数据传递时, 继承基类的实现, 加入具体的参数即可。数据传递基类的实现主要包括两个方面:一是获得参数的抽象函数接口, 二是获得结果集的抽象函数接口, 可以通过继承的方式定义具体参数类型和结果集类型, 并且具体实现这两个函数。

5、结语

实践证明, 基于开发框架的应用开发模式和传统的开发模式相比, 在系统开发前期不需要投入较多精力进行系统框架的搭建, 只需要建立开发框架所需要的运行环境, 搭建好开发平台, 就可以在此基础上快速开发应用程序, 能很大程度上缩短项目开发周期。

摘要:Microsoft.NET是基于互联网的全新架构, 利用其提供的ASP.NET、ADO.NET和XML等组件, 以及Web服务, 开发基于.NET框架的应用系统。实践证明, 使用.NET框架可使应用程序的开发、部署及与其他网络系统集成变得更容易, 并可提高软件稳定性和安全性。

关键词:.NET框架,ASP.NET,ADO.NET

参考文献

[1]金正淑, 闰文耀, 陈亚军, 等.基于.NET技术的网上办公模型研究[J].计算机工程, 2010, 32 (12) :263-265.

《语言程序设计》学习总结与心得 篇7

其实说实话在学这门课之前自己对汇编语言一点都不了解,只知道它也是一种语言,而且是一门很少用的语言,可能很多人都是这么想的,或许在学这门课之前不少同学也有和我当初一样的思想,大概学学就好,反正以后很少能用到,毕竟现在高级语言这么发达,而且运用起来灵活易懂,像汇编这种低级语言又难又不易学。或许老师是知道我们之前有这种想法,所以第一节课就跟我们讲解了一下了汇编语言在当今这种高速发展的社会的作用和地位,让我们能够正确的认识汇编语言的精华,正确对待这么课。而且还在课堂了百度了汇编语言的招聘信息,或许这才是使我们正确对待汇编的最直接的原因,关系到我们以后的出路,或许我们学好了一门汇编,以后出去找工作的机会不就更广了吗?正是在这种动力的驱使下我才对汇编语言有了一个新的认识,而且决定要把它学好。

在后来的学习中我发现其实汇编不是很难学,其实学汇编就像学其他的高级语言一样,高级语言要求对语言非常了解。在学汇编的过程中,我们最重要的就是要掌握汇编语言中的指令的一些基本用法。当然要能够真正的了解其中的内涵,这样我们在实际的编程中也能够像运用高级语言一样灵活的变通。汇编语言作为一种低级程序设计语言,既然是低级所以应该是最底层的,与我们计算机内部的结构联系应该联系很密切,而且在我们学习中也深刻的了解到了这一点。比如说后来学到的寄存器、中断、还要各种寻址方式以及进栈出栈,好多的就是设计到计算机硬件。前面几章都是对计算机内部结构和一些常用的指令以及寻址方式的寻址方式。到后面学到子程序以及宏的作用才真正发现到其实跟高级语言差别不大。以C语言为例,C语言不也是由一个一个的函数组成的吗?没想到想汇编这样的低级语言也可以这样。在汇编语言的子程序和宏中,我个人更感觉宏的运用更像我们高级语言的子函数,通过定义好的宏,我们在后面直接调用就可以了。尤其是宏带参数的宏跟C语言中带参数的函数真的很像,根据参数的不同调用宏就能得到不同的结果。而汇编中的子程序没有这个传递参数这个功能。在调用子程序的时候要注意各寄存器中的内容。子程序是在程序执行期间由主程序调用的,它只占有它自身大小的一个空间,他不仅是源程序级别 简化,形成的目标代码较短;而宏调用则是在汇编期间展开的,每调用依次进把宏定义体展开一次,它是源程序级的简化。因而它占有的存储空间与调用次数有关,调用次数越多则占有的存储空间越大。如果宏调用次数较多的话,则其空间上的开销也是应该考虑的因素

汇编程序给人感觉最烦的就是好多程序的结果不能直接通过运行EXE文件显示出来,而更多的是经过DEBUG单步调试才能看到其内在变化,看是否正确。在初次接触汇编的几个汇编工具时,有一种神奇的感觉,因为汇编程序不像其他的高级语言一样需要编译器,而是直接的就能在记事本上编写,然后进行汇编和

连接就可以了。学习汇编调试,关键就是要掌握DEBUG的运用。我们在实际的调试中,最常用的几个命令有:D:显示内存单元的内容。T:单步执行。G:连续单步执行。G:连续单步执行。我们编程也只用过这几个。说到这个DUBUG我就不得不说我之前有一次的经历了。我在最后一次的上级实验的编程中我用到的是AX这种寄存器,我按照我自己的程序认真走了好几遍,找不到一点错误,但程序运行就是不对,我为此郁闷了好久。后来只有一步一步的单步调试。由于是最后一个综合实验,实验比较长,我就一直盯着AX内容的变化,经过我的苦苦等候才找到了错误,就是在DOS功能运用的时候出现了错误。也就是执行下面这条指令Mov ah 02h,int 21h,其实这两条指令中里面还包含好多的微指令,不自己亲自调试一下根本就发现不了问题。正是因为这些微指令对AX寄存器的影响所以才导致了我的错误。于是我就感觉学好汇编步进要把指令学好,还要把DEBUG学好,这样才能少走好多弯路。

《.NET程序开发》心得总结 篇8

1:[Test,Category(“Normal”)]

2:publicvoidTestAdd()

3:{

4:Calculator cal =newCalculator();

5:Assert.IsNotNull(cal);

6:intexpectedResult = 5;

7:intactualResult = cal.Add(a,b);

8:Assert.AreEqual(expectedResult, actualResult);

9:}

10:

11:[Test, Category(“Normal”)]

12:publicvoidTestMul()

13:{

14:Calculator cal =newCalculator();

15:Assert.IsNotNull(cal);

16:intexpectedResult = 6;

17:intactualResult = cal.Mul(a, b);

18:Assert.AreEqual(expectedResult, actualResult);

19:}

20:

21:[Test,Category(“Long”),ExpectedException(typeof(NullReferenceException))]

22:publicvoidTestSub()

23:{

24:Calculator cal =newCalculator();

25:Assert.IsNotNull(cal);

26:intexpectedResult = -1;

27:intactualResult = cal.Sub(a, b);

28:Assert.AreEqual(expectedResult, actualResult);

29:}

我们可以把一组执行较长时间的测试函数放在一组中,然后有选择的执行,如下图所示:

★ 浅析.NET开发中代理模式的使用.net

★ 常用的Linux网络安全工具简介Windows系统

★ net实习周记

★ .net软件工程师简历范文

★ 浅析.Net下的多线程编程.net

★ 信息和信息处理工具

★ 音乐欣赏常识工具大

★ 免费发短信工具大荟萃

★ 课件制作工具

.NET应用程序安装部署及更新 篇9

关键词:.NET应用程序,安装部署,更新

曾几何时, C/S系统在与B/S系统的竞争中败下阵来, 其中一个重要原因就是其安装、部署和更新都不太方便, 需要用户的一些参与甚至需要用户对计算机有较深入了解, 这显然对用户要求过高了, 而B/S系统中, 用户只需在浏览器中输入一个Wed地址就可使用最新的Web应用, 无疑具有巨大优势。然而时过境迁, .NET应用程序的安装、部署及更新随着Visual Studio的更新换代变得越来越简洁, 不过其中还是有一些值得注意的地方, 下面结合自己的经验予以详细说明。

1 安装部署

Visual Studio 2005已经提供了建立安装包的模板, 利用此模板可以方便地制作出一个标准的Windows安装程序, 如果不需要太多自定义的功能的话, 并不需要写任何代码, 只需在VS IDE中设置一些参数即可。在IDE中新建一个安装项目后 (图1所示) , 可以得到如下界面 (如图2所示) , 可以看到IDE自动准备好了最重要的安装目标, 应用程序文件夹 (X:Program Files) 、开始菜单、桌面, 其中应用程序文件夹是存放要部署的目标应用程序本身 (通常是*.exe) , 而开始菜单和桌面位置是存放要部署的应用程序的快捷方式的位置。设置这些内容都很直观, 只要拖动鼠标进行操作即可。这里值得一提的是属性设置中的Permanent一项, 此设置默认为False, 该项的含义是卸载应用程序时是否将文件删除, 如果希望在卸载应用程序时保留该文件, 请将此属性设置为True。另外在使用此模板时发现, 如果应用程序文件夹中间带有空格或有多极目录, 可能造成卸载过程中无法清楚目标程序的情况, 这是否是一个Bug, 请读者使用时自行验证并注意。

安装和部署过程中最关键的一个问题是程序集依赖问题, .NET应用程序推广中目前遇到最大的障碍之一无疑是用户计算机上没有.NET Runtime, 即.NET framework组件, 安装程序必须能自动识别用户计算机上的配置并能自动完成.NET Runtime的安装, 好在这一问题在VS 2005中已完美解决, 安装模板将自动识别出程序集依赖的组件 (包括每个.NET应用都必包括的.net framework) , 并自动打包集成到安装文件中, 当Build安装项目时, .NET framework被打包到dotnetfx目录下, 但是, 如果直接将包含此目录的安装包完全发送给每一个安装者, 可能面临一个问题, 那就是安装包过于庞大, 不便于分发, 另外, 部分用户可能已经装有.NET framework, 下载此巨大安装包无疑是一种浪费。如果是在单位的局域网环境下, 笔者认为最佳解决方案是将.NET framework包放在服务器上, 让确实需要的用户远程下载来安装, 要做到这一点, IDE已经提供了简便的方法, 打开项目属性页, 点击系统必备按钮, 得到图3界面, 选择其中的“从下列位置下载”, 并输入服务器的地址即可。使用IIS架设服务器, 限于篇幅, 这里不详细讨论如何安装配置IIS, 读者可参考其他资料, 需要注意的是, 架设网站后, 网站根目录下要建立dotnetfx目录并将生成在本地的dotnetfx目录里的所有文件上传到服务器上的目录里。目录名必须使用dotnetfx, 否则远程下载时会出错。至此, 可以使用Build命令打包出安装文件, 安装文件包括setup.exe、一个msi文件和dotnetfx目录 (如果还有其他依赖项, 可能还有其他内容) , 注意, 真正安装应用程序的文件是msi文件, 但用户应该使用setup.exe来启动安装程序, 因为setup.exe会检测目标计算机的配置并正确引导用户先安装依赖组件, 然后再启动真正的msi安装文件, 至于dotnetfx目录不必分发给用户, 因为此组件会通过刚才配置的远程服务器来下载安装。

2 更新

一个应用程序在其生命周期内, 更新是必不可少的, 也许是功能扩展, 也许是漏洞修补, 即使是一个小型应用, 也难免需要更新。更新应用时当然可以再次发放安装包, 并通知所有用户来重新安装, 但如果能做到用户使用应用程序时自动更新无疑是最佳方案。Visual Studio 2005提供了一种叫做ClickOnce的部署策略, 这种最新的部署方式有别于上述制作安装包的方法, 顾名思义, 这种方式的终极目标是更新过程只须Click Once, 但是此种方法对更新的自定义控制较弱, 例如需要向用户提示一下更新的内容等较难实现。笔者在此介绍通过简单编程, 自行设计一种可复用的更新方式。

首先仍然要准备好一个服务器, 完全可利用刚才提到的存放.NET framework的服务器, 在该网站上以应用程序的名字建立一个目录, 假设为ISOAlert, 在该目录下存放appver.txt, update.lst, 及更新的程序文件。其中appver.txt里存放如下内容:

x.y.z.v是新的版本号, 更新信息是提示用户的关于更新的内容。

update.lst文件存放下列内容:

filename1, filename2就是更新的程序文件的具体名字。在网站的根目录下存放一个程序文件updateapp.exe (下文具体说明此程序的设计) , 用于更新应用程序, 由于此程序文件可复用于多个不同的应用, 因此将其存放于网站根目录以便供所有应用程序使用。

接着在要更新的应用程序中插入自动更新的代码, 其基本思路是, 每次应用程序启动时首先读取appver.txt文件, 将版本号读入, 与自身版本号比较, 如果自身版本号已低于服务器上的版本号, 则将更新信息显示给用户, 并下载updateapp.exe到本地, 启动此exe, 并关闭自身以便updateapp.exe更新。下面给出一些示例代码:

注意, .NET程序有4个版本号, 判定时依次将其转换为数字来比较, 这里有一个问题, 例如1.2与1.21之间的判定可能有歧义, 读者可根据实际自己写新的判定函数。Update函数及updateapp, exe的调用都需要一个AppName的参数, 此参数即为要更新的应用的名字, 通过不同的参数传入, 可实现复用。

最后说明updateapp的设计思路, 此程序首先下载update.lst文件, 将其中包含的每行字符串作为文件名使用, 将所有文件下载覆盖到本地以完成更新操作。更新完成后, 利用传入的参数作为启动命令行来重起应用程序以给用户程序自动更新并重启的感觉。以下是示例代码:

为了提高复用程度, 上面代码里进行了一个特殊处理, 即如果在update.lst文件里的文件名后加上一个冒号, 则意味着此文件在下载到本地后将被运行, 这主要是考虑到有时更新操作不仅仅是文件的简单覆盖, 还需要注册表处理、数据库处理等高级操作, 可以通过自定义更高级的程序来传递给用户后运行程序来处理。

3 结语

上一篇:浅谈民间美术在中小学课堂中的应用下一篇:对副镇长评议报告