RSS 2.0 Feed
2006-08 Entries
摘要:最近两三个月,我在学习 Java。为了在实践中快速进步,我决定把 .NET 中目前应用最广泛的一个 Ajax 类库 Ajax.NET 翻译到 Java 中,目的主要是熟悉 Java 的语法和类库(尤其是 Web 方面 Servlet 相关的知识)。到今天有了一个阶段性的成果,我已经可以像 .NET 中作的那样在脚本中直接调用服务端的简单方法了:package ajaxnet4j.demo; public class Test { @ajaxnet4j.AjaxMethod public String HelloWorld(String person) { return "Hello, " + person; } }<script type="text/javascript"> function test() { var name = document.getElementById("txtPerson").value; res = ajaxnet4j.demo.Test.HelloWorld(name); if (res.error == null) { alert(res.value); } else { alert(res.error.Type + ": " + res.error.Message); } } </script> 翻译的过程,接触了 Servlet (相当于 IHttpHandler),Reflect(相当于 Reflection 反射发出),Java 1.5 Annotation(相当于 Attribute)等等,对 C# 和 Java 相比的语法差异,.NET 和 Java 相比的类库映射有了不少认识,对了继续深入的学习 Java 算是一个不错的起点。当然对于 Ajax.NET 的内部构造也了然于心了。收获颇丰。 当然,受制于 Ajax.NET 的 Licence,我还没有办法发布 ajaxnet4j (无论是源码,或是 jar 包),正在向原作者请求,不知道他会不会答应。哎,有可能死在摇篮中啊,那就是遗憾了。...[阅读全文]

posted @ | Feedback (13) |

摘要:下一个话题我们来看 ASP.NET 2.0 中新增的 Profile 功能。这和我们要谈的 BuildProvider 有什么关系么? .NET Framework SDK 的文档中有这样一段话,引起了我的兴趣。位于 System.Web.Profile.ProfileBase 类的首页上: 在启动启用了用户配置文件的应用程序时,ASP.NET 会创建一个类型为 ProfileCommon 的新类,该类从 ProfileBase 类继承。强类型访问器被添加到 profile 配置节中为每个属性定义的 ProfileCommon 类中。ProfileCommon 类的强类型访问器调用 ProfileBase 基类的 GetPropertyValue 和 SetPropertyValue 方法,分别用于配置文件属性值的检索和设置。ProfileCommon 类的一个实例被设置为 ASP.NET 应用程序的 Profile 属性的值。 为了启用 Profile 机制,我们需要在 web.config 中进行必要的配置。比如: <xml version="1.0"?> <configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> <connectionStrings> <add name="TestDB" connectionString="........" providerName="System.Data.SqlClient" /> </connectionStrings> <system.web> <profile defaultProvider="TestProfileSqlProvider"> <providers> <clear /> <add name="TestProfileSqlProvider" ......[阅读全文]

posted @ | Feedback (9) |

摘要:昨天知道了公司里年度调薪的结果,公司食言了,连他们自己许诺过的最低数字都没有达到,这次是彻底失望了,因为公司已经没有什么信誉可言了。 言归正传,上一篇中我给大家介绍了 ASP.NET 2.0 中新的 DataSet 设计器,并告诉大家:在 ASP.NET 2.0 中,用 DataSet 设计器设计的那些图形,在编译开始前,将被 DataSet BuildProvider 自动转换为相应的代码。 关于那些自动生成的代码,有下面几点提醒大家注意: 1) TableAdapter 类是 partial 的:意味着我们可以给这些 TableAdapters 外接一些方法等成员,我们可以通过外接把那些通过拖曳图形无法完成的代码、接续到特定的 TableAdapter 类中。 2) TableAdapter 类中使用的那些 Connection, Command, DataAdapter 等等的类型,会根据所访问数据库的不同(准确说是所使用的 .NET Data Provider 的不同)而变化。如果 web.config 中标明某个 ConnectionString 是使用 System.Data.OleDb,那么下次 DataSet 设计器存盘,会自动变成 OleDbConnection, OleDbCommand, ... 这些类型。 BuildProvider 是 ASP.NET 2.0 中新推出的功能,那么 Visual Studio .NET 2002/2003 中的 DataSet 设计器,是如何自动生成代码的?细心人注意过这一点,在 VS 2002/2003 的属性面板中,可以看到有一个“自定义工具”的,里面写着“MSDataSetGenerator”,类似的还有“CrystalDecisions.VSShell.CodeGen.ReportCodeGenerator”(水晶报表的 *.rpt 文件)。VS 2002/2003 使用的是 CodeGenerator 来自动生成代码。 其实,如果打开 Visual C# 2005 Express Edition 或者 Visual Basic .NET 2005 Express Edition,同样创建一个 DataSet,你会发现那里仍然是“Custom Tool”和“MSDataSetGenerator”,仍然是通过 CodeGenerator 自动生成代码的。 看来 BuildProvider 功能仅限于 ASP.NET 的项目,不适用于 Windows Forms 或者类库项目。...[阅读全文]

