C# .net基于Http实现web server(web服务)
原文:C# .net基于Http实现web server(web服务)

什么是 web server? 

百度百科是这么解释的:

Web Server中文名称叫网页服务器或web服务器。WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务。

Web服务器可以解析(handles)HTTP协议。当Web服务器接收到一个HTTP请求(request),会返回一个HTTP响应(response),例如送回一个HTML页面。为了处理一个请求(request),Web服务器可以响应(response)一个静态页面或图片,进行页面跳转(redirect),或者把动态响应(dynamic response)的产生委托(delegate)给一些其它的程序例如CGI脚本,JSP(JavaServer Pages)脚本,servlets,ASP(Active Server Pages)脚本,服务器端(server-side)JavaScript,或者一些其它的服务器端(server-side)技术。无论它们(译者注:脚本)的目的如何,这些服务器端(server-side)的程序通常产生一个HTML的响应(response)来让浏览器可以浏览。

通俗的讲,Web服务器传送(serves)页面使浏览器可以浏览,然而应用程序服务器提供的是客户端应用程序可以调用(call)的方法(methods)。确切一点,你可以说:Web服务器专门处理HTTP请求(request),但是应用程序服务器是通过很多协议来为应用程序提供(serves)商业逻辑(business logic)。
常用的web Server

我们常用的web服务,是IIS,tomcat等。在进行网络通信的时候我们还会用到socket,甚至可以基于socket来实现HTTP通信,不过我们看一下更简单的实现。

我们能用来做什么?

IIS是非常强大的,功能齐全。我们的目标不是做一个和它一样的web server。而是基于这样的理念为我们的开发和架构服务。

特性和用处:

  比如在我们的软件中 需要在多个应用程序通信时。

  专用的功能带来更高的效率,比如我们仅仅处理某几一个网页的显示。我们见过路由里的那个管理路由器的页面吧,那就是一个轻量级的小web server实现,它可放不下一个windows + iis;

  内嵌的windows应用程序,比如我们想在winform里嵌入webBrower,配合它来做一些应用。

  

我们的实现

基于 .net 框架的 HttpListener 类 来处理http协议,我们只需要基于它写一个自己的处理类。

namespace HttpListenerDemo
{static class Program{/// <summary>/// 应用程序的主入口点。/// </summary>
        [STAThread]static void Main(){HttpListener httpListenner;httpListenner = new HttpListener();httpListenner.AuthenticationSchemes = AuthenticationSchemes.Anonymous;httpListenner.Prefixes.Add("http://localhost:8090/");httpListenner.Start();new Thread(new ThreadStart(delegate {try{loop(httpListenner);}catch (Exception){httpListenner.Stop();}})).Start();}private static void loop(HttpListener httpListenner){while (true) {HttpListenerContext context = httpListenner.GetContext();HttpListenerRequest request = context.Request;HttpListenerResponse response = context.Response;Servlet servlet = new MyServlet();servlet.onCreate();if (request.HttpMethod == "POST") {servlet.onPost(request, response);}else if (request.HttpMethod == "GET"){servlet.onGet(request, response);}response.Close();}}}
}public class Servlet{public virtual void onGet(System.Net.HttpListenerRequest request, System.Net.HttpListenerResponse response) { }public virtual void onPost(System.Net.HttpListenerRequest request, System.Net.HttpListenerResponse response) { }public virtual void onCreate(){}}public class MyServlet : HttpListenerDemo.Servlet{public override void onCreate(){base.onCreate();}public override void onGet(HttpListenerRequest request, HttpListenerResponse response){Console.WriteLine("GET:" + request.Url);byte[] buffer = Encoding.UTF8.GetBytes("OK");System.IO.Stream output = response.OutputStream;output.Write(buffer, 0, buffer.Length);// You must close the output stream.
            output.Close();//listener.Stop();
        }public override void onPost(HttpListenerRequest request, HttpListenerResponse response){Console.WriteLine("POST:" + request.Url);byte[] res = Encoding.UTF8.GetBytes("OK");response.OutputStream.Write(res, 0, res.Length);}}

如何使用?

1.写一个class 继承自 Servlet 类,在这里做具体的 业务逻辑实现。

2.复制main方法里的代码,在合适的实际 启动 httpListener。

参考:http://wenku.baidu.com/link?url=105Uuf34jmjbFnNEp1YTw1ry3Rx7_bXoKWQvLciQRUg9g5wJpViAedTYP45yUcruGEjuL7lACtwyu2g2KplUhOLA5XCLKbrY1NzWf7Ah1Fe

http://msdn.microsoft.com/zh-cn/library/system.net.httplistener(v=vs.110).aspx

