Atlas — AJAX the Microsoft way

[来源:Don Box] 据News.Com:

“Not to be left out of any development trends, Microsoft is working to simplify the job of building so-called AJAX applications, or Web applications with sophisticated graphics”

在ASP.NET之父Scott Guthrie的网站上题为“Atlas Project”的blog里,他宣布了ASP.NET 2.0对AJAX的支持的详细内容,其中包括

1。Atlas Client Script Framework,包括
  o An extensible core framework that adds features to JavaScript such as lifetime management, inheritance, multicast event handlers, and interfaces
  o A base class library for common features such as rich string manipulation, timers, and running tasks
  o A UI framework for attaching dynamic behaviors to HTML in a cross-browser way
  o A network stack to simplify server connectivity and access to web services
  o A set of controls for rich UI, such as auto-complete textboxes, popup panels, animation, and drag and drop
  o A browser compatibility layer to address scripting behavior differences between browsers.

2。ASP.NET Server Controls for Atlas,将推出新的支持AJAX风格的ASP.NET Server Controls ,同时更新现有Server Controls 以支持Atlas Client Script Framework

3。ASP.NET Web Services Integration,Atlas应用将能通过Atlas Client Script Framework访问ASMX 或Indigo 服务,该框架自动处理代理编码生成以及对象序列化

4。ASP.NET Building Block Services for Atlas, ASP.NET 2.0中的服务(Profile,UI Personalization,Authentication,Roles)可以通过Web Service的形式出现,可以通过Atlas Client Script Framework来访问

5。Client Building Block Services 将提供方便的API来访问浏览器本地的缓存,以及跟本地应用的集成等

6。下一步包括对类似项目的支持的工具的改进,同时这些服务器端的新服务(Building Block Services 和 Client Building Block Services )将来也可以通过Avalon来访问

微软准备在9月的PDC上推出Atlas的技术预览版

WebService返回DataSet/DataTable的争议

昨天在MSN上跟蝈蝈辩论WebService返回DataSet/DataTable的做法是否很好,没有取得一致观点。

其实这不完全是WebService的问题,而是涉及在总的应用架构里使用DataSet/DataTable的问题。

我同意,这个问题不能一概而论。假如你的应用inherently没什么业务逻辑或者你的应用很简单(虽然大概要怀疑一下,简单的应用使用WebService的必要性),或者你的目的就是把数据库里的数据显示出来,那就用DataSet/DataTable好了。DataSet/DataTable到底提供了不少有用的方法(过滤/排序/。。。),而且具有在修改后端数据库后,不用修改中间编码,修改显示层的绑定编码即可将变动反应出来的灵活性。

但DataSet/DataTable往往反映了你的数据库里的Schema,你的表现层跟你的数据库里的东西的耦合如此之强,是否恰当,应该是个需要考虑的问题。但一想到DataSet/DataTable如此地方便,灵活,而且因此编码过程效率很高,何乐不为呢?

而且,一般来说,你的应用并不是只用来显示数据的,往往需要编辑(添加/修改/删除)数据。但DataSet/DataTable这样的容器提供了很好的功能,能帮你记住你的数据的状态,很符合Martin Fowler的PEAA一书里的Unit of Work模式。然后到最后,你可以用DataAdapter一次性地(虽然其中操作并不是一次性)把数据更新到数据库去。

听上去很美妙,对么?

然后你就会在很多地方操作DataSet/DataTable,即使编码难以避免地会有点重复,而且你是在直接操作数据,心里会有点不安,但想到DataSet/DataTable的种种好处,哎,这么方便。。。。before you know it,类似的操作会散居各个逻辑层,哎,什么domain model,我这database-driven programming也蛮好的。。。等到要维护时,或需要改版时再看,业务逻辑象映山红般满山遍野。。。。哎,反正我的项目比较小,重头开始吧。。。。If you didn’t learn anything here, we will be looking forward to another unmaintainable project。。。。(有点夸张)

Scott Hanselman说,“Returning DataSets from WebServices is the Spawn of Satan and Represents All That Is Truly Evil in the World (从WebService返回DataSet,是撒旦的产物,代表了世界上一切真正邪恶的东西)”,虽然我没那么极端,但真想说,Amen!

