需要開發一個PC端的庫存管理系統
用Vue.js+asp.net web api開發
因為工期和人手有限,如果不考慮SEO,多個api合并等問題,不用Node.js做中間層可以嗎,后續會遇到哪些問題。
Vue.js本身就有路由功能,直接在Vue中呼叫web api可以嗎
uj5u.com熱心網友回復:
為什么要用 Node.js?uj5u.com熱心網友回復:
訪問 http 普通的介面,這是 javascript 基本功能,或者使用 jQuery 的語法更簡單更流行。這方面跟 vue、Nodejs 沒有關系。
uj5u.com熱心網友回復:
我聽你這話的意思 好像是使用node是"常規手段".
我在群里前后端分離 使用vue argular+webapi (core)的人有非常多..,而且這也是現在主流的解決方案.
但是我從來沒說過誰去使用node作為中間層的啊.. 難道是我咕嚕寡聞?
而且這樣用完全可以 前后分離 動靜分離..
而且vue也有路由 代理這些東西...完全可以搞定任何東西....
不覺得有什么你有什么好糾結的.
uj5u.com熱心網友回復:
首頁你要了解什么是互動,什么是WEB架構,什么是CS架構,不是聽風就是雨uj5u.com熱心網友回復:
nodejs跟asp.net web api是并列的技術,用其一就足夠了.既然用了asp.net web api,為何還要nodejs????
uj5u.com熱心網友回復:
嗯嗯,主要是jq沒有路由,頁面地址不美觀,總不能全是xxx.html吧,vue.js可以沒有后綴名,然后用引數路由
uj5u.com熱心網友回復:
HTML + JS +.net ASHX 我覺得足以。我感覺 web api 不如 ASHX 如果加上 SignalR 推送都搞定了, 為什么要弄的那么麻煩。
uj5u.com熱心網友回復:
小專案是這樣,你就是手寫監聽80埠回傳資料都可以,你想象一下幾千個介面,然后要修改一個每個介面都有的回傳值的key名稱,你ashx頁面要修改多少地方?而webapi+orm等你可能只用修改一下一個model檔案的一個變數名。
uj5u.com熱心網友回復:
大佬 我問下, 是不是 .net這么多 服務里 ashx 是最快, 最輕便的。 比web api 和 webservice 回傳資料都快
09年 我接觸的webservice 回傳的是datatable 接收的時候也是datatable 是.NET 自己封裝的吧。 但是很慢
11年開始用ashx 開始有個跨域名問題, 現在已經不是問題了
現在又出了web api 但是我看下了, 感徑訓是.NET 封裝了 一堆東西 提供了路由, 覺得沒有ashx 好。
我08年開始干,到19年一直 都是哪里不會學哪里 沒有系統的看過什么,基礎知識很差。 我看了你很多東西 說的都是原理 受益匪淺
uj5u.com熱心網友回復:
那是前期沒設定好的問題, 回傳的 就是JSON 統一地方回傳, 修改的時候 只要改你需要的介面就好, 功能模塊化, 回傳也是個模塊,才不關心你回傳什么。
uj5u.com熱心網友回復:
HTML + JS +.net ASHX 我覺得足以。
我感覺 web api 不如 ASHX 如果加上 SignalR 推送都搞定了, 為什么要弄的那么麻煩。
小專案是這樣,你就是手寫監聽80埠回傳資料都可以,你想象一下幾千個介面,然后要修改一個每個介面都有的回傳值的key名稱,你ashx頁面要修改多少地方?而webapi+orm等你可能只用修改一下一個model檔案的一個變數名。
就跟權限判斷 肯定要寫個方法 , 不可能每個介面功能里 都寫權限判斷, 權限有改動 , 所有介面里的權限都要改,那不改死了。 以前用c或者c++寫東西的, 模塊方式都是用case , 那介面更多,那他們怎么寫啊
uj5u.com熱心網友回復:
HTML + JS +.net ASHX 我覺得足以。
我感覺 web api 不如 ASHX 如果加上 SignalR 推送都搞定了, 為什么要弄的那么麻煩。
小專案是這樣,你就是手寫監聽80埠回傳資料都可以,你想象一下幾千個介面,然后要修改一個每個介面都有的回傳值的key名稱,你ashx頁面要修改多少地方?而webapi+orm等你可能只用修改一下一個model檔案的一個變數名。
就跟權限判斷 肯定要寫個方法 , 不可能每個介面功能里 都寫權限判斷, 權限有改動 , 所有介面里的權限都要改,那不改死了。 以前用c或者c++寫東西的, 模塊方式都是用case , 那介面更多,那他們怎么寫啊
就還是我說的,你自己愛怎么做怎么做,你監聽80用socket也沒什么不行
uj5u.com熱心網友回復:
HTML + JS +.net ASHX 我覺得足以。
我感覺 web api 不如 ASHX 如果加上 SignalR 推送都搞定了, 為什么要弄的那么麻煩。
小專案是這樣,你就是手寫監聽80埠回傳資料都可以,你想象一下幾千個介面,然后要修改一個每個介面都有的回傳值的key名稱,你ashx頁面要修改多少地方?而webapi+orm等你可能只用修改一下一個model檔案的一個變數名。
就跟權限判斷 肯定要寫個方法 , 不可能每個介面功能里 都寫權限判斷, 權限有改動 , 所有介面里的權限都要改,那不改死了。 以前用c或者c++寫東西的, 模塊方式都是用case , 那介面更多,那他們怎么寫啊
就還是我說的,你自己愛怎么做怎么做,你監聽80用socket也沒什么不行
我們討論的不是設計, 我的意思是 ashx比web api 更快 更輕便。 所以我選擇他。
uj5u.com熱心網友回復:
HTML + JS +.net ASHX 我覺得足以。
我感覺 web api 不如 ASHX 如果加上 SignalR 推送都搞定了, 為什么要弄的那么麻煩。
小專案是這樣,你就是手寫監聽80埠回傳資料都可以,你想象一下幾千個介面,然后要修改一個每個介面都有的回傳值的key名稱,你ashx頁面要修改多少地方?而webapi+orm等你可能只用修改一下一個model檔案的一個變數名。
就跟權限判斷 肯定要寫個方法 , 不可能每個介面功能里 都寫權限判斷, 權限有改動 , 所有介面里的權限都要改,那不改死了。 以前用c或者c++寫東西的, 模塊方式都是用case , 那介面更多,那他們怎么寫啊
就還是我說的,你自己愛怎么做怎么做,你監聽80用socket也沒什么不行
我們討論的不是設計, 我的意思是 ashx比web api 更快 更輕便。 所以我選擇他。
對啊我在給你推薦監聽80埠啊,理論上來說監聽80埠你將會拋棄web中很多不需要的東西,速度會更快的!
uj5u.com熱心網友回復:
我平時就只是html+webapi,感覺webapi就是你說的路由作用
uj5u.com熱心網友回復:
HTML + JS +.net ASHX 我覺得足以。
我感覺 web api 不如 ASHX 如果加上 SignalR 推送都搞定了, 為什么要弄的那么麻煩。
小專案是這樣,你就是手寫監聽80埠回傳資料都可以,你想象一下幾千個介面,然后要修改一個每個介面都有的回傳值的key名稱,你ashx頁面要修改多少地方?而webapi+orm等你可能只用修改一下一個model檔案的一個變數名。
就跟權限判斷 肯定要寫個方法 , 不可能每個介面功能里 都寫權限判斷, 權限有改動 , 所有介面里的權限都要改,那不改死了。 以前用c或者c++寫東西的, 模塊方式都是用case , 那介面更多,那他們怎么寫啊
就還是我說的,你自己愛怎么做怎么做,你監聽80用socket也沒什么不行
我們討論的不是設計, 我的意思是 ashx比web api 更快 更輕便。 所以我選擇他。
對啊我在給你推薦監聽80埠啊,理論上來說監聽80埠你將會拋棄web中很多不需要的東西,速度會更快的!
我感覺咱倆說都不是一個是
uj5u.com熱心網友回復:
舉一個自己寫 http 服務的例子:public interface IMyCommand
{
dynamic Execute(JObject input);
}
public class Handler1 : IHttpHandler
{
private static Dictionary<string, Type> Commands = new Dictionary<string, Type> {
{ "給我一支筆", typeof(給你筆) },
{ "abc", typeof(另外一個服務)} };
public void ProcessRequest(HttpContext context)
{
var reader = new StreamReader(context.Request.InputStream);
var text = reader.ReadToEnd(); //斷點除錯這里,可以得到客戶端的所有提交的 string
var obj = JObject.Parse(text); //從收到的 string 轉換為 Json 格式
var commandName = (string)obj["ServiceName"];
if (Commands.TryGetValue(commandName, out Type h))
{
var run = (IMyCommand)Activator.CreateInstance(h);
var result = run.Execute(obj);
context.Response.Write(JsonConvert.SerializeObject(result));
}
else
context.Response.StatusCode = 404;
}
public bool IsReusable
{
get
{
return false;
}
}
}
public class 給你筆 : IMyCommand
{
public dynamic Execute(JObject input)
{
return "你要筆是" + (string)input["型號"] + "的?";
}
}
public class 另外一個服務 : IMyCommand
{
public dynamic Execute(JObject input)
{
return null;
}
}
這里,用一個 commands 字典來把自己的凡是能決議執行 IMyCommand 介面的命令(這里寫了2個例子)注冊一下,然后這個 ashx 就可以自動承載所有的服務請求接入和輸出作業了。這里用簡潔的代碼,從這個簡單的demo開始,自己把控的每一個細節,你可以插入各種預定義處理,進行各種優化。一切都在自己掌控。
uj5u.com熱心網友回復:
有關“引數強型別化”,等等控制需求,其實都在于你的 IMyCommand 的進一步細化。例如你可以定義個類似public abstract class MyCommand<S, R> : IMyCommand
{
public dynamic Execute(JObject input)
{
throw new NotImplementedException();
}
public R Execute(S input)
{
return (R)Execute(input);
}
}
這樣的型別封裝,就能將原來弱型別的 IMyCommand 轉而封裝為強型別的,從而你的真正的所有的服務都是從 MyCommand<,> 繼承的而不是從弱型別 IMyCommand 繼承。
諸如此類的擴展,例如你可以擴展介面,或者擴展 Attribute 定義,來實作類似于“設定服務權限”等等等等你需要自己擴展的功能。關鍵是說,從根源上掌味訓構設計主動權。
uj5u.com熱心網友回復:
哦,上述代碼可能應該寫為public abstract class MyCommand<S, R> : IMyCommand
{
public dynamic Execute(JObject input)
{
return Execute(input.ToObject<S>());
}
public abstract R Execute(S input);
}
才對,也就是說把原本對于 IMyCommand 的 Execute 的弱型別呼叫委派給新的強型別的 Execute 呼叫。這樣以后的自定義服務型別就都從 MyCommand 繼承,只寫(并且只能寫)強型別的 Execute 而不需要寫任何弱型別的 Execute 實作了。
uj5u.com熱心網友回復:
前后端分離的意思是可以前端搞前端的,后端搞后端的,自己想用什么技術就用什么技術。分離的好處就是,你前端用js,后端不一定要用nodejs。
后端用Asp.Net,前端不一定用Asp.Net
uj5u.com熱心網友回復:
前后端分離的意思是可以前端搞前端的,后端搞后端的,自己想用什么技術就用什么技術。
分離的好處就是,你前端用js,后端不一定要用nodejs。
后端用Asp.Net,前端不一定用Asp.Net
我看很多文章里,介紹的node.js并不是用來寫后端,而是前端人員用node.js來控制模板輸出,合并介面等
uj5u.com熱心網友回復:
我看很多文章里,介紹的node.js并不是用來寫后端,而是前端人員用node.js來控制模板輸出,合并介面等
這又是另外一個故事了。
uj5u.com熱心網友回復:
Java spring MVC, .net后端可以只選一個,你喜歡可以都用,前端頁面控制可以直接Web API,或者用 vue,react, angular 。前后端通信約定用JSON。后端只管資料處理,獲取,前端只管頁面控制。 node.js只是一個運行環境。js 的框架開發的時候需要用到,將前端的HTML和js 打包好,可以直接放到服務器的指定路徑,就可以用這些靜態資源拉。 雖然node.js他有HTTP 模塊,可以添加模塊后處理 HTTP請求,我個人不太喜歡用。uj5u.com熱心網友回復:
十三樓的回復讓我覺得很智障,“對啊我在給你推薦監聽80埠啊,理論上來說監聽80埠你將會拋棄web中很多不需要的東西,速度會更快的!” 我想問 你真的理解埠是什么東西嗎 什么叫監聽80埠會拋棄web很多不需要的東西,埠是傳輸層的東西跟這些半毛錢關系沒有,這說明你對網路不熟悉,第二是你對協議這東西不理解,沒時間跟你解釋OSI七層模型,資料到達了模型的傳輸層被賦予埠,只是規定了把資料發往主機(服務器)的哪個埠 ,只要服務器的埠范圍不超過65535不被占用的情況下監聽都可以接受資料,至于http協議是應用層上的東西,如果你發一個http請求過去,假設有apache監聽這個埠,它會認識http,自然能有正確的回應,你如果發一個FTP的請求過去,你看看它能認識不,估計404都沒有,客戶端超時了,你不要不懂就誤人子弟。uj5u.com熱心網友回復:
十三樓的回復讓我覺得很智障,
你不要不懂就誤人子弟。
我覺得你似乎沒理解人家的方式..
人家說的本質是.. 自己使用tcp/ip做一個http服務器... 通過報文決議http協議 然后輸出http的response協議 來實作自己的"iis".
而不是用什么asp.net 更不用說是iis了...
反倒是你自己..你是不是覺得你自己的思想已經達到了登峰造極境的境界,都能隨便去理解別人的思路了?
uj5u.com熱心網友回復:
十三樓的回復讓我覺得很智障,
你不要不懂就誤人子弟。
我覺得你似乎沒理解人家的方式..
人家說的本質是.. 自己使用tcp/ip做一個http服務器... 通過報文決議http協議 然后輸出http的response協議 來實作自己的"iis".
而不是用什么asp.net 更不用說是iis了...
反倒是你自己..你是不是覺得你自己的思想已經達到了登峰造極境的境界,都能隨便去理解別人的思路了?
并沒有 我說的不是那個人 我回復應該是#14樓 的這句話 “對啊我在給你推薦監聽80埠啊,理論上來說監聽80埠你將會拋棄web中很多不需要的東西,速度會更快的!” 小白一個不敢說登峰造極,你認為監聽80埠 速度會比其他的快嗎? 所以大神什么的我不是 我只是實質的回答而已,這本身就是網路模型的原理 并不是我的思想。我沒那么牛逼,你認真看 他說理論上 理論就不是這樣的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/64948.html
標籤:ASP.NET
