.NET 辅助设计 工具箱

基于.NET平台的开发及辅助设计工具也非常丰富了,这里是我总结的一些,会对我们的开发工作提供不少信息及指导。

1.
Patterns & practices
[模式与设计]

微软"模式与实践"宗旨在于通过提供一系列的成熟设计模式及经验乃至原型系统源代码,帮助广大开发团队进行更好的设计及技术选型;同时也通过提供经过微软自身实践验证的高效软件开发流程及实践,帮助开发团队顺利的搭建团队并实现高效开发。目前主要研究方向有:敏捷软件开发,Enterprise
Library,Application Architecture,Composite Application Guidance, Software
Factory等等。

—————————————————————————————————————–

微软pattern
& practices小组日前发布了Enterprise Library
5.0,这是一套应用程序模块,可以用来为企业应用程序构建模块,它是微软关于如何编写良好的应用程序的指导。该类库包含了大量的改善,包括Unity
2.0,以及对.NET 4.0的支持。

—————————————

微软Enterprise
Library 5.0

2.
Spring.NET
[模式与设计]

Spring.NET
是一个关注于.NET企业应用开发的应用程序框架。它能够提供宽广范围的功能,例如依赖注入、面向方面编程(AOP)、数据访问抽象,
以及ASP.NET集成等。基于java的spring框架的核心概念和价值已被应用到.NET。Spring.NET 1.0
包含一个完全功能的依赖注入容器和AOP库。后续的发布将包含对ASP.NET、Remoting和数据访问的支持。在很多情况下,你可以在我们的下载网站中发现可以工作的计
划模块的实现。

源文档 <http://www.oschina.net/p/spring.net>

简而言之Spring.NET就是利用各种强大的设计模式做为工具来管理我们的项目体系结构。
Spring.NET使用优秀和久经考验的设计模式,使我们能够科学合理的管理和整合我们企业级开发中的各个层面及一些分散的组件,并良好的协调和处理它们之间的关系,增强项目的健壮性。

3.

All-In-One Code
Framework!

[参考实现]

微软一站式代码示例库
通过不同编程语言和典型示例勾画出微软所有开发技术的骨架。身处微软MSDN技术支持团队,我们有丰富的客服经验。项目中每一个示例都经我们精心设计、筛选、编排和文档化,从而演示那些经常被客户问到、或被测试人员测试到的编程场景。如果您是一位软件开发工程师,您可以向这个框架填充您的业务逻辑;如果您是测试人员,您可以对某个技术骨架稍作扩展以满足您的实际测试需要;如果您和我们一样,是技术支持工程师,您可以考虑将本项目中的示例代码推荐给您的客户。

今天是2009年10月18日,All-In-One代码示例库已涵盖22种像Windows
7,SilverLight 3在内的微软开发技术的
230个代码示例。我们以“每周6例”的速度在成长着,您可以在All-In-One Code Framework Sample Catalog找到最新的示例代码。

Sample
Catalog

4.
23个.NET开源项目
[参考实现]

23个UK开发人员推荐的.NET开源项目。微软的一些开源项目如ASP.NET
MVC、DLR、IronRuby、IronPython、MEF等则未列入其中。

Eric尝试只包含一个测试框架和一个mock框架,即使有很多其它的项目同样入围
5.
开源社区中丰富的开源项目
网上的开源社区中有丰富的开源项目可供参考,跟据当前项目需要,可以找到相应的原型,在此基础上二次开发会更有效率。

 

.NET与 Java 对应技术

.NET能做的任何事,Java都可以做到,反之亦然。还有一个事实是:两种平台各有特殊的兴趣领域,并且它们在各自的领域做得都很好。

因此分别了解他们的相同点,不同点,各自的长处,对可能的综合系统的开发会有所帮助.于是决定整理一份.NET与JAVA详细技术的对应关系表.下面这份表不是绝对的一一对应,而是相应的应用范围的对应,加之Java实际的应用非常有限,所以今后我会不断完善此表,也希望.NET与Java的高手们能指出表中的不正确之处.
Category
.NET
Technologies
Java
Technologies
Application Infrastructure
Common Language Runtime (CLR)
.NET Framework
Java virtual machine(JVM)
Standard java packages
Enterprise  services
Enterprise services
EnterpriseJavaBean(EJB)
Spring
[ J2EE ]
Mobile
.NET Compact Framework
ASP.NET Mobile
Silverlight Mobile
J2ME
Web
ASP.NET
ASP.NET MVC
Java server pages (JSP)
Struct
[ Weblogic ]
Rich Internet Application
(RIA)
Microsoft Silverlight
JavaFX
Rich Client
Windows Forms
Windows Presentation Foundation
(WPF)
Swing, SWT
J2SE
Java3D
Services
ASP.NET Web Services (ASMX)
Windows Communication Foundation
(WCF)
Java API for XML Processing (JAXP)

