当前位置: 首页 > news >正文

『Asp.Net 组件』Asp.Net 服务器组件 的开发优势和劣势

在写《Asp.Net服务器组件系列文档》之前,笔者不才,揣测微软战略用意:

  • 微软利益诉求莫过于 微软产品和技术的市场份额;
  • 因此,微软战略之一莫过于将 所有开发人员 团聚在 微软周围,以推动微软技术更新,微软系统的推广;
  • 因此,就有了 简化编程(比如C#的诞生),网罗开发人员(跨语言的.Net平台)等相关举动;
  • 而 微软的“所见即所得”(VS开发工具中WinForm,Asp.Net,Silverlight等 都支持这里理念)编程理念,则将开发人员的门槛降低了不少;
  • 简而言之:微软的技术取向上:让开发人员简单编程才是第一位,微软技术的执行性能可能才只是第二位或更往后;

项目开发中,技术选择的矛盾:

一家公司,同一个业务功能:

  • 让一个四年工作经验的人写100行代码;
  • 或者让一个应届毕业生 基于某个技术,写2行代码(但是性能只有前者的80%);

问,这家公司将作何选择?

前者:

  • 性能很快,代码流畅整洁;
  • 项目测试或交付,发现BUG,100行代码内阅读代码,修改代码;
  • 人力有限,修复BUG可能交给一些能力相对差点的人,于是 可能代码风格不一致,技术能力不一致,修复BUG时,又带入新的BUG;
  • 类似的BUG也要修改,实际修改代码行数 取决于 这100行代码如何复用;
  • 最终可能出现:代码增加到150行,修改BUG之后,性能降低,可能引入新的BUG;

后者:

  • 性能只有前者80%,代码流畅简洁;
  • 项目测试或交付,发现BUG,2行代码内阅读代码,修改代码;
  • 人力有限,另选一个应届毕业生修改,依然2行代码,顶多5行;
  • 类似的BUG,搜索一下 相关技术关键字,修改5*N行代码;如果是技术BUG,只用修改技术代码;
  • 最终可能出现:代码增加致5行,性能还是那个性能,很难引入新的致命BUG——代码少,BUG就少;

做过大项目的人或许都体验过 被人追着 改BUG的情景:

情况紧急 或者 能力不足,保不准就 先贴个狗皮膏药应付BUG;

等到想起 要将狗皮膏药修改成正规代码时,自己又忙的不可开支,没时间改——只要不报错,管他代码是否规范;

因此,我也看到过某些项目完成的时候代码很漂亮,但是最后测试或交付之后,代码就惨不忍睹了。

本文当适合人群,不适合人群请自觉绕行:

  • 如果你在 上面的公司技术的选择中,选择了前者, 本系列文档 不适合你。
  • 如果你 在项目中,排斥反射机制 等技术,是一个 性能挑剔派,本系列文档 不适合你。

Asp.Net服务器组件的 优缺点:

优点:

  • 开发者门槛低;
  • VS中,所见即所得,不得就直接报错,扼杀错误于摇篮;
  • 技术封装;

缺点:

  • 性能损失20%-50%;
  • 技术BUG将导致批量错误;

当然,欢迎补充….

至此,让我们开始Asp.Net服务器组件的编程之旅吧…..

相关系列文章链接:

  • 『Asp.Net 组件』Asp.Net 服务器组件 的开发优势和劣势
  • 『Asp.Net 组件』第一个 Asp.Net 服务器组件:自己的文本框控件
  • 『Asp.Net 组件』Asp.Net 服务器组件 内嵌图片:自己的图片控件
  • 『Asp.Net 组件』Asp.Net 服务器组件 内嵌CSS:将CSS封装到程序集中
  • 『Asp.Net 组件』Asp.Net 服务器组件 内嵌JS:让自己的控件动起来
  • 『Asp.Net 组件』Demo源码在线阅读

相关文章:

  • Linux系统中的文件目录介绍——Linux system files in the directory structure is introduced
  • 『开源』字符串匹配引擎
  • java 新 IO 的运用
  • 『开源』源码在线阅读工具
  • 视频编解码学习:理论基础
  • 每天一道算法_4_Hangover
  • 一初探js特效魅力之鼠标悬浮事件01
  • linux系统的组成——The composition of the Linux system
  • snprintf与printf
  • 一初探js特效魅力之div显示隐藏变色02
  • 帮豆包刷“天天爱消除”,“天天连萌”
  • 『开源』一个简单的 字符串计算 算法开源
  • 一初探js特效魅力之函数传参03
  • 每天一道算法_5_Financial Management
  • Android生命周期
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • android图片蒙层
  • Angular 响应式表单之下拉框
  • C学习-枚举(九)
  • es6(二):字符串的扩展
  • Golang-长连接-状态推送
  • IDEA常用插件整理
  • input的行数自动增减
  • Java Agent 学习笔记
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • Java比较器对数组,集合排序
  • Java面向对象及其三大特征
  • JWT究竟是什么呢?
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • Next.js之基础概念(二)
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • php中curl和soap方式请求服务超时问题
  • Webpack 4 学习01(基础配置)
  • 初探 Vue 生命周期和钩子函数
  • 普通函数和构造函数的区别
  • 前端面试之CSS3新特性
  • 入手阿里云新服务器的部署NODE
  • 线性表及其算法(java实现)
  • 学习HTTP相关知识笔记
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • ​【已解决】npm install​卡主不动的情况
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (九)信息融合方式简介
  • (三)mysql_MYSQL(三)
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (转)为C# Windows服务添加安装程序
  • .NET 5种线程安全集合
  • .Net CF下精确的计时器
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .net中的Queue和Stack