2011-04-03 20 views
1

我需要一些想法來實現一個使用WCF和sql server作爲數據庫的URL Shortener服務。邏輯思想 - 使用C#和WCF構建一個URL Shortener服務

我會用WCF處理我的URL縮短邏輯。這個項目將處理爲urls創建簡短的別名,並使用實際url將它們寫入數據庫,以便重定向ulrs的項目可以使用它們。

我需要的邏輯思想是如何創建短的隨機字母。我將只允許美國字母數字和字母。也;

  1. 應該做的第一個字符一個數位和第二個字符的一封信。休息可以是任何事情。我怎麼能實現這個功能,以便框架可以爲我創建隨機別名。
  2. 首先,它會創建4個字長的單詞。但如果沒有4個字符長的話未使用剩下的詞?我如何實現該功能?如果沒有唯一的4個字符長的單詞,它應該創建5個字符長的單詞,但它應該使第一個字符數字再次和第二個字母一個字母。休息也可以是任何事情。

我知道我會在mscorlib.dll裏面使用System.Random類,但是說實話,不太瞭解它。更詳細地說,我不知道如何創建一個隨機的數字和字母在美國的字母數字和字母隨機獨特字。

+0

你幾乎肯定**不要**要任何涉及的隨機性。 :) 另外,重複? http://stackoverflow.com/questions/742013/how-to-code-a-url-shortener – Sapph 2011-04-03 08:21:11

+0

@Sapph不,我知道。沒有你看到這句話:**休息可以是任何事情在這**這說我允許隨機:) – tugberk 2011-04-03 08:26:20

+0

@Sapph謝謝你的鏈接順便說一句,但這並不完全是我想要的。 – tugberk 2011-04-03 08:26:57

回答

4

你做不是需要一個隨機函數。隨機性只會給你一個碰撞的機會。

只需使用遞增,數字,鍵並對其進行編碼即可。你的數據庫已經提供了一種創建它們的方法。

一個簡單的編碼將是十六進制(基數爲16),但您可以使用基本32(或更高)編碼變得更短,更漂亮。我不確定'第一個字符是數字'的要求是否有用,但是很容易實現。

儘管可逆編碼看起來合乎邏輯,但將生成的編碼作爲列(鍵)存儲在數據庫中並將其用於查找也是非常可行的。這允許更多花式編碼,甚至在前面添加(隨機)數字。

+0

這個解決方案是否讓我在字裏面有字符串字符? – tugberk 2011-04-03 11:06:51

+0

@tugberk「字符串內部的字符串」對我來說並不意味着什麼,但是當編寫這樣的編碼時,您將它分解爲0..31的數字序列,並且您可以簡單地使用自己的32個符號陣列進行編碼。 – 2011-04-03 11:09:30

+0

你能舉個例子說明我可以如何實現這一點,或者指出一個我可以挖掘的來源,找出它? – tugberk 2011-04-03 11:28:16

1

Sapph發佈的URL有一些很好的背景閱讀。關於你的WCF/SQL組合。顯然你需要把你的數據放在某個地方,所以SQL Server和任何東西一樣好。至於WCF,大部分的URL縮小服務都使用了一個簡單的hackable URL結構。這意味着您可以通過JavaScript調用它,並獲得JSON結果以及呈現HTML。

鑑於這種情況,你可以使用ASP.NET MVC或WCF託管的服務。我可能會使用MVC,因爲它會更容易,而且無論如何你可能需要某種UI。

+0

這就是我的想法。我將使用wcf來執行邏輯,並在asp.net mvc應用程序中託管該服務。所以,我還會提供json,xml結果以及直接將url重定向到一個實際的url。但我的問題在於如何實現隨機字符功能。 – tugberk 2011-04-03 10:35:33