客户有一个系统,经常要连上我方,查询数据
以前的作法是给对方一个账号,让他可以连上我们的DB来查询。

所以,早期的同仁,真的给他们DB链接字符串
客户的Windows程序、网站就真的靠这么危险的方式,连上我们公司的DB。

但怎么想都觉得危险,而且......
如果对方SQL指令乱下,把效能搞得更烂,岂不是惨兮兮?
如果对方不小心,配置文件被偷走,看到我方DB Connection String怎么办?
几年前的 Internet还没有那么大的带宽,所以还得种种限制,避免他们一次查询太多数据

我接手以后,改用了Web Service (WS-*)来做,之前我有几篇文章介绍过。
没想到一晃眼也七八年过去了

满有趣的,前些年,我网站上流量或是点阅率最高的就是 -- 搜寻「Web Service」这个关键词而连上我的网站

Web Service入门 #1,透过VS 2005/2008/2010 撰写一个Web Service
https://www.dotblogs.com.tw/mis2000lab/archive/2008/09/26/webservice_1.aspx

后来客户导入了电话语音卡(CTI)

就是我们打电话给银行、信用卡公司,电话里面的语音系统都会请您这样操作:
按下一,帮您查询账单金额
按下二,帮您做XYZ等等
按下九,帮您转接专人。

你把我打一顿,我也不会、不懂CTI电话语音卡、电话总机啊
那我怎么跟厂商合作?数据怎么交换?

厂商问我:会不会Socket,可以彼此串连?
我不会。

我问他:您的CTI可以连上网络吗?可以收发网页信息吗?
厂商说可以。

于是,透过Web Service一路做到今天。

去年,这套系统改成 Mobile APP(手机与平版)的界面。
我呢?我要怎么配合修改?

没有,我完全没事做,发呆,等厂商写好后,跟我测试而已
然后就上线了

然后呢,莫名其妙的,变成这部门第一套走入行动运算的功能
老板很开心地拿去跟别人炫耀
(我什么事都没做,结果呢?大家都很开心,包含:我、合作厂商、老板、客户)

前些天,一位大学的老师跟我聊天,说现在流行前端技术,大家都在做手机APP
他担心:有了画面,那资料谁来喂?谁负责提供数据给这些APP呢?
(意思是说:每个人都在搞手机APP、手机游戏。一窝蜂,好像没人想做后端、数据库程序了)

我跟他说,那很好啊。都没人做,就给我做吧。
反正我对于前端技术没兴趣,我就专心挖数据、传递数据,提供他们(各种前端技术)数据吧

他们(各种前端技术)负责  "画面"展示
我负责  "资料存取"

这样很棒,大家都有工作。
而且不像以前,画面做得不好看、配色、UI......对方GGYY了老半天,但那不是我的专长,我怎样都满足不了对方的审美观

终于跟讨人厌的「画面」「UI」脱离了
我反倒松了一口气

这代表我不用接 End User的抱怨电话了,以后他们来电抱怨,顶多就是我给的数据不对
(虽然数据有错,是很严重的事,但至少我熟悉这一块,比较好抓出问题)

User再也不会抱怨 "画面"的问题、字体大小、UI不顺或是不好看
(前端画面的美丑,我比较无能为力)

以前写 ActionScript程序产生 Flash动画与AIR时,觉得很奇怪,
怎么他们的程序没有链接数据库的部分呢?

后来才发觉,他们透过Web Service来处理,让「画面」归「画面」,「数据源」归「数据源」
其实区分得很清楚。

以前都说我们是写 "网页" 的
以后,我可以说我们是提供「数据」的、提供「服务」的

Web Service / WCF Service / WebAPI 救了我们一命,也延续了我们(网页程序)的生命周期

相关文章:

WCF 新手入门 #2 -- 撰写第一个 WCF程序
https://www.dotblogs.com.tw/mis2000lab/archive/2010/09/16/wcf_02_diy.aspx

[入门范例] ASP.NET Web Service (asmx) 与 jQuery AJAX
https://www.dotblogs.com.tw/mis2000lab/archive/2015/05/19/jquery_ajax_web_service.aspx

WEB SERVICES开发实战:使用 ASP.NET WEB API 2
http://blog.kkbruce.net/2014/01/web-service-develope-use-aspnet-web-api-2.html

