分类

链接

2013 年 7 月
1234567
891011121314
15161718192021
22232425262728
293031  

近期文章

热门标签

新人福利,免费薅羊毛

现在位置:    首页 > .NET > 正文
共享办公室出租
.NET框架开发技巧
.NET 暂无评论 阅读(1,668)

近来阅读了一套ERP开发框架的源代码,对开发框架的了解又深化一层,也为其将常识点运用的如此灵敏而自叹不如。

郎 咸平教授说,国际金融炒家对国际金融常识的了解与运用程序,是不行想像的。1997年的亚洲金融危机,国际金融炒家对香港的进犯是卖空港币,可是最终却反 应到股票市场,惨败。同理,开发高手将体系的常识点,运用的适当灵敏,你彻底没有想过能够按这种办法做出程序,灵敏简洁,保护便利。

1  .NET组件主动重命名

在Windows Forms开发,常常遇到一件头疼的工作是一个Form界面有许多控件,而这些控件的称号(Name)很难保持命名一致。比方,开发标准里边说,要给一切 的Button命名为以btn开发。若是界面中有二个按钮,断定和撤销,那么能够按照标准,为之命名为btnOK,btnCancel。再扩展到其它的控 件,都应该恪守这样的前缀命名法。

通过收拾,构成下面的表格标准

控件 前缀 举例
Button btn btnOK
ListView lst lstProject
Label lbl lblUserName
Combox cmb cmbProjectType
TextBox txt txtUserId
CheckBox chk chkEnable
GridView grid gridProduct

当一个页面中有许多控件时,怎么确保控件命名,仍是这样的标准呢?

一种办法是有专门的代码查看,俗称Review,常常的花时间去改进代码,保护代码。从根本的命名上查看,修正,以契合标准。另一种办法便是我从高手的代码中学到的,解说如下。

当 你给一个按钮绑定资料库字段或是修正它的Label/Text/Caption特点时,参加设计时撑持,用这个姓名来交换无规律的命名。比方,拖一个按钮 Button控件到窗体中,它的称号是Button1, 这时修正它的Text=OK, 回车承认。这里我截获了控件的特点修正事情,所以修正控件Button1的姓名为btnOK。数据绑定特点也是相同,截获绑定的数据成员的称号,再依据它 来修正控件的称号,比方下面的一段代码所示

private Foundation.WinUI.Misc.Label lblDbPassword; private Foundation.WinUI.Editors.TextEditor txtDbUser; private Foundation.WinUI.Misc.Label lblDbUser; private Foundation.WinUI.Editors.TextEditor txtDbDatabase; private Foundation.WinUI.Misc.Label lblDbDatabase; private Foundation.WinUI.Editors.TextEditor txtDbServer; private Foundation.WinUI.Misc.Label lblDbServer; private Foundation.WinUI.Misc.GroupBox grpConnectionParameter1; private Foundation.WinUI.Editors.Grid grid;

对这些控件的称号,我没有任何的修正,仅仅对它绑定数据特点,结构会主动依据数据源的特点称号,进行修正,所以看起来标准程度高,彻底不需求人为的来履行标准。想象一下,当体系中的窗体许多,控件数量大的时分,这种智能的命名办法是多么的有功率,将代码标准贯彻到底。

这则窍门的完结办法是注册组件改动事情(ComponentChanged),如下面的代码所示

this.Site.GetService(typeof(IComponentChangeService)) as IComponentChangeService


2 .NET Remoting 效劳器端目标主动化装备

先来看一下,根本的.NET Remoting是怎么装备开发的。

先开发效劳器目标,便是要露出给客户端的目标

public class MyObject:MarshalByRefObject 
    { public int Add(int a,int b) 
        { return a+b; 
        } 
    }

效劳器端把它激活,供客户端衔接进来调用

[STAThread] static void Main(string[] args)
 {
           RemotingConfiguration.Configure("RemoteServer.exe.config");
           Console.ReadLine();
 }

由于这样的代码很节约,所以还需求在装备文件中作出如下的装备

<configuration> <system.runtime.remoting> <application name="RemoteServer"> <service> <wellknown type="RemoteObject.MyObject,RemoteObject" objectUri="RemoteObject.MyObject" mode="Singleton" /> service> <channels> <channel ref="tcp" port="9999"/> channels> application> system.runtime.remoting> configuration>

客户端代码,调用.NET Remoting效劳

[STAThread] static void Main(string[] args)
  {
          RemoteObject.MyObject app = (RemoteObject.MyObject)Activator.GetObject(typeof(RemoteObject.MyObject),System.Configuration.ConfigurationSettings.AppSettings["ServiceURL"]);
           Console.WriteLine(app.Add(1,2));
           Console.ReadLine();
  }

相同,仍是需求作出装备才能使上面的代码收效。

<configuration> <appSettings> <add key="ServiceURL" value="tcp://localhost:9999/RemoteObject.MyObject"/> appSettings> configuration>

 

我提出问题,若是要添加一个效劳器端目标MyObjectB,对上面的代码,需求修正几个当地?

添加代码(效劳完结和效劳接口的调用)是有必要的有些,不行少,别的需求修正的当地:

1  效劳器端的装备文件,添加效劳接口

2  客户端的装备文件,添加对效劳的引证

可是,开发高手给的答案是零修正,添加一个效劳,对效劳端或客户端不需求作出任何的修正。

怎么做到这一点呢,闻名的.NET通讯组件RemObjects ,它供给了一个通用的GUI东西,用于依据效劳端的接口,生成客户端的代码,按照这一点思路。咱们能够思考做一个东西。添加一个效劳器端目标后,为了让它 露出出来可用,要修正的当地是两个装备文件,所以,我只需求当有新的效劳器端目标要露出出来时,运用这个GUI东西,主动完结二个装备文件的修正,即可达 到零修正。并且用东西的优点是不会犯错,即便利又有功率。

我认为这两个思路的确不错,能让体系的可读性增强,又进步工作功率。

============ 欢迎各位老板打赏~ ===========

【上篇】
【下篇】

本文版权归Bruce's Blog所有,转载引用请完整注明以下信息:
本文作者:Bruce
本文地址:.NET框架开发技巧 | Bruce's Blog

发表评论

留言无头像?