之前有提到Interface C#
再來我們進階提到 簡單工廠 這還滿常用到的
主要是建立個類別去負責分配要到哪個工廠做事情
我們可以在主邏輯分配 次要邏輯 要處理的事情
一方面可以增加可讀性 功能也不會雜亂的都寫在一起
Design
asp.net mvc
2017年6月1日 星期四
C# Simple Factory Pattern簡單工廠
歡迎同好一起聊天進步
HI 如果有任何工作機會歡迎透過信箱聯繫我
Hi any jobs welcome to contact me by mail.Marstsaiforjob@gmail.com
resume:https://1drv.ms/w/s!AkEOmv5qDtVoc9Dj4uHhda310E4
2017年5月31日 星期三
C# Email Send SmtpClient
簡單郵件傳輸協定[編輯]
維基百科,自由的百科全書
| 網際網路協定套組 |
|---|
| 應用層 |
| 傳輸層 |
| 網路層 |
| 連結層 |
SMTP是一個相對簡單的基於文字的協定。在其之上指定了一條訊息的一個或多個接收者(在大多數情況下被確認是存在的),然後訊息文字會被傳輸。可以很簡單地通過telnet程式來測試一個SMTP伺服器。SMTP使用TCP埠25。要為一個給定的域名決定一個SMTP伺服器,需要使用MX (Mail eXchange) DNS。
在八十年代早期SMTP開始被廣泛地使用。當時,它只是作為UUCP的補充,UUCP更適合於處理在間歇連線的機器間傳送郵件。相反,SMTP在傳送和接收的機器在持續連線的網路情況下工作得最好。
Sendmail是最早使用SMTP的郵件傳輸代理之一。到2001年至少有50個程式將SMTP實現為一個用戶端(訊息的傳送者)或一個伺服器(訊息的接收者)。一些其他的流行的SMTP伺服器程式包括了Philip Hazel的exim,IBM的Postfix, D. J. Bernstein的Qmail,以及Microsoft Exchange Server。
C# SmtpClient 透過smtp 寄信的功能 詳細功能如下紀錄一下 這邊已Gmail為例
紀錄一下
標籤:
Email,
SmtpClient
歡迎同好一起聊天進步
HI 如果有任何工作機會歡迎透過信箱聯繫我
Hi any jobs welcome to contact me by mail.Marstsaiforjob@gmail.com
resume:https://1drv.ms/w/s!AkEOmv5qDtVoc9Dj4uHhda310E4
2017年5月27日 星期六
Nlog trace code 追蹤你的code
Nlog?
一個非常好用的code trace library 怎樣好用呢
往往我們專案Debug 會去需要看我們的錯誤 localhost Deubg 當然沒什麼問題
但是如果我們網站已經上線或是已經在server的測試階段,我們後端引發前端的錯誤
你很難依照當前頁面去判斷,而且很常就是我localhost 沒問題啊 怎上server 就有問題.
這時候我們就需要去在我們的程式碼加上記錄錯誤訊息的方法 這時候就需要用到我們的nlog
不只記錄exception,你也可以當作操作紀錄去分析client端的操作.
而且我們不只本機可以記錄 還可以連接我們的db 或是連接例如slack,exceptionless
不只記錄exception,你也可以當作操作紀錄去分析client端的操作.
而且我們不只本機可以記錄 還可以連接我們的db 或是連接例如slack,exceptionless
歡迎同好一起聊天進步
HI 如果有任何工作機會歡迎透過信箱聯繫我
Hi any jobs welcome to contact me by mail.Marstsaiforjob@gmail.com
resume:https://1drv.ms/w/s!AkEOmv5qDtVoc9Dj4uHhda310E4
2017年5月26日 星期五
.NET Web API 入門
Web API 介紹
ASP.NET Web API 是一個架構,可輕易建置 HTTP 服務並擴及廣大的用戶端範圍,包括瀏覽器和行動裝置。 ASP.NET Web API 是一個想理平台,用以 .NET Framework 基礎建置 RESTful 應用程式。
至於什麼是RESTful ,我們要REST說起
REST(英文:Representational State Transfer,又稱具象狀態傳輸 or 具象狀態轉化)是Roy Thomas Fielding博士於2000年在他的博士論文[1] 中提出來的一種全球資訊網軟體架構風格,目的是便於不同軟體/程序在網絡(例如網際網路)中互相傳遞信息。
具象狀態傳輸 轉化?? 不禁冒出黑人問號
Representational State Transfer 我們可以拆開來解釋
至於什麼是RESTful ,我們要REST說起
REST(英文:Representational State Transfer,又稱具象狀態傳輸 or 具象狀態轉化)是Roy Thomas Fielding博士於2000年在他的博士論文[1] 中提出來的一種全球資訊網軟體架構風格,目的是便於不同軟體/程序在網絡(例如網際網路)中互相傳遞信息。
具象狀態傳輸 轉化?? 不禁冒出黑人問號
Representational State Transfer 我們可以拆開來解釋
歡迎同好一起聊天進步
HI 如果有任何工作機會歡迎透過信箱聯繫我
Hi any jobs welcome to contact me by mail.Marstsaiforjob@gmail.com
resume:https://1drv.ms/w/s!AkEOmv5qDtVoc9Dj4uHhda310E4
2017年5月25日 星期四
Hubot 來玩玩機器人吧 Windows環境
Hubot
Hubot 是一套Github開源的機器人的Framework
主要是透過adapter 做跟各種通訊軟體的介接 如:line Slack QQ skype 這些網路上都有人開源adapter,我們就只要安裝好環境就可以開始寫我們scirpt玩弄我們的奴隸機器人了
Hubot 是一套Github開源的機器人的Framework
主要是透過adapter 做跟各種通訊軟體的介接 如:line Slack QQ skype 這些網路上都有人開源adapter,我們就只要安裝好環境就可以開始寫我們scirpt玩弄我們的
歡迎同好一起聊天進步
HI 如果有任何工作機會歡迎透過信箱聯繫我
Hi any jobs welcome to contact me by mail.Marstsaiforjob@gmail.com
resume:https://1drv.ms/w/s!AkEOmv5qDtVoc9Dj4uHhda310E4
2017年5月23日 星期二
Redis Server & Redis desktop Windows環境安裝
Redis[編輯]
標籤:
Redis,
Redis desktop
歡迎同好一起聊天進步
HI 如果有任何工作機會歡迎透過信箱聯繫我
Hi any jobs welcome to contact me by mail.Marstsaiforjob@gmail.com
resume:https://1drv.ms/w/s!AkEOmv5qDtVoc9Dj4uHhda310E4
2017年5月21日 星期日
ASP.NET MVC 三層架構Three tier
Q 什麼是三層架構
A: 簡單說就是把開發專案分為三大區塊
Controlle:負責導覽資料的責任 我資料該去哪裡 我頁面該怎走,盡量避免把較複雜邏輯寫在這.
Service:資料處理的位置 也算是code可能會最多的地方,例如我想要把A資料跟B資料作處理完再傳給Controller.
Repository:接受DB的資料位置這這部分往往就是要開始定義資料格式的位置然後再把資料傳給Service做處理.
Controlle:負責導覽資料的責任 我資料該去哪裡 我頁面該怎走,盡量避免把較複雜邏輯寫在這.
Service:資料處理的位置 也算是code可能會最多的地方,例如我想要把A資料跟B資料作處理完再傳給Controller.
Repository:接受DB的資料位置這這部分往往就是要開始定義資料格式的位置然後再把資料傳給Service做處理.
標籤:
ASP.NET MVC
歡迎同好一起聊天進步
HI 如果有任何工作機會歡迎透過信箱聯繫我
Hi any jobs welcome to contact me by mail.Marstsaiforjob@gmail.com
resume:https://1drv.ms/w/s!AkEOmv5qDtVoc9Dj4uHhda310E4
2017年5月19日 星期五
Unity DI 注入方法
container.RegisterType<ICookService, CookService>();
如果同一介面下 有很多不一樣的Service 只需要後面給他個名稱就好了 用以辨識實作時用
如本篇interface
container.RegisterType<ICookService, FoodService>("FoodService");
container.RegisterType<ICookService, DrinkService>("DrinkService");
當我們實作時需要 後面也是一樣要加上要Resolve的service名稱 這
樣他才知道我是要實作ICookService介面的FoodService 不然他會FoodService DrinkService傻傻分不清楚
var service = container.Resolve還有非常炫砲的寫法 自動搜尋所有class跟Interface 做注入("FoodService");
container.RegisterTypes(
//針對所有class Service名稱後有做注入
AllClasses.FromLoadedAssemblies()
.Where(t => t.Name.EndsWith("Service")),
//搜尋所有Interface做Mapping
WithMappings.FromAllInterfaces,
//可以定義註冊名稱
WithName.Default,
//指定註冊的生命週期 說明
WithLifetime.ContainerControlled);
歡迎同好一起聊天進步
HI 如果有任何工作機會歡迎透過信箱聯繫我
Hi any jobs welcome to contact me by mail.Marstsaiforjob@gmail.com
resume:https://1drv.ms/w/s!AkEOmv5qDtVoc9Dj4uHhda310E4
Interface C#
以往我們寫code總是會這樣 new一個新的物件
直接依賴但是當我們在較複雜的架構時,我們就需要一直去重構方法
class Program
{
static void Main(string[] args)
{
Dosomething do = new Dosomething();
do.Write("Hello World");
}
}
class Dosomething
{
public void Write(string msg)
{
Console.WriteLine(msg);
}
}
後續衍伸出interface 定義個實作的介面
我們是先定義好實作 後續才是去針對判斷去new 出我們想實作的辦法
這樣好處是程式更有規範更方便理解,統一 一個接口方法最後看你想實作哪個部分
class Program
{
static void Main(string[] args)
{
ICooking cooking;
//我決定要做三杯雞 來吧!
var food = "三杯雞";
if (food == "三杯雞")
{
cooking = new FoodService();
Console.WriteLine(cooking.Make());
}
else {
cooking = new DrinkService();
Console.WriteLine(cooking.Make());
}
Console.Read();
}
}
interface ICooking
{
string Make();
}
class FoodService : ICooking
{
public string Make()
{
return "紅燒牛肉";
}
}
class DrinkService : ICooking
{
public string Make()
{
return "珍珠奶茶";
}
}
歡迎同好一起聊天進步
HI 如果有任何工作機會歡迎透過信箱聯繫我
Hi any jobs welcome to contact me by mail.Marstsaiforjob@gmail.com
resume:https://1drv.ms/w/s!AkEOmv5qDtVoc9Dj4uHhda310E4
2017年5月18日 星期四
.NET SignalR 初級引用
What is SignalR?
相信你會看到我的文章也有大概想做的事情了
ASP.NET SignalR是一個用於ASP.NET開發人員的library ,簡化了web 應用程序的功能
讓Server跟Client 達到 Real-Time 的效果。
你問我什麼是Real-Time?
簡單講就是類似聊天室的功能,讓網頁上的資訊"即時"達到跟server溝通的橋樑
當然不只聊天功能,能用的應用包含想即時的告訴client做某些指定動作。
WebSockets是HTML5提供的新的API,可以在Web網頁與服務器端間建立Socket連接,當WebSockets可用時(即瀏覽器支持Html5)SignalR使用WebSockets,當不支持時SignalR將使用其它技術來保證達到相同效果。
SignalR當然也提供了非常簡單易用的高階API,使服務器端可以單個或批量調用客戶端上的JavaScript函數,並且非常方便地進行連接管理,例如客戶端連接到服務器端,或斷開連接,客戶端分組,以及客戶端授權,使用SignalR都非常容易實現

