iLeichun

当前位置:首页.NET

Windows Phone捆绑.NET 成为独立软件供应商

分类:.NET  来源:网络  时间:2010-10-23 14:47:27

近日,通过国外媒体得到消息Windows Phone 7已正式发布。新品发布的同时也引起了国外开发者们的一些争议,原因是VB不支持Windows Phone 7。

 

开发者们一直在关注VB与Windows Phone 7关系的发展,期待微软就VB是否或者何时支持他们的新平台做出坚定的承诺。随着Windows市场的免费/共享软件的饱和,Windows Phone在不离开.NET生态系统为大众市场提供应用程序的重要平台的情况下成为独立软件供应商,因此不难理解VB粉丝的竭力反抗。

 

为了不再失去更多的市场份额,他们把所有资源用于构建这个平台,于是不难理解微软决定只专注于他们最重要的语言。虽然CLR是专门为C#和VB(以及Java,这点比较奇怪)设计的,但事实上C#才是用于核心功能的语言,因此需要优先考虑。尽管这个承诺雷声大雨点小,Visual Basic用户仍然需要得到尊重,否则这个平台就会失去信用。

 

微软是强调这是一个“早期”预览版,并且远未达到产品级别的质量。虽然Silverlight模板已经提供,但XNA仍未得到支持。这是一个多年的痛处,即使现在也没有办法在Xbox 360上使用Visual Basic。当VB 9支持生成无需VB运行库(XBox不支持这些操作码)的应用程序时,这个问题会得到解决,但事实上并没有解决。

 

虽然目前没有涵盖在语言协同发展的承诺里,F#却慢慢开始支持Windows Phone 7了。 大约一个月前发布的F#的八月份CTP版包含了一个Windows Phone 7版本的F#运行库,FSharp.Core.dll。 而所需的F# Silverlight应用程序的项目模板也通过Windows Gallery发布了。和VB一样,F# XNA应用程序的模板也没有提供。

 

开发者们在论坛里看到,另一个被要求的最流行语言不是IronPython,虽然很多人都想要它。也不是实际上已被放弃的JScript.NET或者IronRuby语言。而我们看到人们要求的是那个奇怪的混合体,C++/CLI。显然,很多开发者希望把遗留的C++应用程序移植到Windows Phone上,并且把C++/CLI看作最佳选择。虽然用户界面肯定要重写了,但他们深信剩下的代码可以重用。

 

2009年微软的Lucas Bolognese公开承诺协同发展C#和Visual Basic。虽然这两种语言都能自由地添加各自的特性,但如果一个新功能在另一个语言里没有就不能在这个语言里添加。在.NET 4里,函数式编程特性被添加到Visual Basic,动态特性则被添加到C#,这在很大程度上兑现了这个承诺。然而,一个挥之不去的问题和新的矛盾却为这个承诺蒙上阴影。

.NET中的设计模式之发现装饰模式

分类:.NET  来源:网络  时间:2010-10-23 14:41:02

  过去我的一个朋友常说,学习任何编程语言最困难的部分是运行“Hello World”,之后一切都很容易。多年以后,我才意识到他说的很对。学习设计模式的基本目标是要用它,尤其是帮助那些有扎实的OOP基础,而对设计模式很困惑的人在设计中应用它。我不会为不同设计模式写很全面的参考,但我希望这些文章能让你入门。设计模式与特定的语言无关。虽然我用C#写了很多示例,但我尽量避免一些C#特有的结构,因此它面向大部分人,尤其是使用C++的人。

  装饰器模式允许我们动态为对象添加行为。下面我们先介绍一个场景,然后寻找替代方法。这会帮助我们认清该模式的真实用途,尤其在灵活性这方面。

  思考过程

  今天我们参考的不是一个实际的场景,有时可能会很奇怪,但它会帮助我们弄清这个模式及相关概念。我们的目标是添加将不同来源的信息存储到磁盘文件上的功能。所以,第一步我们定义一个接口,并实现它。IMessageWriter和IMessageReader接口分别用于写入和读取信息,他们的实现如下:

