簡體   English   中英

我應該使用WCF還是僅僅使用Razor / cshtml文件來創建服務?

[英]Should I go for WCF or simply Razor/cshtml file for creating services?

我有一個舊的Web表單,它將通過一些Ajax功能進行擴展。 我已經升級到.net 4,但想知道在創建新服務時采用哪種方法。

我在編寫wcf服務方面沒有太多經驗,而使用這樣的簡單cshtml文件編寫服務似乎要簡單得多:

@{    
    var db = Database.Open("MyConnectionString); 
    var data = db.Query("SELECT * FROM MyTable WHERE Col1 = @0", '123');
    Json.Write( new { results=data}, Response.Output);
}

與創建wcf服務相比,使用此策略有哪些陷阱?

謝謝你的幫助

拉爾西

根據您對CodeCaster的評論,我認為您正在混淆Web服務和Web方法的概念。 如果您要做的只是將Ajax添加到您的應用中,那么您需要使用Web方法,這是返回json的操作方法。 而且,由於您使用的是網頁,因此您的方法是完全有效的。

使用WCF,您可以執行以下操作:

[OperationContract]
public UserNow GetCurrentUser()
{
    string UserName = Membership.GetUser().UserName; 
    string UserToView = Request.Params["UserToView"];
    //do a bunch of things.
    return UserNow;
}

優點?

  • 它是強類型的(您不能返回字符串,布爾值或新的FooBar()或僅返回任何內容,而可以進行Response.Write全部或不輸入任何內容)
  • 生成了WSDL,客戶端可以使用該WSDL,以便他們知道他們可以執行哪些操作以及發送哪些數據類型
  • 使用WCF,您無需添加任何代碼即可輕松添加另一個綁定以支持其他范圍的客戶端(用於web服務的basicHttp和wsHttp,用於與其他用.NET編寫的其他客戶端更有效地通信的netTcp)。

我可能會忘記很多其他事情。

其他響應中未提及的一個考慮因素是Json.Write的性能。 它適用於帶有幾列的小型記錄集,但我注意到它的運行速度很慢, 甚至只有70條記錄和10列 在Web應用程序正在“ Ajaxifying”的情況下,這一點尤其重要,在這種情況下,您通常試圖使該應用程序對用戶交互更加敏感。 在這些情況下,我通常將使用Json.Write只是為了獲得概念證明的有效性,但是最后將返回並修改剃刀頁面以遍歷返回的記錄並構建帶有StringBuilder的JSON字符串並編寫該代碼。到輸出。

我不知道WCF的性能,但是如果它比循環字符串生成器快,則可以將其添加到上述好處列表中(以權衡設置它的復雜性)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM