摘要:
做一个WEB程序,能够在尽量修改极少程序代码的情况下,轻松制定皮肤以及切换皮肤,应该都是需要的,谁也不想,在网站界面想要改版的时候,要改一大片逻辑代码。 一个合格的皮肤机制体系的实现,应该要做到以下几点: ->页面模板上要极少拥有逻辑代码(如果模板上拥有大量逻辑代码,那估计这个也不叫作模板了)。
->能够轻松改变页面布局,同时不影响程序代码(.cs)。
->新模板的定制,基本上能由皮肤制作者参照旧模板自行完成,不需要开发人员太多介入。
->保持性能。 然后,来看看,都有哪些方法大家用来实现所谓的皮肤机制,同时进行各个方法的一些个人说明。 1.改变页面调用的CSS文件来. 阅读全文
随笔分类 - [01].NET技术
一起谈.NET技术,ASP.NET MVC 3 Beta初体验之WebGrid
2011-09-01 23:46 by 狼人:-), 173 阅读, 收藏,
摘要:
ASP.NET MVC 3 Beta中除了推出一种新的视图引擎Razor。还推出了几种新的HtmlHelper。我比较关注的是WebGrid,这篇文章将介绍一下WebGrid的使用。WebGrid提供了分页和排序的功能,在此之前在MVC中分页和排序时需要自己去写的。这篇文章将分别介绍在aspx视图引擎和Razor视图引擎中如何使用它。 我通过ADO.NET Entity Data Model从NORTHWND的Products中表中取数据。在Controller中取数据: Code highlighting produced by Actipro CodeHighlighter (f... 阅读全文
一起谈.NET技术,ASP.NET MVC 3 Beta初体验之实用的WebMail
2011-09-01 23:46 by 狼人:-), 165 阅读, 收藏,
摘要:
Asp.net MVC3 Beta中提供了非常实用发送邮件的组件:WebMail。我试用了一下,和System.Web.Mail类似。这篇文章将简单介绍一下这个组件的使用。通过分成不带附件的邮件发送和带附件的邮件发送两种情况进行讲解。用一个请求帮助的应用场景为例。 不带附件的邮件发送 首先定义Controller。EmailRequest用于请求一个发送邮件的页面,ProcessRequest用去处理发送邮件的请求,并在View中发送邮件。
代码 Code highlighting produced by Actipro CodeHighlighter (freeware)htt... 阅读全文
一起谈.NET技术,WCF+WF双剑合璧构建微软的SOA系列(一):从一个简单的Demo开始
2011-09-01 23:46 by 狼人:-), 182 阅读, 收藏,
摘要:
本系列文章将从实例出发,以实例结尾。由浅入深讲解在我们项目中如何使用WCF和WF。我们会发现使用WCF+WF将造就出其他技术无法达到的高度。最后我会将程序架到云端。 微软.net的3W(WPF、WCF、WF)战略如下图。WCF负责通信,WPF负责界面展示,WF负责处理业务逻辑,如下图。 本系列文章会主要用到上图中的所有技术,但是主要讲述如何使用WCF和WF来实现系统的中间层。看过亮剑的朋友知道李云龙常打胜仗,并不是他懂得很多很多的战争的理论知识,而是来自实战中的经验。所以本系列的文章以实战为核心,在实战中出理论,不循规蹈矩,我将把自己的实力拿出来,亮出自己的宝剑。 本系列文章... 阅读全文
一起谈.NET技术,ASP.NET MVC 3 Beta初体验之超酷的Chart:3D效果
2011-09-01 23:46 by 狼人:-), 247 阅读, 收藏,
摘要:
在前一篇文章:ASP.NET MVC 3 Beta初体验之超酷的Chart中介绍了Chart的使用,但是没有介绍到3D效果。这篇文章将介绍一下Chart的3D效果的展示。声明一点的是:这个Chart控件可能没有一些开源或者不开源,收费或者不收费的组件那般强大,我相信未来这个控件会越来越强大的。废话不多说了,看下如何展示Chart的3D效果。 显示3D的效果,微软给了我们两种解决方案。一种是使用他自带的样式,一种是自己配置一个显示样式的XML。 第一种使用自带的样式:很简单,在上一篇文章中其实有提到过,我们将模版改成ChartTheme.Vanilla3D。代码如下:
代码 Cod... 阅读全文
一起谈.NET技术,ASP.NET应用下基于SessionState的“状态编程框架”解决方案
2011-09-01 23:46 by 狼人:-), 151 阅读, 收藏,
摘要:
在一个基于ASP.NET的Web应用程序中,我们通常使用SessionState保存基于某个客户端的状态信息。但是这种单纯使用SessionState的编程方式具有很多局限,比如Session Item的Key值冲突,比如没有一个有效的SessionState清除机制会为Web Server带来内存压力。为了实现对客户端状态的有效管理,并提高应用开发效率,在很多年前我们的开发框架体系中就具有相应的一个叫做State的编程框架。最近我开始对其进行升级和重新设计,将实现原理和概要设计方面的东西写出来与大家共享,希望对各位有些启发。同时希望借此得到你们一些好的建议和意见,以便能够充实我们的框架。.. 阅读全文
一起谈.NET技术,关于Silverlight战略转移新闻,我的思考
2011-09-01 23:46 by 狼人:-), 170 阅读, 收藏,
摘要:
在说正题之前先来两段小八卦。 Silverlight的老用户可能会知道,在微软发布该产品之初曾经推出一个名为Silverlight Streaming Service的免费服务,允许开发人员在上面Host自己的Silverlight应用程序和相关的媒体资源。推出此服务的目的当然意在吸引开发者对Silverlight技术的兴趣,我就曾经在上面放过两个小程序。但是大约在一年前,微软悄无声息的取消了该服务,据说是为了让位于Azure平台。实际上这已经可以看作一个微弱的信号,表明微软的战略确实有转变的倾向,而且这个倾向早在一年前就开始了。 另一个消息就比较近了。有位开发者进入微软,并且目睹... 阅读全文
一起谈.NET技术,一种简单的直观的高效的权限设计
2011-09-01 23:46 by 狼人:-), 193 阅读, 收藏,
摘要:
大部分系统都有权限系统。一般来说,它能管控人员对某个否页面的访问;对某些字段、控件可见或者不可见。对gridview中的数据是否可删除、可添加、可新增等等。大部分人都把权限作为一个子系统独立出来。但是这里我不是想设计一个权限管理系统,网上的设计方案太多了,可以说每个开发人员都有自己的开发权限管理系统的想法和思路。 在这篇文章中,我先用简单的C#代码模仿一个用户的权限,再使用sql去模拟。这是一种很简单,很直观,很高效的方式去判定用户的权限。
C#: 好吧,先从最简单开始,定义一个用户(User)类,如下。 Code highlighting produced by Actipro... 阅读全文
一起谈.NET技术,【More Effective C#】Lambda表达式优化
2011-09-01 23:46 by 狼人:-), 171 阅读, 收藏,
摘要:
使用Lambda表达式将会造成Lambda表达式主题部分的代码重复. Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1. var allEmployees = new List<Employee>() { 2. new Employee { 3. EmployeeId = 1, Classification = 1, FirstName = "Skin", LastName = "Sen" 阅读全文
一起谈.NET技术,创建代码生成器可以很简单:如何通过T4模板生成代码?[上篇]
2011-09-01 23:46 by 狼人:-), 388 阅读, 收藏,
摘要:
在《基于T4的代码生成方式》中,我对T4模板的组成结构、语法,以及T4引擎的工作原理进行了大体的介绍,并且编写了一个T4模板实现了如何将一个XML转变成C#代码。为了让由此需求的读者对T4有更深的了解,我们通过T4来做一些更加实际的事情——SQL Generator。在这里,我们可以通过SQL Generator为某个数据表自动生成进行插入、修改和删除的存储过程。[文中源代码从这里下载] 一、代码生成器的最终使用效果 我们首先来看看通过直接适用我们基于T4的SQL生成模板达到的效果。右图(点击看大图)是VS2010的Solution Explorer,在Script目录下面,我定义... 阅读全文
一起谈.NET技术,创建代码生成器可以很简单:如何通过T4模板生成代码?[下篇]
2011-09-01 23:46 by 狼人:-), 248 阅读, 收藏,
摘要:
在《上篇》中我们通过T4模板为我们指定的数据表成功生成了我们需要的用于添加、修改和删除操作的存储过程。但是这是一种基于单个文件的解决方案,即我们必须为每一个生成的存储过程建立一个模板。如果我们提供一种基于多文件的代码生成方式,将会为编程人员带来极大的便利。借助于T4 ToolBox这个开源工具箱,多文件的SQL Generator的实现变得异常简单。 一、多文件代码生成器会带来多大的便利? 我们先来直观的感受一下较之《上篇》提供的单一文件的代码生成器,基于多文件的代码生成解决方案会为开发人员带来多大的便利。 同样对于《上篇》创建的数据表T_PRODUCT,之前我们为了生成三个不同的... 阅读全文
一起谈.NET技术,关于ASP.NET与CLR相互关系的一些总结
2011-09-01 23:46 by 狼人:-), 197 阅读, 收藏,
摘要:
CLR(COM服务器) CLR作为一个COM服务器实现在MSCorWks.dll文件中。安装.NET Framework时,表示CLR的COM服务器被注册到Windows的注册表里。 MSCorEE.dll(垫片) MSCorEE.dll的职责是判断创建何种版本的CLR。非托管应用程序宿主调用MSCorEE.dll(shim)中CorBindToRuntimeEx函数或者另一个相似的函数来创建CLR COM的实例。 一台机器可以安装多个版本的CLR,但在机器中只有一个版本的MSCorEE.dll文件。以上两者之间的关系如下代码所示(c++):MSCorEE.dll(垫片)... 阅读全文
一起谈.NET技术,Web Services使用多态(XmlInclude)
2011-09-01 23:46 by 狼人:-), 210 阅读, 收藏,
摘要:
在Web Services方法中,往往使用的都是一个具体类型的参数,这个参数一般就是一个数据对象。ASP.NET Web Services通过声明XmlIncludeAttribute可以实现Web Services方法中运用多态。 XmlIncludeAttribute允许XmlSerializer在序列化火反序列化对象时识别类型。当应用XmlIncludeAttribute时,需指定派生类的Type。XmlSerializer序列化同时包含基类和派生类的对象之后,它就可以识别两种对象类型。 首先定义基类Vehicle和派生类Car: Code highlighting pro... 阅读全文
一起谈.NET技术,Smart Client技术简要总结
2011-09-01 23:46 by 狼人:-), 437 阅读, 收藏,
摘要:
1.Smart Client简介 Smart Client简称智能客户端,是Microsoft推出的一种将B/S(瘦客户端)和C/S(胖客户端)结合在一起的一种技术。Smart Client结合了B/S和C/S的优势,具有新的特点。 Smart Client的优点 易于升级 类似于B/S架构的程序,只要在服务器上更新软件,进行简单配置,客户端会自动进行软件的更新。比如在服务器的站点上建立一个虚拟目录,将客户端应用程序发布到该虚拟目录中,客户通过HTTP方式安装更新程序。 富客户端,强大的用户界面,更好的用户体验 Smart Client可以使用WinForm开发Cl... 阅读全文
一起谈.NET技术,ASP.NET页面间数据传递的方法
2011-09-01 23:46 by 狼人:-), 194 阅读, 收藏,
摘要:
00、引言 Web页面是无状态的, 服务器对每一次请求都认为来自不同用户,因此,变量的状态在连续对同一页面的多次请求之间或在页面跳转时不会被保留。在用ASP.NET 设计开发一个Web系统时, 遇到一个重要的问题是如何保证数据在页面间进行正确、安全和高效地传送,Asp.net 提供了状态管理等多种技术来解决保存和传递数据问题,以下来探讨.NET 下的解决此问题的各种方法和各自的适用场合。 1、ASP.NET页面间数据传递的各种方法和分析 1.1 使用Querystring 方法 QueryString 也叫查询字符串, 这种方法将要传递的数据附加在网页地址(URL)后面进... 阅读全文
一起谈.NET技术,C#序列化与反序列化(Serializable and Deserialize)
2011-09-01 23:46 by 狼人:-), 216 阅读, 收藏,
摘要:
序列化是指将对象实例的状态存储到存储媒体的过程。在此过程中,先将对象的公共字段和私有字段以及类的名称(包括类所在的程序集)转换为字节流,然后再把字节流写入数据流。在随后对对象进行反序列化时,将创建出与原对象完全相同的副本。 我们经常需要将对象的字段值保存到磁盘中,并在以后检索此数据。尽管不使用序列化也能完成这项工作,但这种方法通常很繁琐而且容易出错,并且在需要跟踪对象的层次结构时,会变得越来越复杂。可以想象一下编写包含大量对象的大型业务应用程序的情形,程序员不得不为每一个对象编写代码,以便将字段和属性保存至磁盘以及从磁盘还原这些字段和属性。序列化提供了轻松实现这个目标的快捷方法。 .... 阅读全文
一起谈.NET技术,ASP.NET前台代码绑定后台变量方法总结
2011-09-01 23:46 by 狼人:-), 219 阅读, 收藏,
摘要:
经常会碰到在前台代码中要使用(或绑定)后台代码中变量值的问题。一般有<%= str%>和<%# str %>两种方式,这里简单总结一下。如有错误或异议之处,敬请各位指教。 一方面,这里所讲的前台即通常的.aspx文件,后台指的是与aspx相关联的CodeBehind,文件后缀名为.aspx.cs;另一方面,这里的绑定是指用户发出访问某一页面指令后,服务器端在执行过程中就已经将前台代码进行了赋值,而后生成html格式回传客户端显示,而并非已经显示到客户端后,然后通过其他方法(如ajax)去服务器端获取相应变量。 备注:上面说的两个文件是常见的代码隐藏(code-behin 阅读全文
一起谈.NET技术,NET 下RabbitMQ实践 [实战篇]
2011-09-01 23:46 by 狼人:-), 300 阅读, 收藏,
摘要:
之前的文章中,介绍了如何将RabbitMQ以WCF方式进行发布。今天就介绍一下我们产品中如何使用RabbitMQ的! 在Discuz!NT企业版中,提供了对HTTP错误日志的记录功能,这一点对企业版非常重要,另外存储错误日志使用了MongoDB,理由很简单,MongoDB的添加操作飞快,即使数量过亿之后插入速度依旧不减。 在开始正文之前,先说明一下本文的代码分析顺序,即:程序入口==》RabbitMQ客户端===>RabbitMQ服务端。好了,闲话少说,开始正文! 首先是程序入口,也就是WCF+RabbitMQ客户端实现:因为Discuz!NT使用了HttpModule方式来接管... 阅读全文
一起谈.NET技术,NET下RabbitMQ实践 [配置篇]
2011-09-01 23:46 by 狼人:-), 262 阅读, 收藏,
摘要:
这个系列目前计划写四篇,分别是配置,示例,WCF发布,实战。当然不排除加餐情况。 介绍: rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统。他遵循Mozilla Public License开源协议。采用 Erlang 实现的工业级的消息队列(MQ)服务器。 RabbitMQ的官方站:http://www.rabbitmq.com/ AMQP(高级消息队列协议) 是一个异步消息传递所使用的应用层协议规范,作为线路层协议,而不是API(例如JMS),AMQP 客户端能够无视消息的来源任意发送和接受信息。AMQP的原始用途只是为金融界提供一个可以彼此协作的消息... 阅读全文
一起谈.NET技术,为Expression Web 4 添加HTML5 标签支持
2011-09-01 23:46 by 狼人:-), 280 阅读, 收藏,
摘要:
大家都知道Expression Web 4 是用来编写网页脚本的一款软件,包含的语言类型涉及:HTML、ASP、PHP、CSS,但它并不支持HTML5。如下图所示,在HTML5 中的<canvas> 标签并不能获得智能感应,这样在开发过程中会变得很麻烦。本篇将介绍如何为其添加HTML5 标签支持。首先需要下载HTML5 模板插件,将得到一个名叫“HTML5Schema.xadd” 的文件。 安装HTML 5 Schema 在“Tools”菜单中选择“Add-Ins...”增加插件选项。 在“Manage Add-ins” 窗口点击“Install...” 按键,并选择刚才下... 阅读全文
浙公网安备 33010602011771号