以下是代码片段:
    interface IMessageWriter {
  string Message { set; }
  void WriteMessage(string filePath);
  }
  class MessageWriter : IMessageWriter {
  private string message;
  public string Message { set{message =value;} }
  public virtual void WriteMessage(string filePath) {
  File.WriteAllText(filePath, message);
  }
  }
  interface IMessageReader {
  string ReadMessage(string filePath);
  }
  class MessageReader : IMessageReader {
  public virtual string ReadMessage(string filePath) {
  if (File.Exists(filePath))
  return File.ReadAllText(filePath);
  return null;
  }
  }

  信息作为Message属性存储,MessageWriter的方法WriteMessage把它写到指定的文件。同样,MessageReader的方法ReadMessage从指定的文件读取,并以字符串的形式返回。现在假设客户提出了新需求。

  对某些信息在读和写文件之前,我们需要验证用户;

  对某些信息我们希望加密后保存,来防止别人读取,并且我们需要以64位编码保存加密信息;

  对某些信息,我们都需要这些功能;

  很奇怪吧,呵呵,首先我们不用装饰器分析不同的解决方案,这会使我们对这个简单的设计模式认识更加清晰。

.NET Framework开发托管代码的常见应用形式

分类:.NET  来源:网络  时间:2010-10-23 14:40:15

.NET Framework的结构主要包括3个部分,.NET Framework类库、CLR(Common Language Runtime,公用语言运行库)和ASP.NET。

1..NET Framework类库

正如我们前面介绍的,类是面向对象设计语言中非常重要的部分,好比是工业流水线上的模具,按照这些类就可以实例化为对象,在程序中直接使用。.NET Framework中的类库提供了如此丰富的类,使得开发程序十分简单。诸如字符串处理、数据收集、数据库连接,以及文件访问等任务,在.NET Framework中都提供了完善的类可以直接使用。

.NET Framework开发的托管代码的常见应用形式:

有的程序没有自己定义的类,也不使用.NET Framework提供的类库的类,所以直接和CLR打交道,再在操作系统支持下运行。

有的程序没有自己定义的类,使用.NET Framework提供的类库的类,然后和CLR打交道,再在操作系统支持下运行。

有的程序有自己定义的类,但不使用.NET Framework提供的类库的类,然后和CLR打交道,再在操作系统支持下运行。

有的程序有自己定义的类,使用.NET Framework提供的类库的类,然后和CLR打交道,再在操作系统支持下运行。

提示:.NET的托管代码都必须使用CLR,至于类库则不一定。但实践中很少有不使用类库的程序。

2.CLR

CLR的主要功能是完成管理内存、线程执行、代码执行、代码安全验证、编译,以及其他系统服务。CLR的体系结构如图1-16所示。

CLR中一个非常重要的组成部分是通用语言系统CLS。通过CLS,不同的编程语言的数据类型被转换为标准数据类型。

CLR可以提高开发人员的工作效率。例如,程序员可以用他们选择的开发语言编写应用程序,却仍能充分利用其他开发人员用其他语言编写的运行库、类库和组件。

3.ASP.NET

一个Web应用程序模型,利用该模型可以开发出功能强大的Web应用程序。

VS 2010加速.NET应用程序调试