Java API for XML Registries (JAXR)
Java API for XML-based RPC (JAX-RPC)

SOAP with Attachments API for Java (SAAJ)
Collaboration / Integration /
Workflow
Windows Workflow Foundation (WF)
Microsoft Office SharePoint® Server
(MOSS)
Microsoft BizTalk® Server
Java Message Service

 
Web Server
Internet Information Services
(IIS)
Apache server, Resin
Database Server
Microsoft SQL Server
MySql,Oracle
Object-Relational Mapping
ADO.NET Entity Framework
ADO.NET
JDBC
Hibnate 
听到比较多的声音是".Net最大的优势是简单和window结合紧密,java的优势在于跨平台和大型企业应用",但也都是在变化当中,没有什么是彼此做不到的.用代码大全中的一句话,"要深入一门语言来编程,而不只浮于表面".
 最后引用马克斯的一句名言,“对每一个项目而言,应该根据自己的需要充分发挥其所需平台的能力。”( From each platform,
according to its abilities, to each project, according to its needs.)

 

Application Architecture Guide 2.0

       "P&P(设计模式与最佳实践,patterns &
practices
)自2002年推出第一个.NET项目分层架构图至今已经6年多,面对服务化、移动及智能化、富浏览器客户端、P2P应用的需求,原有架构需要结合.NET最新的技术进一步细化,这样才能为架构师和开发人员提供更好的指导作用,近期微软P&P团队启动了应用架构指南(Application Architect
Guide
)V2.0项目。"

    在这里己经有CTP版的PDF格式下载。
       
在这里有更多介绍:
 http://msdn.microsoft.com/en-us/practices/default.aspx

     对于从事.net架构开发者一定会喜欢看的一本书吧,正在浏览中,以下转载一点介绍:
这是一本讲述在.NET Framework上设计应用架构时需要遵循的原则、模式及实践的书。其读者定位在解决方案架构师和开发经理。
  1. 第一部分“基本原则”介绍了理解架构设计技术和策略所需的基本原则。

     
  2. 第二部分“设计”介绍了可用于任何应用类型或应用层的拱形设计方案和最佳实践,包括如何为服务设计通信和计划。

     
  3. 第三部分“层”介绍了架构与设计方法以及每一层的最佳实践,包括展示层、业务层、服务层和数据访问层。

     
  4. 第四部分“质量品质”介绍了关于质量品质的详细指南,如安全、性能等。

     
  5. 第五部分“原型——设计与模式”介绍了针对每种应用类型原型的模式与设计框架,包括服务应用、Web应用、富客户端应用、富Internet应用及移动应用。
根据patterns & practices的首席程序经理及合作者J.D. Meyer所述,这本书通过以下内容为大家带来帮助
  1. 为应用选择正确的架构
  2. 选择正确的技术
  3. 为关键的工程决策作出更有效的选择
  4. 映射恰当的策略和模式
  5. 映射相关的模式&实践解决方案
该指南考虑到了如下因素:应用类型、架构风格、架构框架、场景、质量品质及需求/约束

 

关于多域名WCF配置出错问题

当只有一个域名(如www.a.cn)指向程序时,一切ok
当另外一个域名(如a.cn)也指向程序时,html页面可以访问,但是wcf出错

错误提示:此集合已经包含方案 http 的地址。此集合中每个方案中最多只能包含一个地址

曾被这个问题困挠了许久,在网上也搜了好久,哈哈,终于找到了解决办法
通过在webconfig里面添加这个解决了这个问题:

<serviceHostingEnvironment>
   
<baseAddressPrefixFilters>
        <add prefix="http://www.a.cn" />
   
</baseAddressPrefixFilters>
</serviceHostingEnvironment> 

我试过这样是可行的,当然,还有更复杂的解决办法如“通过添加ServiceHostFactory”
这是好不容易找到的解决方案的地址:VIEW

 