就讓我們開始吧!
我們就來做個雙向的聊天室吧 澳門首家線上聊天室上線拉
NuGet 確保底下兩個已先安裝
1.Microsoft.AspNet.SignalR.Core
2.Microsoft.AspNet.SignalR.JS
我們先建立個 Startup.cs
註冊SignalR middleware
主要用於建立Client端連接到Hub的路由 在我們應用程序調用時執行我們的MapSignalR的擴充方法
NuGet 確保底下兩個已先安裝
1.Microsoft.AspNet.SignalR.Core
2.Microsoft.AspNet.SignalR.JS
我們先建立個 Startup.cs
註冊SignalR middleware
主要用於建立Client端連接到Hub的路由 在我們應用程序調用時執行我們的MapSignalR的擴充方法
using Microsoft.Owin;
using Owin;
[assembly: OwinStartup(typeof(MyApplication.Startup))]
namespace MyApplication
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
// Any connection or hub wire up and configuration should go here
app.MapSignalR();
}
}
}
然後我們建個HUB的Class 名子就叫ServiceHub.cs吧 如下我們建個SendMessage的方法 然後傳給所有人
[HubMethodName("")]的作用是如果沒加這段的話 我們javascirpt上的都要以小寫開頭因為我們有加了所以是依照我們定義的名稱就好
[HubMethodName("Hub")]
public class ServiceHub :Hub
{
[HubMethodName("SendMessage")]
public void SendMessage(string msg) {
Clients.All.addNewMessageToPage(msg);
}
}
然後我們頁面上該怎麼接收訊息呢 我們先在這個頁面上建立個click 傳送去呼叫SendMessage這個方法 然後戴上我們定義好的參數 contosoChatHubProxy.on 也監聽addNewMessageToPage Server.cshtml
<script src="~/Scripts/jquery-1.10.2.min.js">
<script src="~/Scripts/bootstrap.min.js">
<script src="~/Scripts/jquery.signalR-2.2.2.js">
var connection = $.hubConnection();
var contosoChatHubProxy = connection.createHubProxy('serviceHub');
contosoChatHubProxy.on('addNewMessageToPage', function (message) {
console.log(message);
});
connection.start()
.done(function () {
})
.fail(function () { console.log('Could not connect'); });
$('#add').click(function () {
contosoChatHubProxy.invoke('SendMessage', $('#message').val());
$('#message').val('').focus();
});
Client.cshtml 也是一樣作法 監聽 建立連線
<script src="~/Scripts/jquery-1.10.2.min.js">
<script src="~/Scripts/bootstrap.min.js">
<script src="~/Scripts/jquery.signalR-2.2.2.js">
var connection = $.hubConnection();
var contosoChatHubProxy = connection.createHubProxy('serviceHub');
contosoChatHubProxy.on('addNewMessageToPage', function (message) {
console.log(message);
});
connection.start()
.done(function () {
})
.fail(function () { console.log('Could not connect'); });
當我server 這邊送出訊息後 可以發現 兩邊的console.log 都會出現一樣的訊息
當然我們可以客製化的去顯示兩邊不同的內容訊息
進階的做法可以 創建不同Groups 傳送訊息給指定的Group 或是 單獨的對象
還可以SignalR Scaleout 配合 Redis or SQL Server 加快傳送訊息的速度
很屌的是還可以建立個獨立的SignalR Self-Host 好處是就不用依賴於IIS上面
我只要啟動應用程序 我整段系統就打開了
中間還包括authentication 跟一些防範漏訓的機制
以上部分有時間再補上
歡迎同好一起聊天進步
HI 如果有任何工作機會歡迎透過信箱聯繫我
Hi any jobs welcome to contact me by mail.Marstsaiforjob@gmail.com
resume:https://1drv.ms/w/s!AkEOmv5qDtVoc9Dj4uHhda310E4
訂閱:
文章 (Atom)