分类:.NET  来源:网络  时间:2010-10-23 14:33:06

  Visual Studio 2010 Ultimate 版本有个新功能IntelliTrace(智能跟踪),IntelliTrace被引入到Visula Studio中来加速我们对.NET应用程序的调试,它通过对预先设置的事件和方法在运行过程中的跟踪并将其有效地传递给调试执行者,从而快速的传递程序在执行过程中的状态和各种信息来帮助开发者更好的调试程序,快速的发现问题。实际上,在Visual Studio 2010之前,Microsoft Visual Stuido已经帮助我们很好的继承了调试工具,比如对变量的监控,对堆栈的查看等等,并且允许设置断点进行单步调试等。所有的这些都在很好的帮助开发者来了解程序在不同的执行过程中的状态以及检测是否按照预先实际的逻辑进行运转,而且更多的,我们通过断点后监测程序状态来发现问题所在。而这样所存在的问题是,一些逻辑上的错误可能发生在断点执行之前,而且很可能是一些无法追查。开发者必须停止当前的调试,重新设置断点并启动调试,而这样的试验过程往往需要很多次才能找到正确的位置来设置断点。IntelliTrace智能的将一些调试信息和程序状态自动的跟踪并实施的展现给开发人员,从而减少了需要程序员找到适当的断点才能跟踪和监控程序运行状态的过程。

  Visual Studio提供给我们两个方式来控制其搜集信息的内容源,一个是IntelliTrace events only,仅仅收集智能跟踪事件和调试中断的相关数据;另外一个是IntelliTrace events and call information,这个就会收集除了IntelliTrace事件之外对一个方法调用的进入和退出的各种数据。下边我们来看看在Visual Studio 2010中如何设置IntelliTrace的跟踪选项。

  进入到工具 --> 选项 --> IntelliTrace。它在默认状态下是启用的,但是,仅捕捉事件,因为捕捉事件是便宜的。然而,当你开始跟踪所有这些调用信息时,真正的价值开始显现出来了。你每一次调试的时候,IntelliTrace都将弹出来,你在动态调试的时候可以使用这个历史性的调试工具。假如我在那里并且有一个断点,但是,我要备份和重新设计这个断点,我可以使用IntelliTrace完成这个任务。

  使用IntelliTrace捕捉到调试进程的其他人可以把记录以及.dlls和pdbs文件发送给你,你可以重放它们的进程。这个进程也许进入到数据库(你没有这个数据库),它也许是采用你不能复制的方法设置的,它可能在你不能企及的网络上,但是,你不用担心,因为你拥有记录以及.dlls和pdbs文件,你可以重放。

  当然,拥有源代码会更好,因为那样你就能够看到这个代码好像是在你自己的机器上调试它一样。这对于在你的机器上运行正常,在其他人的机器不能运行的那些神秘的故障来说是非常好的。它对于多线程的情况也是非常好的,当你经过这个应用程序的时候,这个软件瑕疵就消失了,但是,在正常速度运行时,这个软件瑕疵又出现了。

  默认情况下,IntelliTrace仅仅收集IntelliTrace相关的事件,这样是为了保持所收集的数据较少,并且对于性能上的影响是最小的。而当你选择对方法调用的数据也进行搜集时,除了其临时搜集的数据所占用空间的增大外,对于性能的影响也是较大的。尽管收集到的细节有所不同,但两种方式都会收集一些共同的数据。比如,它总会在第一次启动收集过程时收集系统信息,模块的加载和卸载事件,线程的起始和结束时间等。随着模块和线程的事件,可以正确的更新模块和线程调试窗口的信息。另外,任何模式下,在调试断点处也会对数据进行收集,并将所收集到的基本数据类型和对象在调试其中进行检查和审阅,并允许改变其值。

  总的说来IntelliTrace调试程序就是为程序开发者量身定制的,通过其独特的“历史调试”功能,为开发者提供了一个反悔追溯过程控制功能。比如,在开发中程序在10分钟前出现一个异常,怎么办呢,如果在以前一般是通过手动调用Debug.Write语句,现在不必了!因为不少开发工具中的这种历史调试功能都非常相似,在VS2010 正式版 中通过IntelliTrace,不但能使程序员看到程序的当前状况,也可以检查某些情况下产生的事件,甚至还能隔离应用程序历史记录中的故障点。所以,启用历史调试之后,VS2010 正式版能够捕获调用堆栈以及相关变量,咱们就可以“回退”至程序的保存前10分钟或者更长时间,检查程序发生异常、故障时的各种情况。因为,在默认情况下程序只保存关键的类型,而开发人员可以选择记录所有的参数,对象以及全局变量。所以,IntelliTrace会主动展示程序运行过程中的关键事件,诸如代码异常、文件访问、时时调试等等。

  更好的理解使用IntelliTrace调试功能,向你推荐MSDN杂志上上的一篇文章IntelliTrace: 使用 IntelliTrace 调试应用程序,Justin Marks 演示了如何使用 Visual Studio 2010 旗舰版中提供的 IntelliTrace 功能,该功能为开发人员提供了一种强大的新调试工具来加速调试并收集应用程序的完整执行历史记录、获得更深入的信息以及快速查找 Bug。