.NET CF Framework中 控件显示(加载)顺序的问题

         最近在写Iditu相关的代码时,遇到一个不小的问题,一个动态生成的自定义的用户控件会被另一个控件掩盖,即使他们是在不同的屏幕位置。
         尝试了在可视窗口置为最前端,BringToFront(),Control.Parent=this 等处理方式,但似乎都不管用。

         后来发现,跟This.Controls.Add(Control)
的位置有关,在OnPain的时候,先绘制自定义的用户控件然后再This.Controls.Add(ControlB)
另一个控件,这样,ControlB就能不被遮挡可以正常显示了。

 

Windows API,MFC,与.NET

写一篇类似自传性质的对Windows编程技术自己的认识.
最早接触的是QBASIC,想必当年玩过小霸王学习机的用户都有感触,除了带的8位游戏机的功能,对这个是最感兴趣的.高中自学了C,大学系统一点学C又自学了C++,偶然的机会,看了ASP在学校网站做Web程序员,没过多久我把网站的后台改成了ASP.NET,于是乎接触了C#近三年.

毕后的第一份工作,嵌入式的手机系统,用的是C与C++,半年的时间,看完了<<EffectiveC++>>等几本书,由于手机系统的应用层,部分是参照Windows设计的于是又半年看完了<<WindowsAPI程序设计>>,系统中的消息机制是参考MFC来做的,于是下个半年在看<<MFC
Windows程序设计>>.

现在是"云"的时代,分布一直都是我比较感兴趣的,大学时做过第一个分布式应用,感觉很好.所以现在在看WCF,也许起初认为还挺简单,但越到后面配置起来相当的复杂.
Windows API,MFC,.NET是编程技术的进步,给编码人员挺供了越来越舒适的编码环境,没有谁好谁坏,跟据不同的场景,最好适的就是最好的.

 

App_code与独立类库

  在做Withmobile相关的代码的时候,由于要有不少的相关类,开始的时
候都在Web项目的App_code文件夹里(在这里的好处就不用多说了)后来看到一 些比较大的项目如CHSNS(半开源),分了好几个大的类库项目,计划着也更改
Withmobile的相关类,但实现起来确感觉不很是方便,更改类库要重新编译 与更新,而在App_code中就不用,于是想一秒招,在App_code中建立相应的
字目录,待项目稳定下来再移到单独的类库当中:>

  Withmobile更换了数据库,由Access换成了Sql Server,一个很重要的
原因Access不支持存储过程,由于开始的时候没有做成独立的数据库工厂, 导致更换要费很多功夫。

 

.Net Compact Framework 3.5对WCF的支持

这两天在模拟器上成功调用了WCF服务(用自己的PPC没成功),.Net Compact Framework
3.5中WCF是完整WCF的一个子集,但在移动终端上会有着很大的用途,可以兼顾移动性与台式机服务器的强大的运算能力,在3G宽带的保证下,用于提供为移动服务的SOA前景非常光明。

 

WCF 阶段总结

在大学的时候做过一个Web
Service的应用,一个桌面的智能客户端连接到学校的服务器对其上的资源进行检索,而不用登录网站。最近研究WCF,如用它来做同样的事,就可以以更高的效率来进行,Web
Service必须得通过Http,而WCF可以选择TCP通道进行传输,在大学相对稳定的局域网中通过TCP来传应该会比较快点。还可以利用WCF来对服务对象进行认证,为不同的人提供差异化的服务。综上,WCF是挺好用的一种分布式技术。

 

对飞鸽传书2.04中文版自动更新消息的屏蔽

公司里使用飞鸽传书做为内部交流的工具,此次修改自动屏蔽了飞鸽传书中那条烦人的2.04中文版的自动广播升级消息,只在Log文件中有记录。
      
在源代码中找到以下面红色开始的区域,蓝色的为修改后的,当收到消息时,对附件文件名进行判定,如果是则更变状态变量,使窗口不再弹出。

BOOL
newStatus=TRUE;
 
……
if (msg.command & IPMSG_FILEATTACHOPT)
 {
  if
((shareInfo = DecodeShareMsg(msg.msgBuf + msg.exOffset)) !=
NULL)
  {
      char *tName="IPMSG2.exe";
   const
char
*name=shareInfo->fileInfo[0]->Fname();
      if(strcmp(name,tName)==0)
     
{
    newStatus = FALSE;
      }

   fileObj = new
RecvFileObj;
   memset(fileObj, 0,
sizeof(RecvFileObj));
  }
 }
…….
status = newStatus;
要小心的是,避免传送以IPMSG2.exe为文件名的文件:)