﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-C++ Programmer's Cookbook-随笔分类-64bit/FW3.5</title><link>http://www.cppblog.com/mzty/category/3174.html</link><description>&lt;a href = "http://www.cppblog.com/mzty/archive/2007/03/02/19109.html"&gt;&lt;font size = 3 &gt;{C++ 基础}&lt;font/&gt;&lt;/a&gt;

&lt;a href = "http://www.cppblog.com/mzty/archive/2007/08/13/29922.html"&gt;&lt;font size = 3 &gt;{C++ 高级}&lt;font/&gt;&lt;/a&gt;

&lt;a href = "http://www.cppblog.com/mzty/archive/2007/04/16/22064.html"&gt;&lt;font size = 3 &gt;{C#界面，C++核心算法}&lt;font/&gt;&lt;/a&gt;

&lt;a href = "http://www.cppblog.com/mzty/archive/2007/03/04/19163.html"&gt;&lt;font size = 3 &gt;{设计模式}&lt;font/&gt;&lt;/a&gt;

&lt;a href = "
http://www.cppblog.com/mzty/archive/2007/03/04/19167.html"&gt;&lt;font size = 3 &gt;{C#基础}&lt;font/&gt;&lt;/a&gt;





</description><language>zh-cn</language><lastBuildDate>Fri, 20 Feb 2009 03:38:43 GMT</lastBuildDate><pubDate>Fri, 20 Feb 2009 03:38:43 GMT</pubDate><ttl>60</ttl><item><title>本博客所有精华随笔索引</title><link>http://www.cppblog.com/mzty/archive/2008/01/17/41318.html</link><dc:creator>梦在天涯</dc:creator><author>梦在天涯</author><pubDate>Thu, 17 Jan 2008 02:14:00 GMT</pubDate><guid>http://www.cppblog.com/mzty/archive/2008/01/17/41318.html</guid><wfw:comment>http://www.cppblog.com/mzty/comments/41318.html</wfw:comment><comments>http://www.cppblog.com/mzty/archive/2008/01/17/41318.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/mzty/comments/commentRss/41318.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/mzty/services/trackbacks/41318.html</trackback:ping><description><![CDATA[<p><br>总结：<a href="http://www.cppblog.com/mzty/archive/2007/08/13/29922.html"><br><br>http://www.cppblog.com/mzty/archive/2007/08/13/29922.html</a>&nbsp; C++高级</p>
<p><a href="http://www.cppblog.com/mzty/archive/2007/03/02/19109.html">http://www.cppblog.com/mzty/archive/2007/03/02/19109.html</a>&nbsp; C++基础</p>
<p><a href="http://www.cppblog.com/mzty/archive/2007/04/16/22064.html">http://www.cppblog.com/mzty/archive/2007/04/16/22064.html</a>&nbsp; C#界面，C++核心算法</p>
<p><a href="http://www.cppblog.com/mzty/archive/2007/03/04/19163.html">http://www.cppblog.com/mzty/archive/2007/03/04/19163.html</a>&nbsp; 设计模式</p>
<p><a href="http://www.cppblog.com/mzty/archive/2007/03/29/20893.html">http://www.cppblog.com/mzty/archive/2007/03/29/20893.html</a>&nbsp; 64bit，FW3.0随笔分类 </p>
<p><a href="http://www.cppblog.com/mzty/archive/2007/03/29/20892.html">http://www.cppblog.com/mzty/archive/2007/03/29/20892.html</a>&nbsp; windows脚本技术</p>
<p><a href="http://www.cppblog.com/mzty/archive/2007/03/04/19167.html">http://www.cppblog.com/mzty/archive/2007/03/04/19167.html</a>&nbsp; C#基础</p><img src ="http://www.cppblog.com/mzty/aggbug/41318.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/mzty/" target="_blank">梦在天涯</a> 2008-01-17 10:14 <a href="http://www.cppblog.com/mzty/archive/2008/01/17/41318.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WCF，Net remoting，Web service概念</title><link>http://www.cppblog.com/mzty/archive/2007/10/24/35068.html</link><dc:creator>梦在天涯</dc:creator><author>梦在天涯</author><pubDate>Wed, 24 Oct 2007 09:19:00 GMT</pubDate><guid>http://www.cppblog.com/mzty/archive/2007/10/24/35068.html</guid><wfw:comment>http://www.cppblog.com/mzty/comments/35068.html</wfw:comment><comments>http://www.cppblog.com/mzty/archive/2007/10/24/35068.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/mzty/comments/commentRss/35068.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/mzty/services/trackbacks/35068.html</trackback:ping><description><![CDATA[<p>今天看到WCF，说是整合了Net remoting，Web service。。。下面列一下概念。<br><br>一 WCF<br>概括地说，WCF具有如下的优势：<br>&nbsp;&nbsp;&nbsp; 1、统一性<br>&nbsp;&nbsp;&nbsp; 前面已经叙述，WCF是对于ASMX，.Net Remoting，Enterprise Service，WSE，MSMQ等技术的整合。由于WCF完全是由托管代码编写，因此开发WCF的应用程序与开发其它的.Net应用程序没有太大的区别，我们仍然可以像创建面向对象的应用程序那样，利用WCF来创建面向服务的应用程序。<br>&nbsp;&nbsp;&nbsp; 2、互操作性<br>&nbsp;&nbsp;&nbsp; 由于WCF最基本的通信机制是SOAP，这就保证了系统之间的互操作性，即使是运行不同的上下文中。这种通信可以是基于.Net到.Net间的通信。</p>
<p>&nbsp;&nbsp;&nbsp; 可以跨进程、跨机器甚至于跨平台的通信，只要支持标准的Web Service，例如J2EE应用服务器（如WebSphere，WebLogic）。应用程序可以运行在Windows操作系统下，也可以运行在其他的操作系统，如Sun Solaris，HP Unix，Linux等等。</p>
<p>&nbsp;&nbsp;&nbsp; 3、安全与可信赖<br>WS-Security，WS-Trust和WS-SecureConversation均被添加到SOAP消息中，以用于用户认证，数据完整性验证，数据隐私等多种安全因素。<br>在SOAP的header中增加了WS-ReliableMessaging允许可信赖的端对端通信。而建立在WS-Coordination和WS-AtomicTransaction之上的基于SOAP格式交换的信息，则支持两阶段的事务提交（two-phase commit transactions）。<br>&nbsp;&nbsp;&nbsp; 上述的多种WS-Policy在WCF中都给与了支持。对于Messaging而言，SOAP是Web Service的基本协议，它包含了消息头（header）和消息体(body)。在消息头中，定义了WS-Addressing用于定位SOAP消息的地址信息，同时还包含了MTOM（消息传输优化机制，Message Transmission Optimization Mechanism）。</p>
<p>&nbsp;&nbsp;&nbsp; 4、兼容性<br>&nbsp;&nbsp;&nbsp; WCF充分的考虑到了与旧有系统的兼容性。安装WCF并不会影响原有的技术如ASMX和.Net Remoting。即使对于WCF和ASMX而言，虽然两者都使用了SOAP，但基于WCF开发的应用程序，仍然可以直接与ASMX进行交互。</p>
<p>&nbsp;</p>
<p>二 WebService的运行机理 </p>
<p>首先客户端从服务器的到WebService的WSDL，同时在客户端声称一个代理类(Proxy Class)， 这个代理类负责与WebService服务器进行Request 和Response， 当一个数据（XML格式的）被封装成SOAP格式的数据流发送到服务器端的时候，就会生成一个进程对象并且把接收到这个Request的SOAP包进行解析，然后对事物进行处理，处理结束以后再对这个计算结果进行SOAP包装，然后把这个包作为一个Response发送给客户端的代理类(Proxy Class)，同样地，这个代理类也对这个SOAP包进行解析处理，继而进行后续操作。</p>
<p>三 .net Remoting</p>
<p>是在DCOM等基础上发展起来的一种技术，它的主要目的是实现跨平台、跨语言、穿透企业防火墙，这也是他的基本特点，与WebService有所不同的是，它支持HTTP以及TCP信道，而且它不仅能传输XML格式的SOAP包，也可以传输传统意义上的二进制流，这使得它变得效率更高也更加灵活。而且它不依赖于IIS，用户可以自己开发(Development)并部署(Dispose)自己喜欢的宿主服务器，所以从这些方面上来讲WebService其实上是.netemoting的一种特例。</p>
<p>区别：</p>
<p>1、Remoting可以灵活的定义其所基于的协议，比如http，tcp等，如果定义为HTTP，则与Web Service相同，但是webservice是无状态的，使用remoting一般都喜欢定义为TCP，这样比Web Service稍为高效一些，而且是有状态的。</p>
<p>2、Remoting不是标准，而Web Service是标准。</p>
<p>3、Remoting一般需要通过一个WinForm或是Windows服务进行启动，也可以使用iis部署，而Web Service则必须在IIS进行启动。</p>
<p>4、在VS.net开发环境中，专门对Web Service的调用进行了封装，用起来比Remoting方便。</p>
<p>5 net remoting只能应用于MS 的.net framework之下，需要客户端必须安装framework，但是WebService是平台独立的，跨语言（只要能支持XML的语言都可以） 以及穿透企业防火墙。</p>
<p><br>来自MSDN：<a href="http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/builddistapp/ASP.NETWebServicesor.NETRemoting-HowtoChoose.mspx?mfr=true">http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/builddistapp/ASP.NETWebServicesor.NETRemoting-HowtoChoose.mspx?mfr=true</a></p>
<p>分布式应用程序设计：ASP.NET Web 服务和 .NET Remoting</p>
<p>ASP.NET Web 服务偏向于 XML Schema 类型系统，提供具有广泛使用范围的跨平台支持的简单编程模型。.NET Remoting 偏向于运行时类型系统，提供较为复杂而且使用范围小得多的编程模型。这种本质上的差别是决定使用哪种技术的主要因素。但是，还要考虑很多其他设计因素，包括传输协议、主机进程、安全性、性能、状态管理以及对事务的支持等。</p>
<p>传输协议和主机进程</p>
<p>尽管 SOAP 规范并不要求用 HTTP 作为传输协议，但是客户端只能通过 HTTP 访问使用 ASP.NET Web 服务实现的 Web 服务，因为它是 ASP.NET 支持的唯一一种传输协议。服务是通过 IIS 调用的，并在 ASP.NET 的辅助进程 aspnet_wp.exe 中执行。</p>
<p>.NET Remoting 使您能够在任何类型的应用程序（包括 Windows 窗体、托管的 Windows 服务、控制台应用程序或 ASP.NET 辅助进程）中灵活地托管远程对象。正如前面所述，.NET Remoting 提供两个传输信道——TCP 和 HTTP。这两个信道都能使用套接字提供任意发送和接收进程之间的通信。</p>
<p>它还能将 HTTP 信道与 IIS 和 ASP.NET 辅助进程集成。这一点很重要，原因有以下几点。首先，它是当客户端请求到达时自动启动 .NET Remoting 端点的唯一方法。.NET Remoting 管线不包括启动远程服务器所需的 DCOM 类型的服务控制管理器 (SCM)。如果从任意进程中提供远程对象，则需要确保那些进程正在运行。还必须确保它们是线程安全的，例如，线程 A 不能在线程 B 开始关闭进程之后激活对象。如果从 ASP.NET 提供远程对象，则可以利用 Aspnet_wp.exe 辅助进程，这样既可自动启动又具有线程安全的优势。第二，与 IIS 集成是确保跨进程 .NET Remoting 调用的唯一途径，如下一节所述。</p>
<p>ASP.NET Web 服务和 .NET Remoting 基础结构都是可扩展的。您可以过滤入站和出站消息，从多方面控制类型封送和元数据的生成。使用 .NET Remoting，还能实现您自己的格式化程序和信道。 </p>
<p>安全性</p>
<p>由于 ASP.NET Web 服务依赖于 HTTP，因此它们与标准的 Internet 安全性基础结构相集成。ASP.NET 利用 IIS 的安全性功能，为标准 HTTP 验证方案（包括基本、简要、数字证书，甚至 Microsoft? .NET Passport）提供了强有力的支持。（还可以使用 Windows 集成验证，但只能用于信任域中的客户端。）使用可用的 HTTP 验证方案的一个优势在于，无需在 Web 服务中更改代码，IIS 是在 ASP.NET Web 服务被调用之前执行验证的。ASP.NET 还支持基于 .NET Passport 的验证和其他自定义的验证方案。ASP.NET 支持基于目标 URL 的访问控制，并通过与 .NET 代码访问安全性 (CAS) 基础结构的集成支持访问控制。SSL 可用于确保通信的安全。</p>
<p>尽管这些标准传输技术对于确保 Web 服务相当有效，但它们只能做到这种程度。在涉及到不同信任域中多个 Web 服务的复杂情况下，还得建立自定义的特殊解决方案。Microsoft 和其他公司正致力于创建一套安全性规范，该规范将基于 SOAP 消息的可扩展性提供消息级别的安全性功能。这些规范之一是 XML Web 服务安全性语言（WS-Security），它为消息级别的凭据传输、消息完整性和消息保密定义了框架。</p>
<p>正如上一节所述，一般情况下，.NET Remoting 管线不能确保跨进程调用的安全。使用 ASP.NET 托管于 IIS 中的 .NET Remoting 端点可以利用 ASP.NET Web 服务可用的所有安全性功能，包括对使用 SSL 确保有线通信的安全性的支持。如果您正在使用托管在进程中的 TCP 信道或 HTTP 信道（而不是 aspnet_wp.exe），则必须自己执行身份验证、授权和保密机制。 </p>
<p>另一个要关注的安全性问题是，在不必更改默认安全性策略的情况下，从不完全信任的环境中执行代码的能力。ASP.NET Web 服务客户端代理可以在这些环境中工作，但 .NET Remoting 代理则不能。要从不完全信任的环境中使用 .NET Remoting 代理，需要特殊的序列化权限。默认情况下，该权限不会授予从 Intranet 或 Internet 上下载的代码。如果要在不完全信任的环境中使用 .NET Remoting 客户端，则需要更改从那些区域中加载的代码的默认安全性策略。当您从运行于沙箱（如下载的 Windows 窗体应用程序）中的客户端连接到系统时，ASP.NET Web 服务是较简单的选择，因为不需要更改安全性策略。</p>
<p>状态管理</p>
<p>默认情况下，ASP.NET Web 服务模型采用无状态的服务结构；它并不是本能地与来自同一个用户的多个调用相关。另外，客户端每次调用 ASP.NET Web 服务时，都创建一个新的对象以服务于该请求。方法调用完成后，该对象即被破坏。要维护请求之间的状态，可以使用 ASP.NET 页面使用的相同技术（例如，Session 和 Application 属性包），也可以自己实现自定义的解决方案。 </p>
<p>.NET Remoting 支持许多状态管理选项，并且可能与来自同一个用户的多个调用相关或不相关，这取决于您选择的对象生命周期架构。SingleCall 对象是无状态的（如用于调用 ASP.NET Web 服务的对象），Singleton 对象共享所有客户端的状态，客户端激活的对象在每个客户端的基础上保持状态（带有其产生的所有相关的可升级性和可靠性问题）。</p>
<p>性能</p>
<p>从原始性能方面来讲，使用 TCP 信道和二进制格式化程序时，.NET Remoting 管线能够提供最快的通信。在我们进行的比较 ASP.NET Web 服务和 .NET Remoting 的相对性能的几乎所有的测试中，ASP.NET Web 服务在性能上都超出了使用 HTTP 或 TCP 信道的 SOAP 格式化程序的 .NET Remoting 端点。更有意思的是，使用二进制格式化程序和 HTTP 信道的 ASP.NET 和 .NET Remoting 端点在性能上非常相近。（更多信息，请参见 Performance Comparison:NET Remoting vs. ASP.NET Web Services。）</p>
<p>企业服务</p>
<p>ASP.NET Web 服务或通过 .NET Remoting 提供的对象可以使用本地事务根据单个数据库协调工作。如果需要根据多个资源协调工作，可以使用 .NET 企业服务（又称 COM+）公布的事务（由 COM+ 管线管理的 DTC 分布式事务）。但要注意的是，ASP.NET Web 服务和 .NET Remoting 管线都不能传播公布的事务，因此两种端点都不可能通过跨进程的调用继承公布的事务。</p>
<p>这不一定是件坏事。一般来讲，公布的事务比本地事务代价要高，而要跨进程传播公布的事务，则代价会更高。如果确实需要这一功能，简单的解决方案是在 .NET 企业服务的服务器应用程序中部署一个从 System.EnterpriseServices.ServicedComponent 派生的类（更多信息，请参见 COM+ Integration:How .NET Enterprise Services Can Help You Build Distributed Applications）。对该类对象的跨进程调用将使用 DCOM 进行处理，以确保正确传播事务环境。较难的解决方案是使用底层的 API，手动传播分布的事务。</p>
<p>值得注意的是，传统的分布式事务模型一般不适用于松散耦合的 Web 服务。基于补偿事务的模型（即，撤消其他事务所提交工作的事务）更有意义，因为其隔离约束条件并不是很严格。在包括 Microsoft 的 Web 服务供应商中有一种普遍的说法，即 Web 服务空间需要的事务模型越灵活，该空间中进行的工作越多。等到定义出 Web 服务事务的标准方法时，您就可以根据情况使用本地或公布的事务实现自己的补偿架构了。</p>
<p>&nbsp;</p>
<p><br>小结<br>虽然 .NET Remoting 基础结构和 ASP.NET Web 服务都可以进行跨进程通信，但每种设计适用于不同的用户。ASP.NET Web 服务提供了简单的编程模型，并具有广泛的使用范围。.NET Remoting 提供了较为复杂的编程模型，而且使用范围窄得多。请务必了解这两种技术的工作原理，并选择适合您应用程序的技术。在任意一种情况下，都要使用 IIS 和 ASP.NET 管理进程生命周期，并提供一般的安全性。</p>
<p><br>&nbsp;</p><img src ="http://www.cppblog.com/mzty/aggbug/35068.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/mzty/" target="_blank">梦在天涯</a> 2007-10-24 17:19 <a href="http://www.cppblog.com/mzty/archive/2007/10/24/35068.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Framework3.0基础入门</title><link>http://www.cppblog.com/mzty/archive/2007/03/29/20895.html</link><dc:creator>梦在天涯</dc:creator><author>梦在天涯</author><pubDate>Thu, 29 Mar 2007 13:46:00 GMT</pubDate><guid>http://www.cppblog.com/mzty/archive/2007/03/29/20895.html</guid><wfw:comment>http://www.cppblog.com/mzty/comments/20895.html</wfw:comment><comments>http://www.cppblog.com/mzty/archive/2007/03/29/20895.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/mzty/comments/commentRss/20895.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/mzty/services/trackbacks/20895.html</trackback:ping><description><![CDATA[一 FrameWork3.0与2.0的不同，看下面2图：<br><br>FrameWork2.0：<br><img style="WIDTH: 481px; HEIGHT: 109px" height=109 alt=o_2.0.gif src="http://www.cppblog.com/images/cppblog_com/mzty/3918/o_2.0.gif" width=481 border=0><br><br><br>FrameWork3.0：<br><br><img style="WIDTH: 531px; HEIGHT: 269px" height=269 alt=o_netfx30.gif src="http://www.cppblog.com/images/cppblog_com/mzty/3918/o_netfx30.gif" width=531 border=0><br><br>比较二者，我们可以看到3.0比2.0增加了4个部分，分别是：WPF，WCF，WWF和WCS，下面用一句话简单解释之。<br>WPF：（<strong>适用于不同用户界面的统一方法</strong>）WPF 为所有用户界面提供一致的技术基础，包括，从而大幅简化了开发人员的工作。WPF 采用更为现代的方法，支持视频、动画、&nbsp; 二维或三维图形以及各种类型的文档，从而可以让用户以全新的方式处理信息。<br>WCF：（<strong>支持面向服务的应用程序</strong>）有了 WCF，开发人员不必再像从前一样，处理每一类通信都要使用到不同的应用程序编程接口技术 － WCF 以通用的API 提供通用的方法。在 .NET Framework 3.0 环境下，大多数使用以前的例如ASP.NET Web ，.NET Remoting，Enterprise Services，Web Services Enhancements (WSE)等的应用程序将会代而使用 WCF。<br>WWF：（<strong>支持基于工作流的应用程序</strong>）提供了适用于 Windows 的通用工作流技术，WWF 已成为所有基于工作流应用程序的统一创建基础。Microsoft 的 Microsoft Office 2007 系统、Windows SharePoint Services 等软件，以及许多其他公司的应用程序也会使用 WF。<br>WCS：（<strong>一致的数字标识用户控件</strong>）简化用户的访问标识，增强安全。<br><br>二 FrameWork3.0的安装及开发<br>&nbsp;&nbsp;安装及开发：<br>&nbsp;&nbsp;&nbsp;&nbsp;<img height=397 alt=o_1335440.jpg src="http://www.cppblog.com/images/cppblog_com/mzty/3918/o_1335440.jpg" width=434 border=0><br>&nbsp; <br>&nbsp; 从上图可以看到我们可以安装net FrameWork 3.0 在三中系统上：1）Vista 上默认安装； 2）windows xp + sp2 ；3）windows server 2003 + R2.<br>&nbsp; 具体的安装过程如下：<br><span>1) Install Window XP Service Pack 2 or Windows Vista or Server 2003 Service Pack&nbsp;1 <br>2) Install Visual Studio 2005<br>3) Install .Net Framework 3.0 ( If Possilble install full redistruable package of X86 (.Net Framework)<br>4) Download and install Visual Studio 2005 extensions for .NET Framework 3.0 (Windows Workflow Foundation)<br>5) Download and install Visual Studio 2005 extensions for .NET Framework 3.0 (WCF &amp; WPF).<br><br></span>&nbsp;对于FrameWork3.0的开发，如果我们按照上面的步骤安装，目前我们就可以直接使用VS 2005开发3.0的Application了。<br><br>三&nbsp;参考<br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://www.microsoft.com/china/MSDN/library/netFramework/netframework/intronetfx30.mspx?mfr=true">http://www.microsoft.com/china/MSDN/library/netFramework/netframework/intronetfx30.mspx?mfr=true</a><br><img src ="http://www.cppblog.com/mzty/aggbug/20895.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/mzty/" target="_blank">梦在天涯</a> 2007-03-29 21:46 <a href="http://www.cppblog.com/mzty/archive/2007/03/29/20895.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>64bit，FW3.0随笔分类</title><link>http://www.cppblog.com/mzty/archive/2007/03/29/20893.html</link><dc:creator>梦在天涯</dc:creator><author>梦在天涯</author><pubDate>Thu, 29 Mar 2007 13:26:00 GMT</pubDate><guid>http://www.cppblog.com/mzty/archive/2007/03/29/20893.html</guid><wfw:comment>http://www.cppblog.com/mzty/comments/20893.html</wfw:comment><comments>http://www.cppblog.com/mzty/archive/2007/03/29/20893.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/mzty/comments/commentRss/20893.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/mzty/services/trackbacks/20893.html</trackback:ping><description><![CDATA[<br>64位编程：（使用VS2005，X64指AMD64bit，还有Intel的安腾64bit）<br><br><a id=_185e92254a62_HomePageDays_DaysList_ctl14_DayItem_DayList_ctl00_TitleUrl href="http://www.cppblog.com/mzty/archive/2006/12/04/15992.html"><font color=#223355>windows 64 位技术--概述（一）</font></a><br><a id=_185e92254a62_HomePageDays_DaysList_ctl13_DayItem_DayList_ctl00_TitleUrl href="http://www.cppblog.com/mzty/archive/2006/12/05/16027.html"><font color=#223355>windows64位技术--微软64位产品（二）</font></a><br><a id=_185e92254a62_HomePageDays_DaysList_ctl12_DayItem_DayList_ctl00_TitleUrl href="http://www.cppblog.com/mzty/archive/2006/12/07/16101.html"><font color=#223355>windows 64位技术--C/C++的64位移植(三)</font></a><br><a id=_185e92254a62_HomePageDays_DaysList_ctl11_DayItem_DayList_ctl00_TitleUrl href="http://www.cppblog.com/mzty/archive/2006/12/12/16335.html"><font color=#223355>windows64位技术---.NET FrameWork代码的64位移植及与Native代码的交互（四）</font></a><br><br><br><br>FrameWork3.0编程：（WCF，WPF 。。。）<br><br><a id=viewpost1_TitleUrl href="http://www.cppblog.com/mzty/archive/2007/03/29/20895.html"><font color=#223355>Framework3.0基础入门</font></a><img src ="http://www.cppblog.com/mzty/aggbug/20893.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/mzty/" target="_blank">梦在天涯</a> 2007-03-29 21:26 <a href="http://www.cppblog.com/mzty/archive/2007/03/29/20893.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>windows64位技术---.NET FrameWork代码的64位移植及与Native代码的交互（四）</title><link>http://www.cppblog.com/mzty/archive/2006/12/12/16335.html</link><dc:creator>梦在天涯</dc:creator><author>梦在天涯</author><pubDate>Tue, 12 Dec 2006 12:40:00 GMT</pubDate><guid>http://www.cppblog.com/mzty/archive/2006/12/12/16335.html</guid><wfw:comment>http://www.cppblog.com/mzty/comments/16335.html</wfw:comment><comments>http://www.cppblog.com/mzty/archive/2006/12/12/16335.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/mzty/comments/commentRss/16335.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/mzty/services/trackbacks/16335.html</trackback:ping><description><![CDATA[<p>.NET FrameWork代码的64位移植及与Native代码的交互</p>
<p>一 .NET Framework代码的移植</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 使用.NET Framework的各种语言编写的代码，通过各种语言对应的编译器，最后都生成为IL中间语言代码，而这样中间语言是</p>
<p>与CPU的架构无关的，当IL中间语言在各种CPU上面的执行时才生成Native的CPU直接执行的指令。IL代码是在CLR通用语言运行时中执</p>
<p>行的，所以我们也称.NET Framework编写的代码为Managed托管代码。正是由于.NET Framework的这种运行机制，使得由.NET </p>
<p>Framework编写的代码，几乎不用改写代码就可以移植到64位系统上。</p>
<p>1) 大部分存在的托管应用无需重新编译，便可以直接在32位和64位上工作。<br>2) 在32位系统上的pe文件格式在新的64位中稍有改变，表示位pe+。<br>3) Framework 1.0，1.1的代码作为32位在64位的WOW64上运行，Framework 2.0的代码在64位上作为64位直接运行。<br>4) 如果是只有托管代码，则可以编译为Any cpu (还有x86，x64，ipf),可以在x86，x64，ipf上运行。</p>
<p>&nbsp;</p>
<p>二 托管代码与Native代码的互调用的移植</p>
<p>&nbsp;&nbsp;&nbsp; 1)32位和64位的代码不能在同一进程中执行 ：由于可以使用的内存大小不同，所使用的页文件大小不同。<br>&nbsp;&nbsp;&nbsp; 2)如果有32位和64位的互调用，则统一都移植为64位。<br>&nbsp;&nbsp;&nbsp; 3)也可以通过进程外互操作实现32位和64位的互调用。<br>&nbsp;&nbsp;&nbsp; 4)几种互操作实现技术：COM依赖；Win32依赖；使用代理进程技术（dllhost.exe）。</p>
<p>三 32位在64位上的执行</p>
<p>&nbsp;像我们的32位系统上可以执行16位的程序一样，在64位的系统上也提供了向后兼容32位程序。在64位的系统上使用WOW64提</p>
<p>供对32位的支持，但是不再支持16位程序的运行。大部分32位应用程序能够运行在WoW64中，具有在原生Windows 32位上几乎相同的</p>
<p>特性。<br>&nbsp;&nbsp;&nbsp; 1)WoW64如何工作:WoW64从32位应用程序截取系统调用; 转变为64位模式; 将32位数据结构转换为64位对齐结构;发出原生64位系</p>
<p>统调用;从64位系统调用写回任何输出数据;返回到32位模式。<br>&nbsp;&nbsp; 2) 图示WOW64的调用和执行过程：<br><br>&nbsp;&nbsp; <img style="WIDTH: 597px; HEIGHT: 346px" height=346 alt=o_64bit42.JPG src="http://www.cppblog.com/images/cppblog_com/mzty/2021/o_64bit42.JPG" width=597 border=0><br>上图为调用过程，下面是执行过程：<br><img style="WIDTH: 630px; HEIGHT: 302px" height=302 alt=o_64bit41.JPG src="http://www.cppblog.com/images/cppblog_com/mzty/2021/o_64bit41.JPG" width=630 border=0><br><br>最后大家好运！有兴趣的可以继续学习sql的64位移植，在微软的webcast网站。</p><img src ="http://www.cppblog.com/mzty/aggbug/16335.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/mzty/" target="_blank">梦在天涯</a> 2006-12-12 20:40 <a href="http://www.cppblog.com/mzty/archive/2006/12/12/16335.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>windows 64位技术--C/C++的64位移植(三)</title><link>http://www.cppblog.com/mzty/archive/2006/12/07/16101.html</link><dc:creator>梦在天涯</dc:creator><author>梦在天涯</author><pubDate>Thu, 07 Dec 2006 11:34:00 GMT</pubDate><guid>http://www.cppblog.com/mzty/archive/2006/12/07/16101.html</guid><wfw:comment>http://www.cppblog.com/mzty/comments/16101.html</wfw:comment><comments>http://www.cppblog.com/mzty/archive/2006/12/07/16101.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/mzty/comments/commentRss/16101.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/mzty/services/trackbacks/16101.html</trackback:ping><description><![CDATA[一 开发环境和常用工具<br><br>&nbsp;1 &nbsp;开发工具：VS2005<br>&nbsp;&nbsp;&nbsp; 1）安装：如果在X86上安装Visual Stdio 2005 （VS2005），将安装32位的2.0 CLR。如果在X64上安装VS2005，将安装32位和64位的2.0的CLR,在IPF（安腾）的系统上不能安装VS2005，因为VS2005是32位的，在X64位上，他运行在WOW64上。如果你安装的VS2005的professional版本，可以选择安装X64组件，这样可以使用此版本编写X64的程序，如果你的VS是运行在64位的操作系统上，你就可以直接进行调试和<br>运行X64的程序，否则在本机你只能编译，不能调试和运行。如果你安装的是VS2005的Team版，你可以选择安装X64和IPF组件，同样如果<br>你的VS是运行在X64位上，你也可以直接调试和运行。<br>&nbsp;2）配置solution属性（这里将C++）：选择菜单编译-&gt;配置管理,如下：<br>&nbsp;&nbsp;<img style="WIDTH: 596px; HEIGHT: 383px" height=383 alt=o_64bit31.JPG src="http://www.cppblog.com/images/cppblog_com/mzty/2021/o_64bit31.JPG" width=596 border=0><br>&nbsp; next<br><img height=194 alt=o_64bit32.JPG src="http://www.cppblog.com/images/cppblog_com/mzty/2021/o_64bit32.JPG" width=288 border=0>next<img height=195 alt=o_64bit33.JPG src="http://www.cppblog.com/images/cppblog_com/mzty/2021/o_64bit33.JPG" width=289 border=0><br><br>&nbsp;<br>3 ）编译。我们可以在X86或X64上编译X64或IPF代码，跟我们编译以前的X86代码没有什么大的区别。但是有几个专门对64位使用的编译<br>选项，常见的例如：(/Wp64) :检查64兼容问题； (/GL):链接时性能优化。。。<br><br>4）调试和运行：必须在X64和IPF上运行和调试他们对应的程序，但是也可以在X86上编译然后通过远程在X64和IPF上调试代码。<br><br>&nbsp;2 &nbsp;<strong>Platform SDK&nbsp;+&nbsp;</strong> Visual C++ 2005 Express Edition&nbsp;<br><br>&nbsp;Windows Server 2003 64-bit Edition Platform SDK是一套开发64位应用的命令行开发包。使用开发包中的工具，可是使您立刻开始64位<br>的应用开发。<a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&amp;displaylang=en">For ITANIUM 2 下载</a>&nbsp; <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&amp;displaylang=en">For XEON 下载</a>&nbsp; Visual C++2005 Express<br>(参考英文：<a href="http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/default.aspx">http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/default.aspx</a>)<br>(参考中文：<a href="http://msdn2.microsoft.com/zh-cn/library/ms235626(VS.80).aspx">http://msdn2.microsoft.com/zh-cn/library/ms235626(VS.80).aspx</a>)<br><br>&nbsp;3&nbsp;&nbsp;常用工具： <br><br>二 C/C++移植的问题<br><br>1 新的数据类型和函数<br>1)固定精度：（跟X86或X64无关）<br>
<table width="80%" border=1>
    <tbody>
        <tr>
            <th>Term</th>
            <th>Description</th>
        </tr>
        <tr>
            <td width="40%"><strong>DWORD32</strong></td>
            <td width="60%">32-bit unsigned integer</td>
        </tr>
        <tr>
            <td width="40%"><strong>DWORD64</strong></td>
            <td width="60%">64-bit unsigned integer</td>
        </tr>
        <tr>
            <td width="40%"><strong>INT32</strong></td>
            <td width="60%">32-bit signed integer</td>
        </tr>
        <tr>
            <td width="40%"><strong>INT64</strong></td>
            <td width="60%">64-bit signed integer</td>
        </tr>
        <tr>
            <td width="40%"><strong>LONG32</strong></td>
            <td width="60%">32-bit signed integer</td>
        </tr>
        <tr>
            <td width="40%"><strong>LONG64</strong></td>
            <td width="60%">64-bit signed integer</td>
        </tr>
        <tr>
            <td width="40%"><strong>UINT32</strong></td>
            <td width="60%">Unsigned <strong>INT32</strong></td>
        </tr>
        <tr>
            <td width="40%"><strong>UINT64</strong></td>
            <td width="60%">Unsigned <strong>INT64</strong></td>
        </tr>
        <tr>
            <td width="40%"><strong>ULONG32</strong></td>
            <td width="60%">Unsigned <strong>LONG32</strong></td>
        </tr>
        <tr>
            <td width="40%"><strong>ULONG64</strong></td>
            <td width="60%">Unsigned <strong>LONG64</strong></td>
        </tr>
    </tbody>
