[英]Creating a ASP.NET web service, not WCF
我想擁有一個客戶端應用程序和Web應用程序(或服務,沒有UI),並且我想從我的桌面應用程序內部連接到所述Web服務,並擁有兩個同時的網絡流,其中一個用於上載數據和讀取它們在服務器上,另一個用於將內容發送到客戶端應用程序。
我不是在尋找一種解決方案,而不是使用比WCF或其他功能更多的解決方案,我只是想一種在Web服務器和客戶端應用程序之間創建連接並交換純二進制數據的方法。 我將自己實現協議,而不是像WCF提供的那樣尋找任何實體或封裝。
我什至不知道哪種項目類型是這里的最佳選擇。 我想到的是空的ASP.NET應用程序,也許我會上傳到FTP上,但是我不知道下一步該怎么做才能使應用程序可連接。 當然,我不是在尋求完整的解決方案,而是在一些文章中着重介紹如何在服務器和客戶端之間建立簡單的連接。 我希望服務器能夠立即更新客戶端,反之亦然,這就是為什么我正在尋找一種擁有流的方法的原因。
編輯:我也可以說該服務將被放置在ASP.NET托管上,如果有任何限制或任何限制,我不知道端口如何在這些主機上工作。
“ Web服務”和“網絡流”是不兼容的概念。 Web服務(理想情況下)是無狀態的且已斷開連接-因此,無論基礎網絡如何工作,它們都可以工作。 消息僅從客戶端到服務器交換,並封裝在HTTP請求/響應對中。 因此是“網絡服務”。
如果要交換“純二進制數據”(如您所說的),則只需要使用套接字(或使用.NET的TcpClient,它將套接字封裝在易於使用的API中)。 ASP.NET對此不適合。
從技術上講,您可以擁有一個使用套接字的應用程序,該套接字在ASP.NET主機進程中運行,但根據安全性的設置方式以及它受ASP.NET進程生命周期的限制,它可能無法正常工作(因此,它由IIS和可以隨時關閉或回收,而不會發出警告)。
看看MVC4 APIController 。 除了方法返回XML或JSON(或其他您喜歡的任何東西)之外,它的工作方式與股票MVC十分相似。
例如
/api/Users/Get
可能會返回類似
{
{"Username":"Bob", "Id":3},
{"Username":"Steve", "Id":4}
}
您還可以使用特殊的返回類型返回文件和其他流。 您甚至可以通過使用模型來獲得經過強類型驗證的輸入。
這里有一個示例 ,展示了完整的CRUD控制器和來自JS的示例AJAX調用,您可以在桌面應用中復制這些示例
您不想為此使用ASP.NET Web服務(ASMX)。 那是一項遺留技術,不應用於新開發。
您為什么不想使用WCF? 您認為它太復雜了嗎? 關於WCF的事情是,它消除了創建自己的協議的麻煩。
另外,您正在使用哪個版本的.NET? 使用.NET 4.0可以輕松配置WCF。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.