[英]How to host wcf service programmatically on azure
我想在Azure上托管一個wcf服務,但是這個實例化必須是動態的,所以我想根據需要實例化新服務但是......
new ServiceHost(new Service(),<<What the heck is the base URI!?>>)
什么應該是基礎Uri(方案,服務器名稱和端口):
這些也是可能的:
我正在尋找一個解決方案,因為$$$原因不涉及ServiceBus。
無論是在Web角色實例還是工作者角色實例上,這種方法都是相同的,因為它們本質上都是Windows 2008 Server(只是Web角色有IIS運行,它也消耗了幾個端口)。 無論您想要掛起wcf服務的端口,只需將它們定義為輸入端點(每個端口一個端點),並確定哪個角色處理該端點。
只要您有可用的端口,就可以擁有多個ServiceHost。 您目前限制為每個部署總共25個輸入端點和25個內部端點,因此這是您的絕對限制。 當然,如果啟用RDP,則可用端口數會下降。 哦:關於協議:如果你想要http和tcp,你需要定義兩個端點,因為協議是用端點定義定義的。
內部端點WCF服務幾乎完全相同,但您可以取消安全性並使用net.tcp進行快速傳輸。 負載平衡的一個區別是:
對於后一種情況:假設您的Web角色需要與內部端點上的Worker Role的WCF服務進行通信。 您需要枚舉所有實例,獲取每個實例的IP +端口,然后隨機選擇一個(或循環,或您選擇的任何方法)。 這是一個示例方法,它返回給定角色的隨機端點實例和給定的端點名稱(從Michael Washam的博客借來的代碼):
private String GetRandomServiceIP(String roleName, String endPointName)
{
var endpoints = RoleEnvironment.Roles[roleName].Instances.Select(i => i.InstanceEndpoints[endPointName]).ToArray();
var r = new Random(DateTime.Now.Millisecond);
int ipIndex = r.Next(endpoints.Count());
return endpoints[ipIndex].IPEndpoint.Address.ToString();
}
至於設置WCF服務和相關的URI,我強烈建議抓住最新的Windows Azure培訓套件並走過工作者角色通信動手實驗室,該實驗室詳細介紹了如何設置ServiceHost,輸入端點和內部端點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.