??xml version="1.0" encoding="utf-8" standalone="yes"?>久久影院免费观看,国产亚洲一二三区,男人天堂视频在线观看http://www.aygfsteel.com/jiangmin/category/14057.htmlzh-cnFri, 21 Mar 2008 21:10:49 GMTFri, 21 Mar 2008 21:10:49 GMT60Apache Axis初教程---安装、应? http://www.aygfsteel.com/jiangmin/articles/187596.htmlJiangMinJiangMinThu, 20 Mar 2008 16:37:00 GMThttp://www.aygfsteel.com/jiangmin/articles/187596.htmlhttp://www.aygfsteel.com/jiangmin/comments/187596.htmlhttp://www.aygfsteel.com/jiangmin/articles/187596.html#Feedback0http://www.aygfsteel.com/jiangmin/comments/commentRss/187596.htmlhttp://www.aygfsteel.com/jiangmin/services/trackbacks/187596.html阅读全文

JiangMin 2008-03-21 00:37 发表评论
]]>
如何使用Axis开发Webservice应用E序http://www.aygfsteel.com/jiangmin/articles/78607.htmlJiangMinJiangMinThu, 02 Nov 2006 02:24:00 GMThttp://www.aygfsteel.com/jiangmin/articles/78607.htmlhttp://www.aygfsteel.com/jiangmin/comments/78607.htmlhttp://www.aygfsteel.com/jiangmin/articles/78607.html#Feedback0http://www.aygfsteel.com/jiangmin/comments/commentRss/78607.htmlhttp://www.aygfsteel.com/jiangmin/services/trackbacks/78607.html

JiangMin 2006-11-02 10:24 发表评论
]]>
实施WebService Security[WS-Security1.0]的Encrypt和Sign模式(XFire+WSS4J) http://www.aygfsteel.com/jiangmin/articles/68964.htmlJiangMinJiangMinMon, 11 Sep 2006 07:10:00 GMThttp://www.aygfsteel.com/jiangmin/articles/68964.htmlhttp://www.aygfsteel.com/jiangmin/comments/68964.htmlhttp://www.aygfsteel.com/jiangmin/articles/68964.html#Feedback0http://www.aygfsteel.com/jiangmin/comments/commentRss/68964.htmlhttp://www.aygfsteel.com/jiangmin/services/trackbacks/68964.html阅读全文

