• .NET程序员掌握的.NET技术


    从毕业做.NET到现在,有好几年了,自认为只能是达到熟练的水平,谈不上精通。所以,总结一下,自己到底熟练掌握了哪些.NET方面的开发技术,以此对照,看看还有哪些不足,欢迎补充。

    1 .NET Framework常见的API要熟练掌握。有些API可能需要多个类型配合使用,也有必要掌握。

    IEntity2 clonedEntity = null;
    BinaryFormatter formatter = new BinaryFormatter();
    using (MemoryStream memStream = new MemoryStream())
    {
             formatter.Serialize(memStream, sourceEntity);
              memStream.Seek(0, SeekOrigin.Begin);
              clonedEntity = (IEntity2)formatter.Deserialize(memStream);
    }
     

    这个例子是.NET的深拷贝(deep copy)的实现,类似于这样的例子,还有很多。这些API的组合应用是需要掌握的。经过积累后,通常都会有自己的一个Utility类型库。 

    2 Linq to Object。虽然Linq to SQL已经被抛弃和遗忘,但是Linq to Object还真是一项很重要的技术。如果没有这项技术,数据的查找和操作的代码会被foreach充满,这样不容易维护,而且有很多代码都是routine代码,可以省略的。

    string[] names = { "Tom","Dick","Harry","Mary","Jay" };
    IEnumerable<string> query =
                     from    n in names
          where   n.Contains ("a")  // Filter elements
          orderby n.Length          // Sort elements
          select  n.ToUpper( );     // Project each element
    
    foreach (string name in query)
         Console.Write (name + "/");

    同时,与Linq搭配的技术Lambda技术,可以简化很多代码,这也需要掌握,上面的例子用Lambda技术改写一下

    string[] names = { "Tom","Dick","Harry","Mary","Jay" };
    IEnumerable<string> query = names
          .Where   (n => n.Contains ("a"))
          .OrderBy (n => n.Length)
          .Select  (n => n.ToUpper( ));
    
    foreach (string name in query)
         Console.Write (name + "|");

    曾经有个非常流行的考试题目,考察委托的三种写法,举例如下所示

    List<int> list = new List<int>();
    list.AddRange(new int[] { 1, 5, 10, 20 ,33 });
     
    //使用传统委托语法调用FindAll
    Predicate<int> callback = new Predicate<int>(IsEvenNumber);
    List<int> evenNumbers = list.FindAll(callback);
    
    //使用匿名方法
    List<int> evenNumbers = list.FindAll(
                   delegate(int i)
                    {
                        return (i % 2) == 0;
                    });
    
    //使用Lambda表达式
    List<int> evenNumbers = list.FindAll(i => (i % 2) == 0);
    (代码来自于LINQ之路 3:C# 3.0的语言功能(下)

    3  .NET 4引入了新的并行编程库。这项技术不同于多线程技术,它是适应多核时代的需要。来看下面的例子程序

    static double ParallelPi()
    {
            double sum = 0.0;
            double step = 1.0 / (double)num_steps;
            object monitor = new object();
            Parallel.For(0, num_steps, () => 0.0, (i, state, local) =>
            {
                double x = (i + 0.5) * step;
                return local + 4.0 / (1.0 + x * x);
            }, local => { lock (monitor) sum += local; });
            return step * sum;
    }

    有了新面的Lambda表达式基础,这个例子也不难读懂。这是用并行库求PI的值。

    .NET 4还引入了动态语言,如下的例子所示,Python的例子

    ScriptRuntime py = Python.CreateRuntime();
    //Dynamic feature only works on objects typed as 'dynamic'
    dynamic helloworld = py.UseFile("helloworld.py");
    Console.WriteLine("helloworld.py loaded!");
    
    for (int i = 0; i < 1000; i++)
    {
           Console.WriteLine(helloworld.welcome("Employee #{0}"), i);
    }
    
    //Python的代码
    def welcome(name):
        return "Hello '" + name + "' from IronPython"

    如果要改善.NET程序的性能,可以考虑使用.NET并行库。如果你在寻找脚本语言,可以寄宿到.NET中方便调用,这里的Python应该是一个很好的开始。对于.NET框架直接内置的技术,必定会有大量的第三方工具,产品来对它做Enhancement或Extension,你可以找到很称手的工具,为你的项目增加灵活性和改善性能。

    4 ORM开发技术。可以选择NHibernate,也可以选择Entity Framework。ORM技术可以让你的代码专注于业务逻辑,大大简化数据访问代码的编码与调试。此外,ORM技术支持界面与逻辑分离,强类型的数据绑定,这些好处,都可以给你的项目增加灵活性。比如保存客户的代码,用ORM技术写,是这样的

    using (DataAccessAdapterBase adapter =GetDataAccessAdapter())
    {
        try
        {
            adapter.StartTransaction(IsolationLevel.ReadCommitted, "SaveCustomer");
            adapter.SaveEntity(Customer, true, false);
            adapter.Commit();
        }
        catch
        {
            adapter.Rollback();
            throw;
        }
    }

    可不能小看了这几句,首先它是用代码生成器生成的,其次,对于增改数据库字段,这里不用作任何的修改,再次,界面的变动和业务逻辑的变动,也不会影响到这里。就这几项好处,可以节约大量的时间,让你专注于业务逻辑。

    5  分布式的通讯技术。.NET Remoting和WCF,至少要掌握一项才行。

    6  界面组件包。.NET 框架自带的界面控件虽然简单好用,但不够强大。所以,推荐你选购一套流行的界面控件,为你的项目增加可读性。虽然都是说界面不重要,逻辑重要,但是我们心里也明白,界面看起来惨不忍睹,再好的逻辑和架构也也不会被客户接受。界面要做到简单,实用,说起起容易,做起来可相当不容易。这里可以选择的控件比较多,Infragistics,Syncfusion,ComponentOne,都是很著名的控件供应商。

  • 相关阅读:
    Centos搭建PHP5.3.8+Nginx1.0.9+Mysql5.5.17
    初识Mongodb总结
    初识Mongodb之[CURD]PHP版
    Centos搭建Samba
    PHP图像处理(二) GraphicsMagick 安装扩展及使用方法
    Vcastr3.0开源在线flv播放器
    自动更新@version svn版本号信息
    Centos安装Memcache
    MVC演化
    JAVA与.NET的相互调用——TCP/IP相互调用基本架构
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2308692.html
Copyright © 2020-2023  润新知