如何在.NET中调用微服务

mak*_*zza 7 .net c# rest asp.net-web-api microservices

我创建了一个非常简单的REST微服务,它接收有关电子邮件的信息并发送它.微服务发送方法看起来像这样:

//EmailController
[HttpPost]
public IHttpActionResult Send(Email email)
{
    // send email via exchange
}
Run Code Online (Sandbox Code Playgroud)

现在在我的应用程序中,我使用RestSharp调用它,如下所示:

var client = new RestClient("http://localhost:51467/api/");
var request = new RestRequest("email/send", Method.POST);
request.RequestFormat = DataFormat.Json;
dynamic obj = new ExpandoObject();
obj.FromAddress = from;
obj.ToAddress = to;
obj.Subject = subject;
obj.Body = body;

request.AddBody(obj);
client.Execute(request);
Run Code Online (Sandbox Code Playgroud)

我有的问题:

  1. 这是打电话的最佳方式吗?显然我后来不得不添加错误处理等,但我说的更多的是我使用RestSharp进行调用的方式.

  2. 我发现我的应用程序需要知道微服务期望接收的对象有点不舒服 - 它没有用于确定的任何定义/接口/合同.这通常被认为是对REST好的,或者我应该实现我的应用程序所具有的某种接口,以便它可以更多地定义方式调用我的微服务.这甚至可以用REST做点什么?

谢谢你的帮助!

Eri*_*sch 5

REST 服务没有模式或 WSDL 类型的函数来定义服务的格式。与传统的 Web 服务相比,这使得它们更加轻量。

有一种称为 WADL(即 Web 应用程序描述语言)的东西,但这并不是真正的标准,并且没有得到广泛支持。这也颇具争议,因为很多人认为没有必要。

http://en.wikipedia.org/wiki/Web_Application_Description_Language

另请参阅有关程序员的讨论

https://softwareengineering.stackexchange.com/a/133693/4368