不写画面的网页程序设计,Web API、Web Service、WCF Service的更多相关文章

  1. 我所理解的RESTful Web API [Web标准篇]

    REST不是一个标准,而是一种软件应用架构风格.基于SOAP的Web服务采用RPC架构,如果说RPC是一种面向操作的架构风格,而REST则是一种面向资源的架构风格.REST是目前业界更为推崇的构建新一 ...

  2. [Web API] Web API 2 深入系列(7) Model绑定(下)

    目录 ModelBinder ModelBinderProvider 不同类型的Model绑定 简单类型 复杂类型 其他类型 ModelBinder ModelBinder是Model绑定的核心. p ...

  3. [Web API] Web API 2 深入系列(6) Model绑定(上)

    目录 解决什么问题 Model元数据解析 复杂类型 ValueProvider ValueProviderFactory 解决什么问题 Model: Action方法上的参数 Model绑定: 对Ac ...

  4. [Web API] Web API 2 深入系列(3) 激活HttpController

    目录 HttpController 创建HttpController IAssembliesResolver IHttpControllerTypeResolver HttpControllerTyp ...

  5. [Web API] Web API 2 深入系列(2) 消息管道

    目录 HttpMessageHandler Web Host模式处理过程 Self Host模式处理过程 HttpMessageHandler Web API处理管道由一系列HttpMessageHa ...

  6. [Web API] Web API 2 深入系列(1) 路由

    目录 ASP.NET 路由 注册路由 动态映射HttpHandler WebAPI 路由 注册路由 调用GetRouteData 2个路由系统衔接 GlobalConfiguration Hosted ...

  7. 我所理解的RESTful Web API [Web标准篇]【转】

    原文:http://www.cnblogs.com/artech/p/restful-web-api-01.html REST不是一个标准,而是一种软件应用架构风格.基于SOAP的Web服务采用RPC ...

  8. [Web API] Web API 2 深入系列(5) 特性路由

    目录 1. 特性路由注册 2. 路由解析 - 生成DataTokens - 选择HttpController - 选择Action 特性路由的目的在于更好的提供restful架构的接口,最近好忙(懒) ...

  9. [Web API] Web API 2 深入系列(4) Action的选择

    目录 ApiController HttpActionDescriptor IHttpActionSelector ApiController 在上节中,讲到如何选择并激活对应的IHttpContro ...

随机推荐

  1. hadoop学习笔记之-hbase完全分布模…

    安装环境: OS: Oracle linux 5.6 JDK: jdk1.6.0_18 Hadoop: hadoop-0.20.2 Hbase: hbase-0.90.5 安装准备: 1. Jdk环境 ...

  2. Gym 101142C CodeCoder vs TopForces (搜索)

    题意:每个人有2种排名,对于A只要有一种排名高于B,那么A就能赢B,再如果B能赢C,那么A也能赢C,要求输出每个人分别能赢多少个人 析:首先把题意先读对了,然后我们可以建立一个图,先按第一种排名排序, ...

  3. gideros-with-zerobrane

    http://www.indiedb.com/tutorials/gideros-with-zerobrane

  4. Linux 系统初始化和服务

    系统的初始化和服务 1. Linux 系统启动流程 打开计算机,从主板 BIOS(Basic Input/Out System)读取其中所存储的程序,引导你找到存储系统的硬件(如光盘.硬盘等) 接下来 ...

  5. HTML5学习笔记(五)存储

    HTML5 web 存储,一个比cookie更好的本地存储方式.数据以 键/值 对存在, web网页的数据只允许该网页访问使用.加的安全与快速.可以存储大量的数据,而不影响网站的性能. 客户端存储数据 ...

  6. GO:字符串Slice后乱码问题

    遇到的问题:用Slice 直接截取字符串的时候会出现乱码现象 package main import ( "fmt" ) func main() { str := "我的 ...

  7. spring框架_IOC与注解

    1.什么是IOC? IoC(Inverse Of Control:反转控制) 2.IOC的作用是什么? 削减计算机程序的耦合(解除我们代码中的依赖关系). 3.关于程序的耦合 /** * 程序的耦合 ...

  8. 黑马学习Ajax 跨域资源共享 jQuery+jsonp实现

  9. C# dynamic与var的区别

    1.C#编程总结(十四)dynamic 2.var和dynamic的区别及如何正确使用dynamic?

  10. C-晾衣服

    链接:https://ac.nowcoder.com/acm/contest/892/C 题意: 鸡尾酒从杭州回来,囤积了许多衣服,洗好之后,他发现晾衣服是一件麻烦的事. 晾衣绳的长度只有L,而鸡尾酒 ...