65.9K
CodeProject 正在变化。 阅读更多。
Home

MicroService4Net - 使用 C# 轻松创建微服务

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.94/5 (21投票s)

2015年4月10日

MIT

3分钟阅读

viewsIcon

262643

downloadIcon

11505

创建一个简单的自托管 Web API 服务,只需 2 分钟即可作为控制台和服务的形式运行

引言

“微服务”是一种软件架构设计模式,其中复杂的应用程序由小型、独立的进程组成,这些进程使用与语言无关的API相互通信。这些服务规模小、高度解耦,并且专注于执行一项小型任务。

来自维基百科 (http://en.wikipedia.org/wiki/Microservices)

背景

在过去的几年里,微服务已成为许多复杂系统中常见的软件架构。

在本技巧中,我想介绍一个我编写的库 (MicroService4Net),它使C#程序员能够非常轻松地创建此类服务。

因此,如果您按照我的说明操作,您将获得一个HTTP服务器,它可以响应HTTP请求并返回JSON响应(非常粗略地说)。

您可以将其作为Windows服务或控制台应用程序运行(打开新项目时,您无需只选择其中一种)。

并且您不需要IIS(所有内容都是自托管的)。

Using the Code

您可以从此处下载源代码 这里

打开一个新的Visual Studio控制台应用程序,并向其中添加MicroService4Net NuGet包。

注意使用最高依赖性行为。

安装依赖项

Program.cs文件中,添加此using语句

using MicroService4Net;

Main函数中编写以下代码

static void Main(string[] args)
{
    var microService = new MicroService();
    microService.Run(args);
}

添加一个新类,用于您的控制器(例如ExampleController

using System.Web.Http;
public class ExampleController : ApiController
{
    [Route("Example")]
    public string GetExample()
    {
        return "Example";
    }
}

现在,您可以将其作为控制台应用程序运行

打开网络浏览器并浏览到 https://:8080/Example

默认端口为8080。但是,如果您想更改端口,只需在Main函数中执行以下操作

static void Main(string[] args)
{
    var microService = new MicroService(1234);
    microService.Run(args);
}

现在,它将在1234端口上运行。

请注意,如果要使其在80端口上运行,则应以管理员身份运行程序。

现在,您可以使用它编写任何您想要的服务,如果您熟悉Web API控制器,它与Web API控制器完全相同。创建新服务所需的时间非常短,因此您可以专注于您的实际逻辑。

到目前为止,我们将其作为控制台应用程序运行,但是如果您想将其作为Windows服务运行,这也是可能的!

您需要添加另外两个空类(没有它们,Windows服务将无法工作!)

using MicroService4Net.ServiceInternals;
public class MicroServiceInstaller : ProjectInstaller { }
public class MicroServiceService : InternalService { }

并向项目添加两个引用

  1. System.Configuration.Install
  2. System.ServiceProcess

就是这样,现在您可以将服务安装为Windows服务

以管理员身份运行cmd(为了安装Windows服务,您必须是管理员),转到找到已编译代码的文件夹并编写(如果您的EXE名为MyMicroService

MyMicroService.exe -install

现在您有一个Windows服务正在运行,它将在每次系统启动时自动启动。

您可以使用浏览器检查它

如果你想卸载服务,你只需要执行以下操作

MyMicroService.exe -uninstall

您甚至不需要停止Windows服务。

当然,如果您只想将其作为控制台运行

MyMicroService.exe

更新

MicroService4Net 的 2.0 版本已发布。此版本使用 Owin 代替 ASP.NET Web Api 自托管,正如 codefabricator 建议的那样。API 没有更改。

现在默认启用 CORS。如果您不想启用它,您可以通过这种方式创建 MicroService

var microService = new MicroService(useCors: false);

下一步?

我的代码实际上是开源的,可以在“有用链接”部分找到。

如果您需要一些关于代码的解释,我很乐意撰写另一篇文章进行解释。

欢迎提出任何建议或你发现的问题。

有用链接

© . All rights reserved.