</table>
2)平台相关<br>
<table width="80%" border=1>
    <tbody>
        <tr>
            <th>Term</th>
            <th>Description</th>
        </tr>
        <tr>
            <td width="40%"><strong>DWORD_PTR</strong></td>
            <td width="60%">Unsigned long type for pointer precision.</td>
        </tr>
        <tr>
            <td width="40%"><strong>HALF_PTR</strong></td>
            <td width="60%">Half the size of a pointer. Use within a structure that contains a pointer and two small fields.</td>
        </tr>
        <tr>
            <td width="40%"><strong>INT_PTR</strong></td>
            <td width="60%">Signed integer type for pointer precision.</td>
        </tr>
        <tr>
            <td width="40%"><strong>LONG_PTR</strong></td>
            <td width="60%">Signed long type for pointer precision.</td>
        </tr>
        <tr>
            <td width="40%"><strong>SIZE_T</strong></td>
            <td width="60%">The maximum number of bytes to which a pointer can refer. Use for a count that must span the full range of a pointer.</td>
        </tr>
        <tr>
            <td width="40%"><strong>SSIZE_T</strong></td>
            <td width="60%">Signed <strong>SIZE_T</strong>.</td>
        </tr>
        <tr>
            <td width="40%"><strong>UHALF_PTR</strong></td>
            <td width="60%">Unsigned <strong>HALF_PTR</strong>.</td>
        </tr>
        <tr>
            <td width="40%"><strong>UINT_PTR</strong></td>
            <td width="60%">Unsigned <strong>INT_PTR</strong>.</td>
        </tr>
        <tr>
            <td width="40%"><strong>ULONG_PTR</strong></td>
            <td width="60%">Unsigned <strong>LONG_PTR</strong>.</td>
        </tr>
    </tbody>
