日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BizTalk Orchestration Publish Host In-Process Wcf Service without IIS 多种供客户端调用方式

發布時間:2023/12/31 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BizTalk Orchestration Publish Host In-Process Wcf Service without IIS 多种供客户端调用方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

BizTalk Orchestration Publish Host In-Process Wcf Service without IIS 多種供客戶端調用方式

BizTalk Server 2006 R2開始支持WCF adapter本次Demo用的是BizTalk Server 2010,把一個簡單的流程發布成一個WCF服務供客戶端調用。

有了wcf-custom adapter解決BizTalk和外部交互必須借助第三方協議進行,比如FTP,MSMQ,HTTP(IIS),database,現在通過BizTalk發布in-process的wcf就可以,變得非常方便簡單。

BizTalk流程設計

流程很簡單一個雙向的接收端口,實現Request-Response的請求;

Deploy到BizTalk Server ,利用BizTalk WCF Service Publishing Wizard發布WCF服務。

利用BizTalk WCF Service Publishing Wizard發布服務的操作就不說了,只能發布Host在IIS上生成BizTalkServerIsolatedHost Receive Port的配置和一個WCF的接口服務。

?

發現發布IsolatedHost服務比較麻煩必須安裝IIS才可以用,其實WCF Adapter支持Host In-Process,如圖

配置In-Process WCF-Custom Receive Location

配置成功了

客戶端調用發布的服務

如果根據默認 svcutil.exe http://localhost:1100/service?wsdl 生成的Proxy類和Endpoint config 調用服務基本的代碼如下:

//TwoWayAsyncClient client = new TwoWayAsyncClient();string requestBody="<ns0:Request xmlns:ns0=\"http://BizTalkExposeWCF.Request\"><Record><Field1>Field1_0</Field1></Record></ns0:Request>";//MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(requestBody));//XmlReader reader = XmlReader.Create(new System.IO.StringReader(requestBody));//Message request = Message.CreateMessage(MessageVersion.Default, "BizTalkSubmit", reader);//Console.WriteLine(request);//Message response= client.BizTalkSubmit(request);

?

?

根據這樣的代碼肯定會報錯System.NotSupportedException: Specified method is not supported.

報錯原因是不知道BizTalk流程的接收端口發布的具體contract 生成的Proxy里沒有。

解決這個問題的辦法是使用BizTalk WCF Service Publishing Wizard發布的IIS服務生成的Proxy代理來Call這個服務就可以解決這個問題

? ?

BizTalkExposeWCF_FlowProcess_ExposePortClient client = new BizTalkExposeWCF_FlowProcess_ExposePortClient();//TwoWayAsyncClient client = new TwoWayAsyncClient();string requestBody="<ns0:Request xmlns:ns0=\"http://BizTalkExposeWCF.Request\"><Record><Field1>Field1_0</Field1></Record></ns0:Request>";//MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(requestBody));//XmlReader reader = XmlReader.Create(new System.IO.StringReader(requestBody));//Message request = Message.CreateMessage(MessageVersion.Default, "BizTalkSubmit", reader);//Console.WriteLine(request);//Message response= client.BizTalkSubmit(request); Request request=new Request();request.Record = new RequestRecord();request.Record.Field1="request";Response response = client.Operation_1(request);Console.Write(response.Result.Field);Console.ReadLine();client.Close();

?

?

直接使用http Post調用WCF服務

如果你覺得這么做還是麻煩,那么還有一種最簡單的方法來實現交互。直接通過http Post把request message Post進流程并且接收response message

只需要修改一下receive Location配置

客戶端使用Fiddler模擬

?

是不是很簡單。

希望對大家有幫助

總結

以上是生活随笔為你收集整理的BizTalk Orchestration Publish Host In-Process Wcf Service without IIS 多种供客户端调用方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。