相关连接

  1. Aaron Skonnard谈到从WebService返回DataSet对Interoperability的影响

  2. Scott Hanselman又说,DataSet是只碗,不是水果,强类型DataSet是只上面画了个苹果的碗而已

  3. Karl Seguin在MSDN上的文章“掌握 ASP.NET 之路:自定义实体类简介”里指出了DataSet的问题

  4. Barry Gervin不同意,罗列了DataSet的种种好处

  5. Jelle Druyts也不同意,称DataSet不是邪恶

  6. 模式和实践里的2篇关于把DataSet用作DTO的文章,总结了其中的优弱点
    Implementing Data Transfer Object in .NET with a DataSet
    Implementing Data Transfer Object in .NET with a Typed DataSet

TechEd blog 拾慧 (2)

摘自微软 TechEd 2005 Bloggers站点(12)

星期一,微软 CEO Steve Ballmer在名为《The New World Of Work》的keynote演讲[可以在这里收看到该演讲,来源:Kevin Bird]里谈到了微软,特别是Windows 2003,在安全方面的进步,但强调,”None of this is meant to indicate the work is done”。

很多人提到了微软安全工具部的高级项目主管Jesper M. Johansson的《Anatomy of a Network Hack: How to get your network hacked in 10 easy steps》讲座,都是感触良多。Ben Winzenz 对他的讲座做了比较详细的记录。

其中提到的网络不安全的10个危险做法

  1. 不打任何安全补丁.
    2. 运行不经过强化过安全的应用软件
    3. 在每个地方都用同一个管理员账号
    4. 在火墙上打开很多端口
    5. 允许不受限制的内网通讯
    6. 允许所有的外流通讯
    7. 不对服务器加强安全措施
    8. 重用你的密码
    9. 在很多地方使用高层服务账号
    10. 假定一切都正常

而你应该做的是

1.确认一切都恰当地打过补丁了
2. 使用恰当强化过安全的应用软件
3. 使用最低权限
4. 在火墙里只打开必要端口
5. 限制内网通讯
6. 限制外流通讯
7. 强化服务器的安全
8. 使用不重复的密码或保全卡(Smart Card)
9. 严格管理服务账号
10. 保持一种健康的安全恐惧感

Jesper M. Johansson著有《从外围到数据,保护你的Windows网络(Protect Your Windows Network: From Perimeter to Data)》一书。

另一篇blog提到了一个很有意思的产品,虽然听上去有点。。。,等有时间了,也许可以试一下。DevInspect and SecureObjects,是个Visual Studio.Net的插件,DevInspect可以检查你的应用是否犯了已知的过百个常见安全漏洞中的某些毛病,而SecureObjects则可以改变你的编码来摒除问题,同时能强化你的应用的安全措施,产生详细的安全日志等等…..

.NET 企业服务一书

Christian Nagel著的《使用.NET框架中的企业服务开发分布式业务方案(Enterprise Services with the .NET Framework: Developing Distributed Business Solutions with .NET Enterprise Services)》一书终于出版了,从网上的初评看上去蛮好的,请同事在TechEd留心了一下,据说比AmazonBookpool卖得还贵,。该书的第七章《事务服务》可以在searchWin2000上下载。

该书介绍了企业服务(Enterprise Services)中的四大服务:自动事务,队列组件,松耦合事件,和基于角色的安全(译自该书出版商Addison-Wesley网站):
1。怎样生成一个服务组件(serviced component),服务对象(serviced objects)是如何激活的,如何使用不同种类的对象运行环境(object contexts)
2。怎样管理服务组件之并发性与同步性以实现最佳性能和数据之完整性
3。怎样与 .NET 框架集成 COM 组件
4。怎样用DCOM,SOAP服务,和ASP.NET Web服务在网络上使用服务组件
5。怎样使用企业服务事务实现ACID(原子性、一致性、隔离性和持久性)
6。怎样构造补偿资源管理器来允许你自己的资源参加企业服务事务
7。怎样在客户端应用,服务组件,共享特性或数据库中保持应用状态
8。怎么在COM+中创建和使用松耦合事件
9。怎么使用授权,认证,身份模拟(impersonation)和保密来确保分布式方案之安全
10。如何部署和配置企业服务应用