posted on 2014-04-16 02:21 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/3667791.html

C# .net基于Http实现web server(web服务)相关推荐

  1. 物理路径与虚拟路径 及Web Server

    新建一个网站时: 完整路径:G:\wwwroot\WebSite1   WebSite1文件夹下有文件:Default.aspx 默认虚拟路径:/WebSite1 所以访问的时候应该这样:http:/ ...

  2. 搜索门户 Web Server分析

    搜索门户 Web Server分析 google 招聘了不少原来工作于apache php开发团队的人才,把web服务也搞得有点花稍,版本众多,且能在一个域名下联合使用.他们认为对php和mysql的 ...

  3. 带你认识什么是Web Server

    什么是Web Server Web Server中文名称叫网页服务器或web服务器.WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务.通俗的讲,Web服务 ...

  4. Web Server 配置安全

    Web Server Web服务器是web应用的载体. Web server的安全关注两点: 1.web server本身是否安全: 2.web server是否提供了可使用的安全功能: Apache ...

  5. 什么是Web?Web Service、Web API傻傻分不清楚?

    前言 分享一篇我在edx课程中看到的一篇英文文章,这篇文章详细阐述了Web.Web Server的含义,然后进一步介绍什么是Web API.Web Server.SOAP以及RESTFUL Web A ...

  6. 基于Docker + Consul + Nginx + Consul-template的服务负载均衡实现

    前言 上一篇文章使用 Consul 和 Registrator 在 docker 的容器环境中搭建了服务注册和发现集群.在服务发现和注册的基础上,本文将引入 Nginx反向代理服务器和 Consul- ...

  7. 基于Linux搭建一个类似Qik手机录像直播平台(服务器端:feng streaming server + web server,客户端:Android手机应用)

    一.服务器端 基于Feng开源的流媒体服务器增加一个Web server,用来接收客户端上传的视频数据,然后通过RTSP/RTP直播到手机终端上去 二.客户端应用 1. 介绍 客户端应用主要是基于 A ...

  8. 基于OSGi的Virgo Server最简单Spring web实例

    一:开发工具下载与环境搭建 1.下载并安装JDK6u30版本,下载地址如下: http://www.oracle.com/technetwork/java/javasebusiness/downloa ...

  9. linux搭建web服务器论文答辩开场白,基于ARM9嵌入式Linux系统Web Server服务器计算机设计与科学专业毕业答辩.ppt...

    基于ARM9嵌入式Linux系统Web Server服务器计算机设计与科学专业毕业答辩 2009-5-31 计算机科学与技术专业 2009届本科生毕业论文答辩 基于ARM9的嵌入式Linux系统的We ...

最新文章

  1. asp.net权限设置可能导致应用程序无法正常运行(转)
  2. 还在犹豫是否迁移.NET5?这几个项目已经上线了!
  3. mysql安装im,mysql安装记录
  4. Python二级笔记(3)
  5. mysql的常用查询辅助函数汇总
  6. nlp基础—7.隐马尔可夫模型(HMM算法)
  7. Chrome 开发者工具 官方文档
  8. wpf listview透明但字不要透明_透明胶带放水里泡一泡,真是厉害,解决了很多家庭一大烦恼,实用...
  9. 解秘java中native方法如何实现:手把手带你实现java native方法
  10. yalmip决策变量
  11. nginx location正则匹配规则
  12. iOS 屏幕适配 X XR XS XSMax 尺寸
  13. 东方财富一面、二面总结(二面凉)
  14. IDS(Informix Dynamic Server)的基本概念总结
  15. 创新模式 ---三级火箭:深度讲解互联网降维打击
  16. 主机配置文件(HostProfiles)的创建与应用
  17. ai推理_人工智能推理
  18. 使用模拟工具Modbus Slave和PLC通讯
  19. Android app更新模块
  20. 用VS软件开发“中国象棋“游戏<笔记摘录>

热门文章

  1. 判断控件是否绑定了数据集的方法
  2. 浙江新增python课程_今年9月起 浙江八年級新增Python編程課程
  3. Hive 之 排序和reduce设置
  4. (105)FPGA面试题-查找程序中的代码错误
  5. (61)FPGA面试题-使用Verilog语言编写异步复位同步释放代码
  6. (02)VHDL模块介绍
  7. 26.QTableWidget用法
  8. switch全部游戏列表_敢把游戏当教材,免费提供给学生!EA今年将推出7款NS作品!...
  9. 【嵌入式Linux】嵌入式Linux驱动开发基础知识之LED驱动框架--面向对象、分层设计思想
  10. STC51-串口通信