Windows Phone 7使人对.NET语言协同发展承诺产生怀疑

分类:.NET  来源:网络  时间:2010-10-23 14:32:17

2009年微软的Lucas Bolognese公开承诺协同发展C#和Visual Basic。虽然这两种语言都能自由地添加各自的特性,但如果一个新功能在另一个语言里没有就不能在这个语言里添加。在.NET 4里,函数式编程特性被添加到Visual Basic,动态特性则被添加到C#,这在很大程度上兑现了这个承诺。然而,一个挥之不去的问题和新的矛盾却为这个承诺蒙上阴影。

当前争论的核心是VB不支持Windows Phone 7。几个月来,我们一直在注视这个事件的发展,期待微软就VB是否或者何时支持他们的新平台做出坚定的承诺。随着Windows市场的免费/共享软件的饱 和,Windows Phone成为独立软件供应商在不离开.NET生态系统为大众市场提供应用程序的重要平台。因此不难理解VB粉丝的竭力反抗。

为了不再失去更多的市场份额,他们把所有资源用于构建这个平台,于是不难理解微软决定只专注于他们最重要的语言。虽然CLR是专门为C#和 VB(以及Java,这点比较奇怪)设计的,但事实上C#才是用于核心功能的语言,因此需要优先考虑。尽管这个承诺雷声大雨点小,Visual Basic用户仍然需要得到尊重,否则这个平台就会失去信用。

现在,Visual Basic for Windows Phone 7的CTP版已 经发布,紧张的气氛有所缓和。 微软是强调这是一个“早期”预览版,并且远未达到产品级别的质量。虽然Silverlight模板已经提供,但XNA仍未得到支持。这是一个多年的痛处, 即使现在也没有办法在Xbox 360上使用Visual Basic。我们以为当VB 9支持生成无需VB运行库(XBox不支持这些操作码)的应用程序时,这个问题会得到解决,但事实上并没有解决。

虽然目前没有涵盖在语言协同发展的承诺里,F#却慢慢开始支持Windows Phone 7了。 大约一个月前发布的F#的八月份CTP版包含了一个WP7版本的F#运行库,FSharp.Core.dll。 而所需的F# Silverlight应用程序的项目模板也通过Windows Gallery发布了。和VB一样,F# XNA应用程序的模板也没有提供。

我们在论坛里看到,另一个被要求的最流行语言不是IronPython,虽然很多人都想要它。也不是实际上已被放弃的JScript.NET或者 IronRuby语言。而我们看到人们要求的是那个奇怪的混合体,C++/CLI。显然,很多开发者希望把遗留的C++应用程序移植到Windows Phone上,并且把C++/CLI看作最佳选择。虽然用户界面肯定要重写了,但他们深信剩下的代码可以重用。(应当指出的是,C++/CLI已经通过ECMA-372标准化了,因此可由第三方提供,如果硬件支持的话。)

查看英文原文:Windows Phone 7 has put the .NET Language Coevolution Promise in Doubt

查看译文原文:InfoQ

.net调用java webService返回类型是空的解决方法

分类:.NET  来源:网络  时间:2010-10-23 14:10:51

  .net调用java webService返回类型是空。在java中自定义类型是不被.net认同的,所以接收不到。

  解决办法:

  1.自定义类型必须实现java.io.Serializable结构。

  2.将返回类型与web service放到同一package。用Java开发的人可能就会习惯的将返回类型与web service存放在不同的package中.我就是将返回的类型存在下xx.xx.domain目录下,而将web service存在xx.xx.service目录下,在用eclipse生成 webservice服务时就把它们放到不同的命名空间中,导致.net客户端无法获取自定义类型的值。

北大青鸟 ASP.NET 视频教材

分类:.NET  来源:网络  时间:2010-9-23 16:20:53

