wcf、webservivce、remoting、wse、Enterprise Service、msmq.... 亂談
2011-06-22 14:46 熬夜的蟲(chóng)子 閱讀(693) 評(píng)論(1) 收藏 舉報(bào)前陣子剛聽(tīng)說(shuō)后十年是soa和并行計(jì)算的,現(xiàn)在又來(lái)后十年是移動(dòng)終端的 雖說(shuō)不矛盾但是也不和諧,這個(gè)就不多扯了
wcf
Windows Communication Foundation (WCF) 是 Microsoft 為構(gòu)建面向服務(wù)的應(yīng)用程序而提供的統(tǒng)一編程模型。借助這一模型,開(kāi)發(fā)人員可以構(gòu)建既能跨平臺(tái)與現(xiàn)有投資集成又能與現(xiàn)有投資交互的安全、可靠的事務(wù)處理解決方案。
webservivce (ASMX)
ASP.NET Web 服務(wù) (ASMX)。這種技術(shù)用于與基于 J2EE 的現(xiàn)有預(yù)定應(yīng)用程序,以及與 Internet 上的合作伙伴應(yīng)用程序進(jìn)行通信。因?yàn)槟壳按蠖鄶?shù)平臺(tái)都支持基本的 Web 服務(wù),所以在 WCF 發(fā)布之前,這是實(shí)現(xiàn)跨供應(yīng)商互操作性的最直接的方法。
remoting
NET Framework 遠(yuǎn)程處理。這種技術(shù)可用于與呼叫中心應(yīng)用程序進(jìn)行通信,因?yàn)槎叨际墙⒃?.NET Framework 之上的。遠(yuǎn)程處理專(zhuān)門(mén)為緊密耦合的 .NET 到 .NET 通信而設(shè)計(jì),因此它為本地網(wǎng)絡(luò)中的應(yīng)用程序提供了無(wú)縫而直接的開(kāi)發(fā)體驗(yàn)。
Enterprise Service
企業(yè)服務(wù)。租車(chē)預(yù)定應(yīng)用程序使用該技術(shù)來(lái)管理對(duì)象生存期和定義分布式事務(wù)。在與此應(yīng)用場(chǎng)景中的任何其他應(yīng)用程序通信和集成時(shí),這些功能會(huì)很有用,但是企業(yè)服務(wù)僅支持有限的一組通信選項(xiàng)。
WSE
可與 ASMX 一起使用,以便與基于 J2EE 的預(yù)定應(yīng)用程序以及合作伙伴應(yīng)用程序進(jìn)行通信。它實(shí)現(xiàn)了最新定義的一些 Web 服務(wù)協(xié)議(統(tǒng)稱(chēng) WS-* 規(guī)范),因此只要相關(guān)所有應(yīng)用程序都支持這些新規(guī)范的兼容版本,WSE 就可提供更加靈活的 Web 服務(wù)安全性。
MSMQ
Microsoft 消息隊(duì)列 (MSMQ)。用于與基于 Windows 的合作伙伴應(yīng)用程序進(jìn)行通信,這些應(yīng)用程序?qū)?shù)據(jù)傳送、工作量分離以及應(yīng)用程序生存期均要求有保證。消息隊(duì)列提供持久穩(wěn)定的消息傳送,這通常是間歇式連接的應(yīng)用程序的最佳解決方案。
WCF的傳輸協(xié)議
◆BasicHttpBinding不支持可靠性,BasicHttpBinding面向舊的ASMX Web服務(wù),是不具有可靠性的;
◆NetMsmqBinding不支持可靠性,MSMQ協(xié)議,使用消息隊(duì)列,針對(duì)斷開(kāi)調(diào)用,不存在傳輸會(huì)話;
◆MsmqIntegrationBinding不支持可靠性;支持WCF與MSMQ協(xié)議通信,不存在傳輸會(huì)話;
◆NetPeerTcpBinding不支持可靠性。NetPeerTcpBinding則為廣播場(chǎng)景設(shè)計(jì)。
◆WSDualHttpBinding支持可靠性的,建立兩個(gè)http會(huì)話通道,保持回調(diào)通道,確保基于HTTP協(xié)議的客戶(hù)端存在;
◆NetTcpBinding 支持可靠性,顯然使用TCP傳輸數(shù)據(jù)。以及各種WS綁定,默認(rèn)情況下并不支持可靠性,允許啟用;
◆NetNamedPipeBinding綁定總是擁有一個(gè)確定的從客戶(hù)端到服務(wù)的跳數(shù),因而它的可靠性是綁定固有的;
◆WSFederationHttpBinding支持可靠性,支持聯(lián)邦通信協(xié)議,支持在多個(gè)安全區(qū)域進(jìn)行安全會(huì)話。
應(yīng)用比較:
wcf是WebService,Remoting,...之上的一層抽象,讓程序員們以一種統(tǒng)一的方式去編寫(xiě)基于WebService或Remoting。。。的程序,而且它們之間的切換很簡(jiǎn)單,只需要改一下配置。 也就是說(shuō),開(kāi)始服務(wù)以WS向外提供,因?yàn)樾枨蟾淖儯臑镽emoting向外提供,只需要修改配置。WCF封裝了各種不同實(shí)現(xiàn)的具體細(xì)節(jié)。WCF服務(wù)元數(shù)據(jù)是WCF服務(wù)的核心部分服務(wù)地址(Address)、綁定(通信協(xié)議Binding)、契約(服務(wù)、操作、數(shù)據(jù)Contract)的原始描述信息。
WSE 3.0 僅支持安全框架,而 WCF 支持安全框架、可靠消息處理框架和事務(wù)框架。如表格所示,WCF 還提供更多的本地處理行為和自定義掛鉤。實(shí)際上,WCF 對(duì)象模型中的每一層都可以通過(guò)代碼、屬性或配置進(jìn)行擴(kuò)展。最終,WCF 提供更完整的開(kāi)發(fā)框架,該框架是圍繞各種 Web 服務(wù)協(xié)議從頭開(kāi)始設(shè)計(jì)的。WSE支持WS-* 標(biāo)準(zhǔn)。WCF基本上實(shí)現(xiàn)了目前所有的WS-* 標(biāo)準(zhǔn)。
ASMX基本的網(wǎng)絡(luò)服務(wù)的互用性,Remoting TCP協(xié)議、.net與.net之間的交互通信,Enterprise Service的分布式事務(wù),msmq的隊(duì)列消息。WCF 同樣具備。
WCF 定位為新的 .NET Web 服務(wù)平臺(tái),該平臺(tái)可以完全替代現(xiàn)在對(duì) 現(xiàn)行分布式系統(tǒng) 所提供功能的需要。
性能比較:
{
Order[] orders = new Order[numOrders];
for (int i = 0; i < numOrders; i++)
{
Order order = new Order();
OrderLine[] lines = new OrderLine[2];
lines[0] = new OrderLine();
lines[0].ItemID = 1;
lines[0].Quantity = 10;
lines[1] = new OrderLine();
lines[1].ItemID = 2;
lines[1].Quantity = 5;
order.orderItems = lines;
order.CustomerID = 100;
order.ShippingAddress1 = "012345678901234567890123456789";
order.ShippingAddress2 = "012345678901234567890123456789";
order.ShippingCity = "0123456789";
order.ShippingState = "0123456789012345";
order.ShippingZip = "12345-1234";
order.ShippingCountry = "United States";
order.ShipType = "Courier";
order.CreditCardType = "XYZ";
order.CreditCardNumber = "0123456789012345";
order.CreditCardExpiration = DateTime.UtcNow;
order.CreditCardName = "01234567890123456789";
orders[i] = order;
}
return orders;
}


