『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源码在线阅读
『Asp.Net 组件』Asp.Net 服务器组件 的开发优势和劣势的更多相关文章
- 『Asp.Net 组件』Asp.Net 服务器组件 内嵌JS:让自己的控件动起来
代码: using System; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace ...
- 『Asp.Net 组件』Asp.Net 服务器组件 内嵌图片:自己的图片控件
代码: using System; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace ...
- 『Asp.Net 组件』Asp.Net 服务器组件 内嵌CSS:将CSS封装到程序集中
代码: <span style="font-family:Microsoft YaHei; font-size:12px">using System; using Sy ...
- 『无为则无心』Python基础 — 5、Python开发工具的安装与使用
目录 1.Pycharm下载 2.Pycharm安装 3.PyCharm界面介绍 4.基本使用 (1)新建Python项目 (2)编写Python代码 (3)执行代码查看结果 (4)设置PyCharm ...
- 『Asp.Net 组件』第一个 Asp.Net 服务器组件:自己的文本框控件
代码: using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace DemoWebControl ...
- Tomcat中的服务器组件和 服务组件
开始学习Tocmat时,都是学习如何通过实例化一个连接器 和 容器 来获得一个Servlet容器,并将连接器 和 servlet容器相互关联,但是之前学习的都只有一个连接器可以使用,该连接器服务80 ...
- MySQL 8 服务器组件
MySQL 服务器包含了一个基于组件的架构,用于扩展服务器功能.服务器和其他组件可以使用组件提供的服务.(在使用服务方面,服务器也是一个组件,等同于其他组件).组件之间交互仅通过他们各自提供的服务. ...
- asp.net core 系列 18 web服务器实现
一. ASP.NET Core Module 在介绍ASP.NET Core Web实现之前,先来了解下ASP.NET Core Module.该模块是插入 IIS 管道的本机 IIS 模块(本机是指 ...
- ASP.NET 3.5控件和组件开发技术之客户端回发/回调揭密
本文摘录自<纵向切入ASP.NET 3.5控件和组件开发技术>. 对于服务端控件元素,比如ASP.NET的Button标准服务端控件在提交时可以自动把请求发送到服务端处理,这样的控件我们不 ...
随机推荐
- 【ORM框架】Spring Data JPA(一)-- 入门
本文参考:spring Data JPA入门 [原创]纯干货,Spring-data-jpa详解,全方位介绍 Spring Data JPA系列教程--入门 一.Spring Data JPA介 ...
- SetParameter错误:java.time.Instant cannot be resolved
SetParameter Hibernate使用SetParameter错误 List<Customer> list = session.createQuery(hql).setParam ...
- 基础java中的package的命名规则和import的使用
包的命名一般用公司域名但是注意域名后辍要放前面如下 package com.cnblogs.i.Cat//对应地址是com/cnblos/i/cat.class也就是Cat.class的地址 如果想将 ...
- connector for python实验
MySQL 是最流行的关系型数据库管理系统,如果你不熟悉 MySQL,可以阅读 MySQL 教程. 下面为大家介绍使用 mysql-connector 来连接使用 MySQL, mysql-conne ...
- C# 对串口的操作
初始化 串口 SerialPort sp = new SerialPort(); sp.PortName = BasicParameters.IniReadValue(strPath, "C ...
- ElasticSearch(6.2.2)的java API官方文档的总结 (三)
一 : SearchRequest用于任何与搜索文档,聚合和建议有关的操作,并且还提供了对生成的文档进行高亮显示的方法. 在最基本的形式中,我们可以向请求添加一个查询: 1:添加一个Search ...
- class A<T> where T:new()
class A<T> where T:new() 这是类型参数约束,where表明了对类型变量T的约束关系.where T:A 表示类型变量是继承于A的,或者是A本身.where T: n ...
- 关于H5页面的测试总结与分析
一.时下最流行的H5到底是什么 ?有什么优势和劣势? (1)H5 即HTML5,其实就是:移动端Web页面. (2)优势: H5可以跨平台使用,开发成本相对较低 H5可随时上线就更新版本,适合快速迭代 ...
- Android程序员必知必会的网络通信传输层协议——UDP和TCP
1.点评 互联网发展至今已经高度发达,而对于互联网应用(尤其即时通讯技术这一块)的开发者来说,网络编程是基础中的基础,只有更好地理解相关基础知识,对于应用层的开发才能做到游刃有余. 对于Android ...
- FFmpeg 学习(六):FFmpeg 核心模块 libavformat 与 libavcodec 分析
一.libavformat介绍 libavformat的主要组成与层次调用关系如下图: AVFromatContext是API层直接接触到的结构体,它会进行格式的封装和解封装,它的数据部分由底层提供, ...