JiangMin 2006-09-11 15:10 发表评论
]]>
?WebService 中用属性发布一个方?/title><link>http://www.aygfsteel.com/jiangmin/articles/68922.html</link><dc:creator>JiangMin</dc:creator><author>JiangMin</author><pubDate>Mon, 11 Sep 2006 03:17:00 GMT</pubDate><guid>http://www.aygfsteel.com/jiangmin/articles/68922.html</guid><wfw:comment>http://www.aygfsteel.com/jiangmin/comments/68922.html</wfw:comment><comments>http://www.aygfsteel.com/jiangmin/articles/68922.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/jiangmin/comments/commentRss/68922.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/jiangmin/services/trackbacks/68922.html</trackback:ping><description><![CDATA[?WebService 中发布一个方法很单,只要你要发布的Ҏ?System.Web.Services.WebMethodAttribute 属性类来标识出可以了Q但是该属性只能应用于Ҏ而不能应用到属性。该cȝMSDN文档可以见到(C#): <p>  [AttributeUsage(AttributeTargets.Method)]</p><p>  public sealed class WebMethodAttribute : Attribute</p><p>  那么Q如果我们需要将一个属性也发布成一个WebҎQ该如何做呢?在讨个问题之前,先来看看Z么我们需要发布属性ؓ一个WebҎ?因ؓ有h可能会这么告诉你Q你可以把你的属性改写成两个对应的getXXXXX/setXXXXXҎ来分别发布成WebMethod。哦Q是的,q么做看似可以达到目的,但是q样做损害了我们的接口定义,使得我们无法享受属性ؓ我们所带来的快?请不要问我是什么快?Q其实最重要的一个原因就是无法完成对接口的实CQ此话怎讲?且看下面代码(C#):</p><p>  public interface IDataService</p><p>  {</p><p>  // 该属性指C当前用的是什么数据库pȝ(例如:MS-SQLServer、Orcale、IBM-DB2 {等)</p><p>  int DataProvider</p><p>  {</p><p>  get;</p><p>  }</p><p>  // 该方法执行一D|定的SQL脚本Qƈq回其结果集</p><p>  System.Data.DataSet Execute(String sqlText);</p><p>  // 该方法将指定的数据集保存到数据库?/p><p>  void Update(System.Data.DataSet dataSet);</p><p>  }</p><p>  现在我们写一?WebService 光要实?IDataService 接口Q必d?WebService 中包含ƈ发布该属性。这时我们该怎么?呵呵Q且?/p><p>  public class DataService : System.Web.Services.WebSerbice, IDataService</p><p>  {</p><p>  ...</p><p>  public int DataProvider</p><p>  {</p><p>  [WebMethod(MessageName="GetDataProvider")]</p><p>  get</p><p>  {</p><p>  ...</p><p>  }</p><p>  }</p><p>  [WebMethod()]</p><p>  public System.Data.DataSet Execute(String sqlText)</p><p>  {</p><p>  ...</p><p>  }</p><p>  }</p><p>  OKQ大家看CQ将一个方法发布成WebҎ是在其函C前指?WebMethod 属性,而属性则是在其get或set器之前指?WebMethod 属性,如果不指定属性的 MessageName 属性|则发布的属性的WebҎ名将被置为get_XXXXX和set_XXXXX?/p><p>  在用VS.net生成?WebService 代理c?通过dWeb引用QReference.cs)中的成员都是ҎQ因此需要手动修改代理类中的相关Ҏ为属性,例如上例的本C理类的相关代码看h是这L:</p><p>  [System.Web.Services.Protocols.SoapDocumentMethodAttribute(... ...)]</p><p>  [return: System.Xml.Serialization.XmlElementAttribute("GetDataProviderResult")]</p><p>  public int GetDataProvider()</p><p>  {</p><p>  object[] results = this.Invoke("GetDataProvider", new object[0]);</p><p>  return (int)results[0];</p><p>  }</p><p>  那么Q你只需该Ҏ的主体部分大概改成这个样子即?</p><p>  public int GetDataProvider</p><p>  {</p><p>  [System.Web.Services.Protocols.SoapDocumentMethodAttribute(... ...)]</p><p>  [return: System.Xml.Serialization.XmlElementAttribute("GetDataProviderResult")]</p><p>  get</p><p>  {</p><p>  object[] results = this.Invoke("GetDataProvider", new object[0]);</p><p>  return (int)results[0];</p><p>  }</p><p>  }</p><img src ="http://www.aygfsteel.com/jiangmin/aggbug/68922.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/jiangmin/" target="_blank">JiangMin</a> 2006-09-11 11:17 <a href="http://www.aygfsteel.com/jiangmin/articles/68922.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>试服务 :SOA的完整性和扩展?/title><link>http://www.aygfsteel.com/jiangmin/articles/68914.html</link><dc:creator>JiangMin</dc:creator><author>JiangMin</author><pubDate>Mon, 11 Sep 2006 02:58:00 GMT</pubDate><guid>http://www.aygfsteel.com/jiangmin/articles/68914.html</guid><wfw:comment>http://www.aygfsteel.com/jiangmin/comments/68914.html</wfw:comment><comments>http://www.aygfsteel.com/jiangmin/articles/68914.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/jiangmin/comments/commentRss/68914.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/jiangmin/services/trackbacks/68914.html</trackback:ping><description><![CDATA[随着开发Y件往可复用服务的q移Q很多Y件开发生命周期中的范式被开发了出来。正如面向对象要求一个特别的概念集合来达到有效的开发,面向对象架构也带来了它共享的具体途径。在接下来的D落中,我们会我们会探烦开发服务的许多重要斚w中的一?试? <p>  依赖于你们组l中的Y件管理类型,试可以通常作ؓ一个全局q程或者最高优先权的过E。以前的ҎQ在代码行之间用敏捷开发技巧,把测试推q到服务被完全实C后才q行试Q而随后的服务׃采用q个q没有经q测试的服务Qƈ且不{到你之成Z个“准备好”的服务?/p><p>  当有支持者确认了一个调查,在开始就 q行试q且采用敏捷原则比直到最后的开发阶D|试更有好处Q我们暂且不这些,我们先把关于何时把测试引入到你具体的工程中去的讨论搁|一边,让我们关注一下如何进行测试?/p><p>  试决不是一个简单的东西Q有很多不同的测试类型可以应用在软g上。依据测试的复杂性和领域 Q即使专业的团队——QA团队——可以被雇来完成特定的Q务,但是是ؓ了特定的目定Q我们将会关注两U类型的试Q他们都相对Ҏ的开?单元试和压力测试?/p><p>  单元试是指通过预先定义的一些列数据集合来验证一个服务的既定目的的过E,q个数据集合是用来模拟显CZ界的用法从而能够及时的方式来探到~陷。当Z的服务进行单元测试的时候, 在服务被发布为正是的产品以前你可以把他们看成安全保护|,因ؓ你能够在实际数据在q个pȝq行之前使用q些预先的数据集合来试你的服务的逻辑?/p><p>  另外一个单元测试ؓ你的开发带来的那些好处在当你的pȝ开始用上了一D|间之后就会更加突Z。因为演化的服务意味着底层逻辑的修改,q些修改可能会破坏服务本来被希望忙的一些具体的使用讑֮。尽如此,通过现有的单元测试套Ӟq且保证一直保持同q些试的一_保护M使用你服务的依赖部分免受在以后可能新的修订中带来的Q何破?/p><p>  实际的单元测试的q行很大E度上依赖于~程语言或者你使用来部|你的服务的q_Q但是更加可能的情况是ؓ了能更容易的q行试的步步ؓ营,认和部|Ԍ会通过一个特定的框架来完成这?——换一句话说就是, 自动化的q行所有的能够使得单元试成ؓ必需的过E?/p><p>  在所有的最行的单元测试的框架中有:Java的JUnit ?NET的Unit Testing Framework QUnit Testing Framework 构成了Visual Studio的一部分。对于深度的解释他们的框架或者其他的一些单元测试套件将不会在本文中讨论Q但是列?.1展示的就是一个Java支持的服务的Junit试是怎样的?/p><p>  列表1.1 对JavacL成的Web Services的Junit单元试</p><p><font style="BACKGROUND-COLOR: #dddddd" face="Verdana" color="#000000">import junit.framework.*;<br />public class PayrollTest extends TestCase { <br />    private Payroll basePayroll;<br />    private Employee accountingE;<br />    public PayrollTest(String type) {<br />        super(type);<br />    }<br />   protected void setUp() {<br /> // Initialize Payroll object<br />        basePayroll = new Payroll();<br />  // Generate employee, assign to payroll<br />        accountingE = new Employee("John Smith", 5743.00);<br />        basePayroll.addEmployee(accountingE);<br />    }<br />    protected void tearDown() {<br /> // Reinitialize Payroll object<br />        basePayroll = null;<br />    }<br />    public void testAddEmployee() {<br />        Employee contractE = new Employee("Auditor", 2843.00);<br />        basePayroll.addEmployee(contractE);<br />         double totalPayroll = accountingE.getSalary() + contractE.getSalary();<br />        assertEquals(totalPayroll, basePayroll.getTotal(), 0.0);<br />         assertEquals(2, basePayroll.countEmployees());<br />    }<br />    public void testEmptyPayroll() {<br />        basePayroll.emptyPayroll();    <br />        assertTrue(basePayroll.emptyPayroll());<br />    }<br />       public void testEliminateEmployee() throws EmployeeNotFound {<br />        basePayroll.eliminateEmployee(accountingE);<br />        assertEquals(0, basePayroll.countEmployees());<br />        assertEquals(0.0, basePayroll.getTotal(), 0.0);<br />    }<br />     public static Test suite() {<br />        TestSuite suite = new TestSuite(PayrollTest.class);<br /> return suite;<br />     }<br />    public static void main(String args[]) {<br />        junit.textui.TestRunner.run(suite());<br />    }<br /> }</font></p><p>  q个试列表表示的是对两个将会用来构成决定薪水册的数据的Web serviceq行试的一个例子。请注意Payroll和Employeecȝ实例是如何创建的Q它们都会被后面的testXXX()命名的方法来操纵。一旦被q些Ҏ操作Q请注意看到是通过不同的以assertXXX()命名的JunitҎ来调用的?/p><p>  用来调用预先定义的数据块的不同的断言Ҏ的参数在底层的服务类之间传递,在这些类上进行同所期望的D行比对,q个比对是在当测试框架给Z个错误或者返回一个正的执行的时候进行?/p><p>  单元试是用来验证一个服务逻辑的完整性,重点试是用来决定一个服务在一个特定的用户附蝲的时候应该具有什么样的行为,它是一个可以帮助决定对一个服务的基础架构的适当支持的过E,q些基础架构包括如硬件能力,应用E序配置和可以获得的|络带宽Q以及其他的东西?/p><p>  一个可以帮助你q行压力试的工hJMeter Q它是一个由Apachel织开发的一个开源项目。尽Jmeter是基于java的,它可以生SOAP和XMLRPCcd的请求,有效地发挥一个Web services客户端的功能Q来压力试M服务端的部v。图1.1展示的是一个用这个工兯行的在SOAP/XML-RPC服务上的附蝲试?/p><p><img src="http://searchwebservices.techtarget.com.cn/imagelist/06/03/2jp7e6i982q6.jpg" border="0" /></p><p>  ?.1:Jmeter对Web services的压力测?/p><p>  在Jmeter中创Zq的压力试的过E如?</p><p>  1. 在Jmeter的主界面Q将你的鼠标Ud到Test Plan按钮上ƈ点击右键。从弹出的菜单中选择:Add ?Thread Group。Thread Group按钮会被创建?/p><p>  2.定位在Thread Group按钮上左边的H体中将会显CZ同的参数。参数Number of threads 表示的是你的压力试会对你的服务仿效的h的数?/p><p>  3.下一步,当鼠标在Thread Group按钮上点d键,从弹出的菜单中选择:Add ?Sampler ?SOAP/XML-RPC Request。SOAP/XML-RPCh按钮会被创建?/p><p>  4.鼠标定位在SOAP/XML-RPCh按钮Q左边的H体中将会显CZ同的参数。有关于你的Web service的URL的介l,以及你希望发出的每一个请求的载荷?/p><p>  5.当鼠标在SOAP/XML-RPCh按钮上时Q点d键,从弹出的菜单中选择:Add ?Listener ?Monitor ResultsQ和Add ?Listener ?View Results。两个显C压力测试结果的按钮会生成。注?如果需要,你可以添加更多的监听者,q是Jmeterq行压力试l果的表C术语?/p><p>  6.保存你的试Qƈ从最高层的菜单中选择Run-Start选项开始你的压力测试?/p><p>  7.最后移动你的鼠标到每一个不同的Listener按钮上, 观察你在对你的Web serviceq行压力试时获得的性能参数?/p><p>  和单元测试框架相cM的本质,解释Jmeter的许多复杂——或者Q何其他压力测试工Lq方面的问题——将会超出本文的范围Q但是Jmeter提供了全面可理解的ƈ可自p取的文档来解释不同的压力试功能?/p><p>  我们ȝ我们对在Web services环境下单元测试和压力试的认识,q是在很多的试q程中你可以在你的面向服务设计中的两个方法,从而能够确保你的部|的完整性和可测量?/p><img src ="http://www.aygfsteel.com/jiangmin/aggbug/68914.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/jiangmin/" target="_blank">JiangMin</a> 2006-09-11 10:58 <a href="http://www.aygfsteel.com/jiangmin/articles/68914.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>本文译自Thomas Erl的《Service-Oriented Architecture: Concepts, Technology and Design》部分章节?/title><link>http://www.aygfsteel.com/jiangmin/articles/68906.html</link><dc:creator>JiangMin</dc:creator><author>JiangMin</author><pubDate>Mon, 11 Sep 2006 02:46:00 GMT</pubDate><guid>http://www.aygfsteel.com/jiangmin/articles/68906.html</guid><wfw:comment>http://www.aygfsteel.com/jiangmin/comments/68906.html</wfw:comment><comments>http://www.aygfsteel.com/jiangmin/articles/68906.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/jiangmin/comments/commentRss/68906.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/jiangmin/services/trackbacks/68906.html</trackback:ping><description><![CDATA[ <div> <font size="3">本文译自Thomas Erl的《Service-Oriented Architecture: Concepts, Technology and Design》部分章节?/font> </div> <div> <font size="3"> </font> </div> <div> <font size="3">注意本节的标题是“面向服务和面向对象”,而不是“面向服务对面向对象”。这U区别是要强调这两种思想之间的关pM是竞争关p这一事实?/font> </div> <div> <font size="3"> </font> </div> <div> <font size="3">事实上,面向对象~程通常用于构徏Web Services中应用逻辑的封装。然而,面向对象~程Ҏ到底与面向服务方法有何根本的不同是值得L索的Q理解它们的不同有助于你它们放在一起工作?/font> </div> <div> <font size="3"> </font> </div> <div> <font size="3">下面列出两种Ҏ在设计方面的比较。(管使用“逻辑处理单元”术语在比较服务和对象会引v的؜淆,然而面向服务是Z服务来设计,面向对象是以对象创徏Z心。)</font> </div> <div> <font size="3"> </font> </div> <ul> <li> <div style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt"> <font size="3"> <span> <span style="FONT: 7pt 'Times New Roman'">         </span> </span>面向服务逻辑处理单元Q服务)之间的松耦合。虽焉向对象支持可重用、松耦合的编E程序,但它主要Z预定义的依赖c,产生和逻辑处理单元Q对象)的紧耦合?/font> </div> </li> </ul> <div> <font size="3"> </font> </div> <ul> <li> <div style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt"> <font size="3"> <span> <span style="FONT: 7pt 'Times New Roman'">        </span> </span>面向服务鼓励_粒度接口(服务描述Q,因此每个通讯单元Q消息)都包含完成给定Q务所需的尽可能多的信息。面向对象编E完全支持细_度接口QAPIsQ,因此通讯单元QRPC或本地API调用Q能执行各种大小的Q务?/font> </div> </li> </ul> <div> <font size="3"> </font> </div> <ul> <li> <div style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt"> <font size="3"> <span> <span style="FONT: 7pt 'Times New Roman'">         </span> </span>面向服务期望逻辑处理单元Q服务)的范围可以较大。面向对象中的逻辑处理单元Q对象)向于在一定范围内更小和更加明?/font> </div> </li> </ul> <div> <font size="3"> </font> </div> <ul> <li> <div style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt"> <font size="3"> <span> <span style="FONT: 7pt 'Times New Roman'">         </span> </span>面向服务促进逻辑处理单元Q服务)未知行ؓ的创建,那是由智能通讯单元Q消息)所引v的行为。面向对象鼓励逻辑处理和数据的l定Q生非常智能的单元Q对象)?/font> </div> </li> </ul> <div> <font size="3"> </font> </div> <ul> <li> <div style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt"> <font size="3"> <span> <span style="FONT: 7pt 'Times New Roman'">         </span> </span>面向服务更多采用逻辑处理单元Q服务)q行设计q进可能保持无状态。面向对象鼓励数据和逻辑的绑定,因此产生有状态单元(对象Q。(然而,q来更多的基于组件的设计Ҏ背离了这U趋势)</font> </div> </li> </ul> <div> <font size="3"> </font> </div> <ul> <li> <div style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt"> <font size="3"> <span> <span style="FONT: 7pt 'Times New Roman'">         </span> </span>面向服务支持逻辑处理单元Q服务)的松耦合l合。面向对象也支持l合但趋向于l承自逻辑处理单元Q对象)Q那会导致依赖紧耦合?/font> </div> </li> </ul> <div> <font size="3"> </font> </div> <div> <font size="3">上面从耦合度、接口粒度、关注点、状态等斚w寚w向服务和面向对象q行了比较。下面再对两U方法的设计原则q行比较?/font> </div> <div> <font size="3"> </font> </div> <p> <span style="FONT-SIZE: 10.5pt">当然Q面向服务还Ơ缺很多面向对象已有的概念和理论。下表提供了一般的面向对象原则与已l讨的面向服务的原则的比较?/span> </p> <p> </p> <p> </p> <table class="MsoTableGrid" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid windowtext .5pt; mso-yfti-tbllook: 480; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext" cellspacing="0" cellpadding="0" border="1"> <tbody> <tr style="mso-yfti-irow: 0"> <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 104.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt" valign="top" width="139"> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <strong style="mso-bidi-font-weight: normal"> <font size="3"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">面向服务原则</span> <span lang="EN-US"> <?XML:NAMESPACE PREFIX = O /?> <o:p> </o:p> </span> </font> </strong> </p> </td> <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; BORDER-LEFT-COLOR: #d4d0c8; PADDING-BOTTOM: 0cm; WIDTH: 321.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt" valign="top" width="429"> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <strong style="mso-bidi-font-weight: normal"> <font size="3"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">面向对象原则</span> <span lang="EN-US"> <o:p> </o:p> </span> </font> </strong> </p> </td> </tr> <tr style="mso-yfti-irow: 1"> <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 104.4pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="139"> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <font size="3"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">服务的重?/span> <span lang="EN-US"> <o:p> </o:p> </span> </font> </p> </td> <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; BORDER-LEFT-COLOR: #d4d0c8; PADDING-BOTTOM: 0cm; WIDTH: 321.7pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="429"> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <font size="3"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">面向对象大多数情冉|创徏可重用的c,模块化分解的面向对象原则是应用程序的设计方式?/span> <span lang="EN-US"> <o:p> </o:p> </span> </font> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <span lang="EN-US"> <o:p> <font face="Times New Roman" size="3"> </font> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <font size="3"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">相关的原则,如抽象,装Q接口和实现逻辑的分R服务重用是q个目标的gl?/span> <span lang="EN-US"> <o:p> </o:p> </span> </font> </p> </td> </tr> <tr style="mso-yfti-irow: 2"> <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 104.4pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="139"> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <font size="3"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">服务的契U?/span> <span lang="EN-US"> <o:p> </o:p> </span> </font> </p> </td> <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; BORDER-LEFT-COLOR: #d4d0c8; PADDING-BOTTOM: 0cm; WIDTH: 321.7pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="429"> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <font size="3"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">服务契约的需求和构徏面向对象应用中的接口相类伹{接口提供了一U提炼类描述的方法,q和</span> <span lang="EN-US"> <font face="Times New Roman">WSDL </font> </span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的定义非常相伹{与</span> <span lang="EN-US"> <font face="Times New Roman">SOA</font> </span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">鼓励的?/span> <span lang="EN-US"> <font face="Times New Roman">WSDL</font> </span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">优先”方法一P“接口优先”方法也被认为是面向对象的最佛_c?/span> <span lang="EN-US"> <o:p> </o:p> </span> </font> </p> </td> </tr> <tr style="mso-yfti-irow: 3"> <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 104.4pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="139"> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <font size="3"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">服务的松耦合</span> <span lang="EN-US"> <o:p> </o:p> </span> </font> </p> </td> <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; BORDER-LEFT-COLOR: #d4d0c8; PADDING-BOTTOM: 0cm; WIDTH: 321.7pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="429"> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <font size="3"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">管接口的创Z定程度上类从类的用者解耦,但耦合是面向服务从面向对象l承到的主要Ҏ?/span> <span lang="EN-US"> <o:p> </o:p> </span> </font> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <span lang="EN-US"> <o:p> <font face="Times New Roman" size="3"> </font> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <font size="3"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">相对面向服务设计ҎQ承和其他面向对象原则造成逻辑处理单元之间的紧耦合?/span> <span lang="EN-US"> <o:p> </o:p> </span> </font> </p> </td> </tr> <tr style="mso-yfti-irow: 4"> <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 104.4pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="139"> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <font size="3"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">服务的抽?/span> <span lang="EN-US"> <o:p> </o:p> </span> </font> </p> </td> <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; BORDER-LEFT-COLOR: #d4d0c8; PADDING-BOTTOM: 0cm; WIDTH: 321.7pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="429"> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <font size="3"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">面向对象的抽象原则要求一个类提供一个接口给外部世界Qƈ通过q个接口来访问类。封装通过建立信息隐藏概念来支持这U方式,通过接口暴露的类内部的Q何逻辑都不能被外部所讉K?/span> <span lang="EN-US"> <o:p> </o:p> </span> </font> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <span lang="EN-US"> <o:p> <font face="Times New Roman" size="3"> </font> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <font size="3"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">服务抽象可以基本辑ֈ对象抽象和封装的E度。它的目标是隐藏服务的内部细节,因此只有服务契约是可以得到的Q服务的h者也只要兛_服务契约?/span> <span lang="EN-US"> <o:p> </o:p> </span> </font> </p> </td> </tr> <tr style="mso-yfti-irow: 5"> <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 104.4pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="139"> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <font size="3"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">服务的组?/span> <span lang="EN-US"> <o:p> </o:p> </span> </font> </p> </td> <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; BORDER-LEFT-COLOR: #d4d0c8; PADDING-BOTTOM: 0cm; WIDTH: 321.7pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="429"> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <font size="3"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">面向对象支持兌的概念,如聚合和l合。在松耦合的上下文中,q些概念也被面向服务的方法支持?/span> <span lang="EN-US"> <o:p> </o:p> </span> </font> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <span lang="EN-US"> <o:p> <font face="Times New Roman" size="3"> </font> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <font size="3"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">例如Q可用与l合成对象层ơ结构相同的Ҏ来将可组合的服务装配成服务层ơ结构?/span> <span lang="EN-US"> <o:p> </o:p> </span> </font> </p> </td> </tr> <tr style="mso-yfti-irow: 6"> <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 104.4pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="139"> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <font size="3"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">服务的自沅R</span> <span lang="EN-US"> <o:p> </o:p> </span> </font> </p> </td> <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; BORDER-LEFT-COLOR: #d4d0c8; PADDING-BOTTOM: 0cm; WIDTH: 321.7pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="429"> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <font size="3"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">自治的特性在面向服务设计中比在面向对象方法中有更重要的作用。在面向服务中,通过利用服务间的松耦合关系Q可以实现逻辑处理单元之间的独立性?/span> <span lang="EN-US"> <o:p> </o:p> </span> </font> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <span lang="EN-US"> <o:p> <font face="Times New Roman" size="3"> </font> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <font size="3"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在面向对象设计中Q跨对象引用和承相关的依赖支持较低E度的对象自治?/span> <span lang="EN-US"> <o:p> </o:p> </span> </font> </p> </td> </tr> <tr style="mso-yfti-irow: 7"> <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 104.4pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="139"> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <font size="3"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">服务的无状?/span> <span lang="EN-US"> <o:p> </o:p> </span> </font> </p> </td> <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; BORDER-LEFT-COLOR: #d4d0c8; PADDING-BOTTOM: 0cm; WIDTH: 321.7pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="429"> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <font size="3"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">ql合和数据构成的对象天生是有状态的。服务中提倡的无状态趋向于背离典型的面向对象设计?/span> <span lang="EN-US"> <o:p> </o:p> </span> </font> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <span lang="EN-US"> <o:p> <font face="Times New Roman" size="3"> </font> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <font size="3"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">管可以创徏有状态服务和无状态对象,但无状态原则是面向服务中通常更加的?/span> <span lang="EN-US"> <o:p> </o:p> </span> </font> </p> </td> </tr> <tr style="mso-yfti-irow: 8; mso-yfti-lastrow: yes"> <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 104.4pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="139"> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <font size="3"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">服务的发?/span> <span lang="EN-US"> <o:p> </o:p> </span> </font> </p> </td> <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; BORDER-LEFT-COLOR: #d4d0c8; PADDING-BOTTOM: 0cm; WIDTH: 321.7pt; BORDER-TOP-COLOR: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="429"> <p class="doctext" style="MARGIN: auto 0cm"> <span style="FONT-SIZE: 10.5pt"> <font face="宋体">设计一致的和自描述的类接口是另一个面向对象最佛_践,它能改进识别和区别逻辑处理单元Ҏ。这些特性也允许c被更容易地发现?span lang="EN-US"><o:p></o:p></span></font> </span> </p> <p class="doctext" style="MARGIN: auto 0cm"> <span style="FONT-SIZE: 10.5pt"> <font face="宋体">可发现性是面向服务范例中强调的另一个原则。它鼓励服务契约的交互支持在设计和运行时的可发现性?/font> </span> <span lang="EN-US"> <o:p> </o:p> </span> </p> </td> </tr> </tbody> </table> <p> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"> <font size="3">可以看到Q面向对象和面向服务q竞争者。面向服务显然在不少斚w是以面向对象为基Q当前典型的面向服务的解x案将由服务(遵@面向服务的原则)和面向对象的lg构成。在合理的设计中Q每个原则都能被适当地处理ƈ能相互补充?/font> </span> </p> <img src ="http://www.aygfsteel.com/jiangmin/aggbug/68906.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/jiangmin/" target="_blank">JiangMin</a> 2006-09-11 10:46 <a href="http://www.aygfsteel.com/jiangmin/articles/68906.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SOA的几个关键特?/title><link>http://www.aygfsteel.com/jiangmin/articles/68905.html</link><dc:creator>JiangMin</dc:creator><author>JiangMin</author><pubDate>Mon, 11 Sep 2006 02:44:00 GMT</pubDate><guid>http://www.aygfsteel.com/jiangmin/articles/68905.html</guid><wfw:comment>http://www.aygfsteel.com/jiangmin/comments/68905.html</wfw:comment><comments>http://www.aygfsteel.com/jiangmin/articles/68905.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/jiangmin/comments/commentRss/68905.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/jiangmin/services/trackbacks/68905.html</trackback:ping><description><![CDATA[ <p>SOA的几个关键特性:一U粗_度、松耦合服务架构Q服务之间通过单、精定义接口进行通讯Q不涉及底层~程接口和通讯模型?/p> <p>1  可从企业外部讉K B2B协议</p> <p>2  随时可用</p> <p>3  _粒度服务接?/p> <p>4 分Q粗_度的服务比l粒度的服务重用性差Q所以要采用不同的粒度等U来创徏服务?/p> <p> 在服务分U方面,L意服务层的公开服务通常由后台系l(BES'sQ或SOAq_中现有的本地服务l成。因此允许在服务层创建私有服务是非常重要的?/p> <p>5  松散耦合</p> <p> 服务接口作ؓ与服务实现分ȝ实体而存在。大多数松散耦合Ҏ都依靠基于服务接口的消息。基于消息的接口能够兼容多种传输方式Q如HTTP、JMS、TCP/IP、MOM{)。基于消息的接口可以采用同步和异步协议实现?/p> <p> 当客戯用消息类Web服务Ӟ客户通常会发送的是一个完整的文档Q如采购订单Q,而非一l离散的参数?/p> <p>6  可重用的服务及服务接口设计管?/p> <p>7  标准化的接口</p> <p> Web服务使应用功能得以通过标准化接口(WSDLQ提供,q可Z标准化传输方式(HTTP和JMSQ、采用标准化协议QSOAPQ进行调用?/p> <p>8  支持各种消息模式</p> <p> 无状态的消息、有状态的消息、等q消?/p> <p>9  _定义的服务接?/p> <p> MQSOA可以看作是B/S模型、XML/Web Service技术之后的自然延。SOA能够帮助我们站在一个新的高度理解企业架构中的各种lg的开发、部|Ş式,</p> <p>它将帮助企业pȝ架构者以更迅速、更可靠、更具重用性架构整个业务系l。较之以往Q以SOA架构的系l能够更加从容地面对业务的急剧变化?br /></p> <img src ="http://www.aygfsteel.com/jiangmin/aggbug/68905.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/jiangmin/" target="_blank">JiangMin</a> 2006-09-11 10:44 <a href="http://www.aygfsteel.com/jiangmin/articles/68905.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ϫ</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ŷ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ֹ</a>| <a href="http://" target="_blank">ͼʲ</a>| <a href="http://" target="_blank">ư</a>| <a href="http://" target="_blank">ؿ˹</a>| <a href="http://" target="_blank">ƺ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">³</a>| <a href="http://" target="_blank">γ</a>| <a href="http://" target="_blank">ڳ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">᯹</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Խ</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">͸</a>| <a href="http://" target="_blank">н</a>| <a href="http://" target="_blank">Ϸ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">û</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>