摘要:
对于.net socket的性能问题,似乎MS也没有象WCF一样出个详细的报告,在很多人的使用情况来看性能方面并不理想。如果你比较关注这方面的东西,那这个测试的报告应该可以给你帮助对.net socket性能方面有个更多的了解。如果你担心.net socket的性能是否满足游戏服务端或应用网关的需要,以下测试结果相信也可以给到你一个明确的答案。测试简述为了更接近实际应用情况,测试流程 主要如下:数据接收->协议分析->数据反序列化成协议消息对象->消息对象分发->构建应答对象->序列化成协议数据 ->发送;而整个测试流程只缺少逻辑处理,不同应用逻辑处理存在差 阅读全文
摘要:
如果平时不习惯写javascript的情况下,使用jquery validator写起来就是比较头痛的事情,为了解决这一问题所以写了个针对jquery validator 的c# helper。使用helper后编写验证就能得到VS.NET的支持主要是提供感知功能方便编写。<script> $().ready(function () { on_signupForm(); });</script><%=Script.DotNet.JQueryHelper.Validate("signupForm") .Add("firstname&qu 阅读全文
摘要:
程序的整体组织结构是否清晰?是否包含一个良好的架构全局观?是否明确定义了主要的构造块(包括每个构造块的职责范围及其他构造块的接口)?是否明确函盖了“需求”中列出的所有功能(每个功能对应的构造块不太多也不太少)?是否描述并论证了那些关键类?是否描述并论证了数据设计?是否详细定义了数据库的组织结构和内容?是否指出了所有关键的业务规则,并描述其对系统的影响?是否描述了用户界面设计的策略?是否将用户界面模块化,使界面的变更不会影响程序其余部分?是否描述并论证了处理I/O的策略?是否估算了稀缺资源的使用量(如线程,数据库连接,句柄,网络带宽等),是否描述并论证资源管理的策略?是否描述架构的安全需求?架构 阅读全文
摘要:
.net提供了List对象来提供可扩容数据存储,但在使用的过程中相信很多人直接通过默认构造函数进行创建。但这样做会存在一定的风险导致Lis在扩容过程增加CPU的损耗和GC的压力,对于问题的严重性就取决于实际应用的场合,如果在高并发的应用下存在大量这操作那问题就变得严重多了。 首先需要了解一下List的存储机制,在初始化的时候不指定大小的情况是默认分配大小为4的数组,当在添加信息超过该值的情况会进行一个倍分扩容,默认的规则是4,8,16,32...;扩展容的过程中是会构建扩展后大小的数组,并把旧的数据复制过去。ArrayList和List<T>实际的代码大概如下:public vi. 阅读全文
摘要:
组件支持属性转换描述,主要用于对象属性值和数据存储之前的转换,如常见的枚举和数值,枚举和字符,用户密码等信息转换存储。实际上也可以扩展更灵活的转换如对象关联字段转换,对象序列化转等等。 在Smark.Data描述一个转换器是一件很简单的事情,只需要继承PropertyCastAttribute对象并重写两个方法即可,以下是一个简单的枚举和数值的数值转换 public class EnumToInt : PropertyCastAttribute { public override object ToColumn(object value, Type pt... 阅读全文
摘要:
如果不是编写网络通讯应用相信对连接池接触比较少,其实我们是经常用到的特别是使用ado.net访问数据库的时候,默认情况就开启了连接池功能.连接池的主要功能是对N个连接循还复用,而不是每次使用都创建一个次的连接,通过减少连接创建达到一个更好性能的网络吞吐处理. 在ado.net使用的连接池都是针对一台服务器,但在有些情况下应用相对比较复杂,逻辑分布在几台服务器上,而WEB分布调用这几个逻辑服务器应用.以上这情况如果连接池只针对单一服务器的情况,这时候web维护不同服务器的连接池就变得比较麻烦多了;如节点轮循调用,如果一个节点有异常,还要放弃异常节点轮循;服务器恢复正常后还要把节点归队等一系... 阅读全文
摘要:
在数据设计的时候会针对一些字段设置默认的值,Smark.Data同样支持这样的功能,组件通过在属性中描述一个Value属性来告诉组件这个值如果在没有设置的情况应该提供怎样的值。组件提供一个描述的基类,用户可以根据实际情况的需要扩展出具体的默认值描述,以下是值描述基础类: [AttributeUsage(AttributeTargets.Property)] public abstract class ValueAttribute:Attribute { public ValueAttribute(bool afterupdate) { ... 阅读全文
摘要:
使用Smark.Data进行数据查询时必须通过对象来描述,其主要描述信息包括查询来源于那些表和需要那些信息等,即使平常的最常面对的关联查询,数据汇总查询等都可以通过实体描述来完成.因此实体描述在组件中起到一个非常重要的作用,可以说所有数据处理都必须经过实体描述.以下是简单地介绍Smark.Data的实体描述能完成那些数据查询工作. [Table] interface ICustomers { [ID] [IDENTITY] string CustomerID { get; set; } [Column] ... 阅读全文
摘要:
Expression对象是Smark.Data的核心对象,虽然Expression是个条件对象,但它所具备的功能是你想象不到的:),以下把Expression的功能列出来。 public RESULT Avg<RESULT, Entity>(string field) where Entity : Smark.Data.Mappings.DataObject; public RESULT Avg<RESULT, Entity>(string field, bool DISTINCT) where Entity : Smark.Data.Mappings.Data... 阅读全文
摘要:
Ant是基于Beetle实现开源的自动更新工具,主要包括三大部分:网络文件服务,文件更新管理和客户端更新组件.网络文件服务服务端主要用于文件管理,包括文件上传和下载。服务在开启的时候必须生成rsa证书,主要是用于管理端更新文件时进行一个有效性验证.文件更新管理文件管理端是用于管理更新的文件,必须把服务端生成的private key放到管理端目录下才能有效验证.Ant的更新允许目录结构更新,所以Client更新的时候如果本地没有相关目录结构文件时会自动根据需要进行创建。Ant的文件更新也没有采用版本号作为更新标记,只要管理端更新了对应的文件就会生成一个新的GUID值,Client在更新的时候比. 阅读全文