北大青鸟 ASP.NET 32 讲 01
www.wangyeba.com/Soft/shuji/net/200608/4149.shtml

北大青鸟 ASP.NET 32 讲 02
www.wangyeba.com/Soft/shuji/net/200608/4150.shtml

北大青鸟 ASP.NET 32 讲 03
www.wangyeba.com/Soft/shuji/net/200608/4151.shtml

北大青鸟 ASP.NET 32 讲 04
www.wangyeba.com/Soft/shuji/net/200608/4154.shtml

北大青鸟 ASP.NET 32 讲 05
www.wangyeba.com/Soft/shuji/net/200608/4155.shtml

北大青鸟 ASP.NET 32 讲 06
www.wangyeba.com/Soft/shuji/net/200608/4156.shtml

北大青鸟 ASP.NET 32 讲 07
www.wangyeba.com/Soft/shuji/net/200608/4157.shtml

北大青鸟 ASP.NET 32 讲 08
www.wangyeba.com/Soft/shuji/net/200608/4158.shtml

北大青鸟 ASP.NET 32 讲 09
www.wangyeba.com/Soft/shuji/net/200608/4163.shtml

北大青鸟 ASP.NET 32 讲 10
www.wangyeba.com/Soft/shuji/net/200608/4164.shtml

北大青鸟 ASP.NET 32 讲 11
www.wangyeba.com/Soft/shuji/net/200608/4165.shtml

北大青鸟 ASP.NET 32 讲 12
www.wangyeba.com/Soft/shuji/net/200608/4166.shtml

北大青鸟 ASP.NET 32 讲 13
www.wangyeba.com/Soft/shuji/net/200608/4277.shtml

北大青鸟 ASP.NET 32 讲 14
www.wangyeba.com/Soft/shuji/net/200608/4278.shtml

北大青鸟 ASP.NET 32 讲 15
www.wangyeba.com/Soft/shuji/net/200608/4279.shtml

北大青鸟 ASP.NET 32 讲 16
www.wangyeba.com/Soft/shuji/net/200608/4280.shtml

北大青鸟 ASP.NET 32 讲 17
www.wangyeba.com/Soft/shuji/net/200608/4298.shtml

北大青鸟 ASP.NET 32 讲 18
www.wangyeba.com/Soft/shuji/net/200608/4299.shtml

北大青鸟 ASP.NET 32 讲 19
www.wangyeba.com/Soft/shuji/net/200608/4300.shtml

北大青鸟 ASP.NET 32 讲 20
www.wangyeba.com/Soft/shuji/net/200608/4301.shtml

北大青鸟 ASP.NET 32 讲 21
www.wangyeba.com/Soft/shuji/net/200608/4302.shtml

北大青鸟 ASP.NET 32 讲 22
www.wangyeba.com/Soft/shuji/net/200608/4303.shtml

北大青鸟 ASP.NET 32 讲 23
www.wangyeba.com/Soft/shuji/net/200608/4320.shtml

北大青鸟 ASP.NET 32 讲 24
www.wangyeba.com/Soft/shuji/net/200608/4321.shtml

北大青鸟 ASP.NET 32 讲 25
www.wangyeba.com/Soft/shuji/net/200608/4326.shtml

北大青鸟 ASP.NET 32 讲 26
www.wangyeba.com/Soft/shuji/net/200608/4327.shtml

北大青鸟 ASP.NET 32 讲 27
www.wangyeba.com/Soft/shuji/net/200608/4365.shtml

北大青鸟 ASP.NET 32 讲 28
www.wangyeba.com/Soft/shuji/net/200608/4366.shtml

北大青鸟 ASP.NET 32 讲 29
www.wangyeba.com/Soft/shuji/net/200608/4367.shtml

北大青鸟 ASP.NET 32 讲 30
www.wangyeba.com/Soft/shuji/net/200608/4398.shtml

北大青鸟 ASP.NET 32 讲 31
www.wangyeba.com/Soft/shuji/net/200608/4399.shtml

北大青鸟 ASP.NET 32 讲 32
www.wangyeba.com/Soft/shuji/net/200608/4400.shtml