2011-11-19 27 views
0

我目前正在開發一個WCF發佈訂閱服務。發佈者將是一個asp.net,訂閱者將是一個winform應用程序。如何爲我的asp.net翻譯下面的代碼來閱讀並執行連接到我的服務的方式?如何爲我的asp.net翻譯下面的代碼?

class Program : IPostingContractCallback 
{ 
    static void Main(string[] args) 
    { 
     InstanceContext site = new InstanceContext(new Program()); 
     PostingContractClient client = new PostingContractClient(site); 

     client.PublishPost("testing"); 

     Console.WriteLine(); 
     Console.WriteLine("Press ENTER to shut down data source"); 
     Console.ReadLine(); 

     //Closing the client gracefully closes the connection and cleans up resources 
     client.Close(); 
    } 

    public void PostReceived(string postSampleData) 
    { 
     Console.WriteLine("PostChange(item {0})",postSampleData); 
    } 
+0

在WCF中發佈/訂閱得不到很好的支持。你想要做什麼? –

+0

上述代碼適用於C#應用程序,它在運行時充當發佈到服務的發佈者。我想要做的是將其轉換爲asp.net代碼,因爲我的發佈者是一個asp.net網頁。 – Thomas

回答

1

管理使用以下命令

svcutil.exe的/語言翻譯服務代碼:VB /out:generatedProxy.cs /config:app.config http://localhost:8888/PostingContract

並添加以下代碼到我的asp.net

Dim site As InstanceContext = New InstanceContext(New json2()) 
Dim client As PostingContractClient = New PostingContractClient(site) 

client.PublishPost(alertId:="") 
client.Close() 

Public Sub PostReceived(alertId As String) Implements IPostingContractCallback.PostReceived 

    Console.WriteLine("PostChange(item {0})", alertId) 

End Sub 
+0

創建一個代理WCF服務,它不'翻譯'服務代碼。也許語義,但我認爲很重要。 – kenny

+0

對不起。忘記添加代碼了。 – Thomas

0

如果我理解正確,你希望你的asp.net頁面充當發佈者。

我不認爲這會奏效。問題是,asp.net頁面只能在很短的時間內生存。如果您嘗試暫停您的代碼並暫停它,您將收到暫停狀態,並且該頁面將停止工作。

但是,如果你想要做的是讓發佈服務器在服務器端運行,你應該將它託管在一個windows服務中。