7

在搜索了一整天我应该使用什么之后,我不确定哪个选项最适合我的需求,所以我希望有更多经验的人可以帮助我。

我有一个winforms应用程序 ( c#) 和一个ASP.NET MVC 4Web 应用程序 ( c#)。我希望连接这些,目标是从我在MVC 4项目中使用的数据库发送和接收数据,但从 Windows 窗体应用程序中。我从 Windows 窗体应用程序发送到数据库的数据,然后由MVC 4Web 应用程序使用。

我对 web services / 完全陌生,Web Api所以我无法真正决定哪种选择是最好的。任何帮助将非常感激..

4

6 回答 6

3

如果您已经创建了MVC4项目,那么您可以向任何控制器添加操作并返回JSON如下数据:

public JsonResult GetCategoryList()
{
    var list = //return list
    return Json(list, JsonRequestBehavior.AllowGet);
}

或者您可以创建新项目MVC4并选择WEBAPI模板。它将为您创建 webapi 项目。它将使用示例创建。因此很容易创建webapi。在webapi它返回的数据自动转换为xmljson按照request

Web WCFAPI 抽象映射ASP.NET Web API大致如下

WCF Web AP -> ASP.NET Web API
Service -> Web API controller
Operation -> Action
Service contract -> Not applicable
Endpoint -> Not applicable
URI templates -> ASP.NET Routing
Message handlers -> Same
Formatters -> Same
Operation handlers -> Filters, model binders

其他链接

于 2013-09-26T12:03:34.807 回答
2

如果您已经有 MVC 4 应用程序,最好使用 Web API(RESTful 服务)

它的配置和使用都很简单。您实际上需要的是创建一个新控制器,例如:

class MyApiController: ApiController {

   public Post(SomeClass item) {
      ....connect to db and do whatever you need with the data
   }
}

您还应该为 Api 配置路由。

然后在您的 winForms 应用程序中,您可以简单地使用HttpClient类来执行 api 调用。

HttpClient aClient = new HttpClient();

// Uri is where we are posting to: 
Uri theUri = new Uri("https://mysite.com/api/MyApi");

// use the Http client to POST some content ( ‘theContent’ not yet defined). 
aClient.PostAsync(theUri, new SomeClass()); 

在这里查看一些实现细节: Web Api Getting Started

开始使用 WCF 并不像使用 Web API 那样容易。

于 2013-09-30T21:45:27.083 回答
1

鉴于您使用的标签,我猜您是在 SOAP Web 服务和 WCF 之间做出决定。鉴于这两个,我说去 WCF。SOAP Web 服务(在 Visual Studio 中实现)是较旧的技术;仍然可以使用,但是 WCF 可以做旧 SOAP 服务可以做的所有事情(包括看起来完全像 SOAP 服务)等等。

如果您有一个将您的 Web 服务器连接到您的数据库服务器的 Web 服务(这两个东西应该在不同的机器上;您的 Web 服务器必然会暴露给世界,而您的 DB 服务器应该像 Fort Knox 一样被锁定),我看不出为什么您不应该为内部 WinForms 应用程序使用相同的服务(使用 LAN/VPN 访问数据库服务器上的服务层)。对于必须通过 Internet 访问数据的 WinForms 应用程序,我建议将该服务重新实现为支持安全加密数据传输的 WCF 服务。您还可以将服务端点设置为仅接受 HTTPS 连接,从而只需通过 SSL/TLS 运行现有服务。

您选择什么主要取决于您可以投入多少时间资源来解决问题;迁移到 HTTPS 是一种快速修复,几乎不需要更改任何代码,而在 WCF 中重新实现将需要更多时间,但除了简单的安全隧道之外,还允许采取额外的安全措施。

于 2012-12-10T16:08:16.507 回答
1

或者像南希这样轻量级的东西:http: //nancyfx.org/

于 2013-09-26T12:51:49.127 回答
1

我们在使用 MVC4 WebApi 时遇到了一些问题,最终在服务器端 JavaScript/AJAX上使用ServiceStack用于 Web 客户端, RestSharp用于厚客户端。

我们的具体问题之一是无法自动生成文档、显着的性能差异以及对单元/集成测试的更好支持。

于 2013-10-01T23:09:31.393 回答
0

WCF我建议您使用WCF Data Servicesor ,而不是特别提倡OData,但前提是您需要确保它的安全。如果你选择 pure WCF,你会发现你最终会创建大量代码来处理从数据库中检索信息,然后将这些信息直接发送回你的客户。起初听起来并没有那么糟糕,但是在数据库中有大约 30 个实体之后,您很快就会厌倦纯粹的WCF解决方案。

OData很棒,它使用Entity Framework,并且可以快速打开现有数据库或您将要创建的数据库的数据操作。如果您可以确保服务安全,它将为您节省大量的开发时间。数据响应的格式是灵活的。还有很多为其他编程语言移植的客户端库。

保护服务的步骤非常简单。始终部署到https. 任何登录或注册方法都需要是 post 方法,它返回一个令牌(加密值)或一个可以加密并为任何后续请求发回的唯一秘密。最好使用令牌,并且令牌过期..因为否则您的服务和您的应用程序(无论是移动设备还是桌面设备)都需要具有共享的加密/解密方法。

于 2013-09-30T15:25:26.573 回答