posted @ | Feedback (6) |

摘要:从这篇开始,开始陆续向大家介绍 ASP.NET 2.0 中一个新功能,在国内社区还很少有人论及,我就献丑了。 我第一次注意到这个新功能,是因为尝试使用 Visual Web Developer 2005 Express Edition 中的、新的 DataSet 设计器。这个 DataSet 设计器,和 Visual Studio .NET 2003 中的相比,有了很大的变化,最大的变化应该说是 TableAdapter。 新的 DataSet 设计器中,每个 DataTable 可以在它下方附带一个 TableAdapter。这个 TableAdapter 可以有若干个 Query。SELECT rows (获取一个 DataTable 的)类型的 Query 所返回的记录集,应该和它上方的 DataTable 定义的列相对应。其他类型的 Query,包括 SELECT scalar(只取第一行第一列的)以及 UPDATE, INSERT, DELETE 等,也可以被包含在这个 TableAdapter 中。 另外,TableAdapter 也可以单独存在(不依赖于 DataTable),不过如果是单独存在,那它就只能包含 SELECT scalar / UPDATE / INSERT / DELETE 等 Query,不能包含 SELECT rows 类型的 Query。 在这些 TableAdapters 或者说在新的 DataSet 设计器的帮助下,只要你愿意,你不需要再另外书写访问数据库(DAL)的代码(虽然有人会担心效率、耦合等等)。因为这些 TableAdapter 可以完成绝大多数常见的 DAL 操作。 接受了 TableAdapter 模式后,很多人(包括我)都会产生几个问题:TableAdapter 和 DataAdapter 有什么联系么?TableAdapter 是 .NET Framework 2.0 中新推出的一种类型?后一个问题,很容易就可以回答,因为 .NET Framework 2.0 SDK 的类库文档中,找不到任何叫做 TableAdapter 或者包含 TableAdapter 字样的类型。 很多细心人知道,在 Visual Studio .NET 2003 的 DataSet 设计器背后,每一个 *.xsd 文件背后都有一个 *.xsx 文件和一个 *.cs......[阅读全文]

posted @ | Feedback (5) |

摘要:我一直关注着 NDoc,等待它的最新版本支持 .NET 2.0 的新功能,也期待有机会完成新的 NDoc 中文版。 刚刚在网络中得到一条坏消息,虽然还不太确信,但仍然转给大家: Todd Brooks, posted at 26 Jul 2006, 11:53 PM UTC: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=517576&SiteID=1&PageID=2 Looks like NDoc 2.0 is dead. I received this email from Kevin Downs (developer of NDoc) this morning:" I have decided to discontinue work on NDoc 2.0 and no longer participate in any open-source development work.   The development and release of NDoc 1.3 was a huge amount of work, and by all accounts widely appreciated. Unfortunately, despite the almost ubiquitous use of NDoc, there has been no support for the project from the .Net developer community either financially or by development contributions. Since 1.3 was released, there......[阅读全文]

posted @ | Feedback (11) |