该书目前在书店尚未发行,但想征询一下大家的意见,看是否有翻译成中文之必要。假如已经有人或出版社获得授权在翻译了,也请告知,谢谢!

TechEd blog 拾慧

摘自微软 TechEd 2005 Bloggers站点(12)

  1. [来源: Eric Hammersley] Visual Studio 2005, SQL Server 2005和BizTalk Server 2006发行日子确定,将于今年11月7日那周推出。

官方网址: http://msdn.microsoft.com/launch2005/

  1. [来源: Steele Price]微软将于06年元月推出架构师认证考试,分为2种,解决方案架构师(Solution Architect)和基础设施架构师(Infrastructure Architect):
      1。很贵的付费认证(几千美元的量级)
      2。有导师指导和辅助你的训练
      3。必须承诺获取认证后原意成为别人的导师
      4。有专门的认证监督会

怎么听上去象Jedi(绝地武士)似的? 

  1. You need to have high midi-chlorian count
  2. A Jedi master will train you (padawan learner)
  3. After trial, you become Jedi master
  4. There is a Jedi Committee

  1. [来源: Dr. International]Globalization(全球化), Localization(本地化) 和Internationalization(国际化)的正式含义

Diagram of Internationalization

Internationalization: The process of creating a product that is world-ready and customized for a given language and regional market.

Globalization: Designing software for the input, display, and output of a defined set of Unicode supported language, scripts and data relating to specific locales and cultures.

Localization: The process of customizing or translating the separated data and resources needed for a specific language-locale pair

  1. [来源:Richie Rump] 从ASP.NET 1.1到ASP.NET 2.0的迁移

1。不同虚拟目录能运行不同版本的.NET Framework
2。Forms认证cookies可以在1.1 和2.0.版本间通用
3。新的保留目录
4。ASP.NET兼容XHTML
5。客户端脚本可以是资源assembly的一部分
6。2000多个新类(看来又要累死人了)
7。VS 2005 特点:不再有项目文件,不再生成单一DLL,调试时可以改动源码而不需重新启动,在同一项目中可以用多种编程语言
8。VS 2003到 VS 2005是单程转换
9。新的code behind 模型
10。动态编译模型
11。可以用aspnet_complier预编译

  1. [来源:Adam Nathan] 新的MVP Logo将在在6月14日推出

Phishing 无国界

最近在写篇关于网络钓鱼(Phishing)方面的主动保护的文章,还没落笔,一起针对中国银行的 Phishing 事件又发生在面前 …

这个假冒中国银行的网站域名是 www.boconline.org ,现在可能已不能访问了,但前两天我登录上去看了看,页面内容、风格做的挺像,左上角的 “Corporation Banking” 的登录链接 URL 是 “h://icbc/login.asp” ,大概查了一下此域名的登记地址及 ISP 都是印度的。

从这个简单事件可以看出:

  • 网络钓鱼也开始全球化了,连接阿三也敢来中国凑热闹 …
  • 针对的对象已不仅是个人(对私)用户了,连公司(对公)用户也成为目标,谁不知道公司帐户上钱多呀
  • ICBC,是不是很熟悉?这不是中国工商银行嘛!看来此君也是钓鱼专业户呀,惦记得还不少,顺藤摸瓜,发现竟然还有个工商银行的假冒网站:www.icbconline.com(做的也挺像,赶紧去看看吧),刚才已经给 [email protected] 报告了此事,看他们的处理办法和速度了

在前几年,估计没人会想到 Phishing 这种技术上小儿科的东西会给金融机构,安全界带来如此大的尴尬,人家在印度随便下个钩,就可以钓鱼了,虽然成功的机率也不大,但不怕贼偷,就怕贼惦记呀,况且这些大银行的脸上也挂不住呀,咱中国的公安机关也鞭长莫及,短时间奈人家不得呀 …

对付这种情况,提几点主动保护想法:

1) 加强相似域名及新产生的 Web 页的扫描,及早发现 Phishing 网站(估计工行现在还没发现这个假网站呢)

2) 学老美,“先发制人”,正式渠道治不它,只能找几个黑客来攻击它,以暴治暴,呵呵。

3) 对用户教育,教育,再教育。