Here the service just returns a string "successful" or "failure".
For the order message the following code service is used:
static public ProductInfo CreateProductInfo(int count)
{
ProductInfo productInfo = new ProductInfo();
productInfo.TotalResults = count.ToString();
productInfo.TotalPages = "1";
productInfo.ListName = "Books";
productInfo.Details = new Details[count];
for (int x = 0; x < count; x++)
{
productInfo.Details[x] = GetDetail();
}
return productInfo;
}
static Details GetDetail()
{
Details details = new Details();
details.Url =
"http://www.abcd.com/exec/obidos/ASIN/043935806X/qid=1093918995/sr=k
a-1/ref=pd_ka_1/103-9470301-1623821";
details.Asin = "043935806X";
details.ProductName = "Any Book Available";
details.Catalog = "Books";
details.ReleaseDate = "07/01/2003";
details.Manufacturer = "Scholastic";
details.Distributor = "Scholastic";
details.ImageUrlSmall =
"http://images.abcd.com/images/P/043935806X.01._PE60_PI_SZZZZZZZ_.jpg";
details.ImageUrlMedium =
"http://images.abcd.com/images/P/043935806X.01._PE60_PI_MZZZZZZZ_.jpg";
details.ImageUrlLarge =
"http://images.abcd.com/images/P/043935806X.01._PE60_PI_LMZZZZZZZ_.jpg";
details.ListPrice = "29.99";
details.OurPrice = "12.00";
details.UsedPrice = "3.95";
details.Isbn = "043935806X";
details.MpaaRating = "";
details.EsrbRating = "";
details.Availability = "Usually ships within 24 hours";
return details;
}


![]() |
原創(chuàng)作品允許轉(zhuǎn)載,轉(zhuǎn)載時(shí)請(qǐng)務(wù)必以超鏈接形式標(biāo)明文章原始出處以及作者信息。 作者:熬夜的蟲(chóng)子 點(diǎn)擊查看:博文索引 |

浙公網(wǎng)安備 33010602011771號(hào)