[英]Best practice: Connect WPF to remote SQL database
我知道關於這個話題有很多問題,但是經過四天的閱讀和谷歌搜索后,我有點卡住了,需要有人為我澄清一些事情。
我的情況:
我用 C# 開發了一個 WPF 應用程序。 此應用程序需要連接到數據庫,因為它存儲用戶帳戶數據和其他數據。 到目前為止,我已經通過設置數據源並使用 Fluent NHibernate 進行映射和會話來處理 Visual Studio 環境中的本地數據庫。 現在我想通過 ClickOnce 將應用程序分發給用戶,所以我需要從本地數據庫切換到在線數據庫。
我有一個網絡服務器(Debian 8 Jessie 64Bit,內核版本 3.16.0-4-amd64 (SMP))、SSH 訪問和訪問 i-MSCP 1.3.16 平台來管理服務器。 我在服務器的域之一和 sql-user 中創建了一個數據庫,我可以訪問 phpmyadmin。 我已經按照步驟授予任何 IP 的遠程訪問權限,如 SANDHYALAL KUMAR 在此處所述。 第一個問題:如何檢查現在是否成功授予遠程訪問權限。 因為當執行mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
我得到0 rows affected.
通過 Putty 控制台?
第二個也是更重要的問題:我現在如何將我的 WPF 連接到我的服務器。 我已經讀過,由於密碼安全和數據庫安全,我不應該直接連接到服務器,如下所示:
ISessionFactory sessionFactory = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2012
.ConnectionString(c => c
.Server("SSS")
.Database("DDD")
.Username("UUU")
.Password("PPP")
).ShowSql()
)
.Mappings(m =>
m.FluentMappings
.AddFromAssemblyOf<User>())
.ExposeConfiguration(cfg => new SchemaExport(cfg)
.Create(false, false))
.BuildSessionFactory();
return sessionFactory.OpenSession();
但是,我不認為上述解決方案對我有用,因為我沒有在線 MSSQL Server,對嗎? 還是我需要配置我現有的服務器?
是否有特定的層或 API 可以解決我的問題。 WCF、REST 或 ADO.Net 是我的解決方案嗎? 我真的被所有這些不同的名字困住了,所以我真的很感謝關於我的兩個問題的一些解釋和建議。
你的情況和我的情況幾乎一樣。 我的應用程序也是 WPF(clickonce)並連接到 Microsoft Azure Cloud SQL Server。 我也掙扎了好幾天,因為如您所知,安全始終是最重要的。
將密碼放在桌面應用程序和分發中意味着向黑客提供密碼。 就像您評論的那樣,使用 WCF 設置一個層並使 WCF 保存非對稱(如 RSA)編碼的密碼。 然后,服務器將僅使用非對稱密鑰對用戶進行身份驗證以進行解密。 此私鑰僅存在於服務器中。
第一個問題的答案)您可以編寫一個 SELECT 查詢來確認哪些登錄名、用戶具有這些角色、啟用或不啟用訪問的權限。 我確信互聯網上有很多有用的例子。
希望這有助於您的理解..
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.