</table>
3) 平台相关指针
<table width="80%" border=1>
    <tbody>
        <tr>
            <th>Term</th>
            <th>Description</th>
        </tr>
        <tr>
            <td width="40%"><strong>POINTER_32</strong></td>
            <td width="60%">A 32-bit pointer. On 32-bit Windows, this is a native pointer. On 64-bit Windows, this is a truncated 64-bit pointer.</td>
        </tr>
        <tr>
            <td width="40%"><strong>POINTER_64</strong></td>
            <td width="60%">A 64-bit pointer. On 64-bit Windows, this is a native pointer. On 32-bit Windows, this is a sign-extended 32-bit pointer.
            <p>Note that it is not safe to assume the state of the high pointer bit.</p>
            </td>
        </tr>
    </tbody>
</table>
<br><br><br>2 指针的截断<br><br>在以前的32位系统中，指针的为32位，在新的64位系统中指针为64位，这样的话，我们以前编程中常用的指针与int或long等的直接转化，放在新的64位的系统中就会出错，指针高位的值就会丢失，从而产生错误。例如下面的2行代码，在32位上正确，但是在64位上就会发生指针截断，出现错误：<br><img style="WIDTH: 590px; HEIGHT: 68px" height=68 alt=o_64bit36.JPG src="http://www.cppblog.com/images/cppblog_com/mzty/2021/o_64bit36.JPG" width=590 border=0><br><br>下面是我们使用新的动态数据类型，从而实现不用修改代码，直接在32位和64位上直接编译：<br><br><img style="WIDTH: 597px; HEIGHT: 82px" height=82 alt=o_64bit37.JPG src="http://www.cppblog.com/images/cppblog_com/mzty/2021/o_64bit37.JPG" width=597 border=0><br><br><br>3 虚拟地址空间 （解决方法：在64位的指针中只不使用高32位，也就等于原来32位中的32位指针了）<br>在32位的系统中，一共可以是用的内存为4G,但是对于用户的应用一般只可以使用2G,其他的2G为系统使用，当然你也可以打开3G的开关，这样的话最多就能使用3G.对于高精度的浮点运算，高强度的数据库处理等，就需要更大的内存，这时候64位给我们带来了福音，在64位上我们最多可以使用16T的内存，这样就大大提高了性能。但是对于一些没有使用到超过2G的内存，但当中却大量的使用了指针与整型等的强制转化的应用程序，我们可以使用一种简单的方法，使用编译器的开关VBS：/Largeadressaware:no，使32位的程序移植到64位上。但是这种简单的移植方法，会带来一些弊端：如果被真的64位所调用，就有可能真的产生指针的截断，同时也没有解决对齐问题和大内存的使用问题。<br><br>4 数据类型对齐和补齐<br><br>由于对于不同的cpu架够有不同的数据对齐策列，而且数据的对齐也影响程序的性能和正确性。常用的2个宏：TYPE_ALIGNMENT(type)和FIELD_OFFSET(type,member)分别用来计算指定类型的对齐值和某复合变量中成员的偏移量。对于复合数据类型，采用递归的计算方法。对于复合数据类型如果没有对齐，则补齐，保证结尾处地址是该复合数据类型的整数倍。（在C++中可以使用#Program()来设置对齐方式）<br><br>5 CPU架构与对齐意外<br>对于我们以前的32位，CPU自动解决对齐问题，在X64中CPU也会处理对齐问题，但是有性能消耗，但是对于IPF则CPU没有处理数据的对齐问题，所以如果程序中没有处理，则会导致程序Crash。所以最后是我们在64编程中程序处理对齐问题，在程序中使用__aligned_malloc，这样也更有利于在不同的64位架够间的移植。<br><br>6 优化方案<br>建议使用编译器的优化选项来优化64程序：whole program optimization&nbsp; ,profile-guided optimization.<br><br><br>三 总结<br><br>对于C++的64位移植，主要的问题就是指针的截断和数据的对齐，希望从现在开始我们就养成良好的习惯，使用动态指针类型，和程序处理数据的对其问题，这样更有利于程序的64位移植。<img src ="http://www.cppblog.com/mzty/aggbug/16101.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/mzty/" target="_blank">梦在天涯</a> 2006-12-07 19:34 <a href="http://www.cppblog.com/mzty/archive/2006/12/07/16101.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>windows64位技术--微软64位产品（二）</title><link>http://www.cppblog.com/mzty/archive/2006/12/05/16027.html</link><dc:creator>梦在天涯</dc:creator><author>梦在天涯</author><pubDate>Tue, 05 Dec 2006 13:15:00 GMT</pubDate><guid>http://www.cppblog.com/mzty/archive/2006/12/05/16027.html</guid><wfw:comment>http://www.cppblog.com/mzty/comments/16027.html</wfw:comment><comments>http://www.cppblog.com/mzty/archive/2006/12/05/16027.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/mzty/comments/commentRss/16027.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/mzty/services/trackbacks/16027.html</trackback:ping><description><![CDATA[1 微软的常见产品路线图<br><br><img style="WIDTH: 603px; HEIGHT: 424px" height=424 alt=o_64windows1.JPG src="http://www.cppblog.com/images/cppblog_com/mzty/2021/o_64windows1.JPG" width=603 border=0><br><br>2 微软windows操作系统中，windows Xp只有X86和X64版，没有IPF（安腾）版。但是server端的系统既有X64也有IPF的，可见以后微软会增强&nbsp;&nbsp; 对server端64位的支持。下面是使用64位的server 2003的优点：(在X64位的XP系统上，仍然使用的是32位的office，不行你可以看资源管理器中后面带有*32的啊，但是有些程序是区分32和64位版本的啊，他的32位就不能在64位上使用了啊，例如ACAD 2008 的32位版本你就不能安装到X64位的Xp系统上。)<br><br><img style="WIDTH: 603px; HEIGHT: 359px" height=359 alt=o_64windows2.JPG src="http://www.cppblog.com/images/cppblog_com/mzty/2021/o_64windows2.JPG" width=603 border=0><br><br>3 对于开发工具VS2005 ，vs2005 只能在32位上使用，不能在IPF上使用，但是我们可以在32位上开发X86，X64和IPF的程序，微软和大部分都认为我们一般不会在server端开发程序，因为IPF的64位架构是定位server端的。（只有team版的vs2005才可以开发IPF的程序，安装的时候要注意啊，另外netframework也是有X86，X64，IPF区别的啊，下载的时候要注意啊）<br><br><img style="WIDTH: 597px; HEIGHT: 453px" height=453 alt=o_64windows4.JPG src="http://www.cppblog.com/images/cppblog_com/mzty/2021/o_64windows4.JPG" width=597 border=0><br><br>4 对于数据库SQL 2005各个版本都有。但是SQL 2000微软没有提供X64位的，因为那是X64位技术还没有出现，因为IPF技术比X64位早出现，所以SQL 2000也支持 IPF架构。<br><br><img style="WIDTH: 607px; HEIGHT: 427px" height=427 alt=o_64windows5.JPG src="http://www.cppblog.com/images/cppblog_com/mzty/2021/o_64windows5.JPG" width=607 border=0><br><br>5 88 下次再见。<img src ="http://www.cppblog.com/mzty/aggbug/16027.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/mzty/" target="_blank">梦在天涯</a> 2006-12-05 21:15 <a href="http://www.cppblog.com/mzty/archive/2006/12/05/16027.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>windows 64 位技术--概述（一）</title><link>http://www.cppblog.com/mzty/archive/2006/12/04/15992.html</link><dc:creator>梦在天涯</dc:creator><author>梦在天涯</author><pubDate>Mon, 04 Dec 2006 15:15:00 GMT</pubDate><guid>http://www.cppblog.com/mzty/archive/2006/12/04/15992.html</guid><wfw:comment>http://www.cppblog.com/mzty/comments/15992.html</wfw:comment><comments>http://www.cppblog.com/mzty/archive/2006/12/04/15992.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/mzty/comments/commentRss/15992.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/mzty/services/trackbacks/15992.html</trackback:ping><description><![CDATA[1 两种64位架构：X64是直接在原有的X86的基础上的扩展，而IPF是新开发的高性能的64位指令集。<br><br><img style="WIDTH: 653px; HEIGHT: 407px" height=407 alt=o_64bit1.JPG src="http://www.cppblog.com/images/cppblog_com/mzty/2021/o_64bit1.JPG" width=653 border=0><br><br>2 原来的32位程序在两种64位架构上的运行：在X64上直接运行，而在IPF上由中间层转化，中间转化层要消耗cpu等。<br><br><img style="WIDTH: 644px; HEIGHT: 393px" height=393 alt=o_64bit2.JPG src="http://www.cppblog.com/images/cppblog_com/mzty/2021/o_64bit2.JPG" width=644 border=0><br><br>3两种64位的应用领域不同：X64位客户端和桌面等一般的程序，IPF安腾用于server企业等。<br><br><img style="WIDTH: 638px; HEIGHT: 305px" height=305 alt=o_64bit5.JPG src="http://www.cppblog.com/images/cppblog_com/mzty/2021/o_64bit5.JPG" width=638 border=0><br><br>4 原来的32位与新的64位的主要区别 ：内存和cpu。<br><br><img style="WIDTH: 645px; HEIGHT: 461px" height=461 alt=o_64bit4.JPG src="http://www.cppblog.com/images/cppblog_com/mzty/2021/o_64bit4.JPG" width=645 border=0><br><br>5 新的64位的架构仍然可以运行大部分的原32位程序，但是下面这些必须升级到64位。<br><br><img style="WIDTH: 642px; HEIGHT: 280px" height=280 alt=o_64bit7.JPG src="http://www.cppblog.com/images/cppblog_com/mzty/2021/o_64bit7.JPG" width=642 border=0><br><br>6&nbsp; 新的64位的模块与原有的32位模块间不可以直接调用，但是可以通过一定的分装处理后，可以调用。<br><br><img style="WIDTH: 648px; HEIGHT: 322px" height=322 alt=o_64bit3.JPG src="http://www.cppblog.com/images/cppblog_com/mzty/2021/o_64bit3.JPG" width=648 border=0><br><br>7 移植计划，不多语言的代码，移植的难度并不形同，非托管的代码相对要复杂，需要考虑指针算法字符对齐等，托管的相对要简单些，只需要考虑特殊的互操作等。<br><br><img style="WIDTH: 654px; HEIGHT: 297px" height=297 alt=o_64bit8.JPG src="http://www.cppblog.com/images/cppblog_com/mzty/2021/o_64bit8.JPG" width=654 border=0><br><br>8 简单的移植步骤，1，2，3，4，.。<br><br><img style="WIDTH: 640px; HEIGHT: 304px" height=304 alt=o_64bit9.JPG src="http://www.cppblog.com/images/cppblog_com/mzty/2021/o_64bit9.JPG" width=640 border=0><br><br>9 不断的学习，与微软共同进步，thanks<br><br><img src ="http://www.cppblog.com/mzty/aggbug/15992.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/mzty/" target="_blank">梦在天涯</a> 2006-12-04 23:15 <a href="http://www.cppblog.com/mzty/archive/2006/12/04/15992.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>