2012-02-29 61 views
0

我正在嘗試學習wcf的實際示例。我跟着scalable wcf solution tutorial和我的服務工作正常,客戶端從我的控制檯應用程序。行得通。但我想要的是從mvc視圖(剃鬚刀)頁面消耗我的服務槽js。在我的客戶端控制檯應用程序,我訪問到代理與訪問wcf從mvc視圖槽js

IService proxy = new ChannelFactory<IService>(Configuration.MyServiceActiveEndpoint).CreateChannel(); 
List<MyObjectDto> data = proxy.GetMyData(); 

... 如何practicaly achive從MVC視圖頁面創建這個代理客戶(不添加服務引用)。謝謝

回答

0

請查閱servicestack.net以瞭解.net中最乾淨和最好的Web服務實現。沒有配置,很容易從jQuery調用,並且默認返回json。輕鬆開始使用NuGet Mvc 3包裝。

+0

當然,謝謝,但現在我想解決這個問題。所以任何人? – user1233784 2012-02-29 11:20:08

+0

我是否需要在控制器內部創建代理以創建將與服務進行通信的通道? – user1233784 2012-02-29 12:26:42

0

您正在使用的教程已經註冊了一個帶有enableWebScript行爲的端點 - 當您訪問http://server/virtualdirectory/X.svc/json url時,您應該會自動生成一個js代理。將該js文件包含在您的mvc視圖中。

如果在MVC的Web應用主機WCF服務,您可以使用Url.Content:

<script src="@Url.Content("~/X.svc/json")" type="text/javascript"></script> 

然後,只需調用JS從服務 - 使用JavaScript從這個職位爲例:http://dotnetslackers.com/articles/ajax/JSON-EnabledWCFServicesInASPNET35.aspx

+0

請注意,這是如何從js使用WCF服務的答案。它沒有考慮這個問題,如果這是從MVC的Web應用程序做的正確的事情 - [ShaneCourtrille的答案](http://stackoverflow.com/a/9508016/829181)涵蓋了這一點。 – armasanea 2012-02-29 23:56:44

1

你不這樣做,你真的不這樣做。這徹底打破了模型 - 視圖 - 控制器(MVC)的整個觀點。控制器應該是訪問WCF服務並將數據返回給View的人。