ConnectionString ASP.NET bilan app.config API'sida

Hozirda ikkita loyihani o'z ichiga olgan ASP.net da hal qilaman. Bitta MVC loyihasi, ikkinchisi esa API sifatida ishlovchi sinf kutubxonasi.

enter image description here

Hozirda men MVC loyihasining web-konfiguratsiyasi bilan bog'lanadigan qatorga ega bo'ldim.

enter image description here

Uni quyidagi API bilan o'qib chiqdim:

public ConnectionProvider()
{
    this.connectionString = ConfigurationManager.ConnectionStrings[Connection.Name].ConnectionString.ToString();
    factory = DbProviderFactories.GetFactory(ConfigurationManager.ConnectionStrings[Connection.Name].ProviderName.ToString());
}

Muammo shundaki, ulanish satrini API-ning app.config-da ko'chirishni xohlayman va u sukut bo'yicha, lekin har safar uning boshlanishi web.config da o'qiladi.

3
Albatta, veb-ilovada web.config ishlatiladi va Windows ilovasi app.config dan foydalanadi. Tavsiya etilgan loyiha ota-ona sozlamalarida ishlaydi. Deiter B tomonidan taklif qilingan yechimni sinashingiz mumkin.
qo'shib qo'ydi muallif jomsk1e, manba
Albatta, veb-ilovada web.config ishlatiladi va Windows ilovasi app.config dan foydalanadi. Tavsiya etilgan loyiha ota-ona sozlamalarida ishlaydi. Deiter B tomonidan taklif qilingan yechimni sinashingiz mumkin.
qo'shib qo'ydi muallif jomsk1e, manba
Faqatgina api aloqa liniyasini nusxa oling va uni web.config-da qiling. Resurs fayldan foydalanib, qayta ulanishga hojat qoldirmasdan, ushbu aloqa magistrini yangilashning hech qanday usuli yo'q. Resurs fayllaridan foydalanish - bu yomon fikr.
qo'shib qo'ydi muallif Nkosi, manba
Faqatgina api aloqa liniyasini nusxa oling va uni web.config-da qiling. Resurs fayldan foydalanib, qayta ulanishga hojat qoldirmasdan, ushbu aloqa magistrini yangilashning hech qanday usuli yo'q. Resurs fayllaridan foydalanish - bu yomon fikr.
qo'shib qo'ydi muallif Nkosi, manba
Sinf kutubxonasida resurslar faylini yarating va u erdan olib keling.
qo'shib qo'ydi muallif Dieter B, manba
Sinf kutubxonasida resurslar faylini yarating va u erdan olib keling.
qo'shib qo'ydi muallif Dieter B, manba

6 javoblar

(Posted solution on behalf of the OP).

Dieter B ga rahmat!

Resurs fayli bilan:

enter image description here

Buni APIda o'qish uchun:

public ConnectionProvider()
{
    ResourceManager rm = new ResourceManager("Bank.Project.API.resources", GetAssemblyByName("Bank.Project.API"));

    this.connectionString = rm.GetString(Connection.Name);
    this.factory = DbProviderFactories.GetFactory(rm.GetString(Connection.Factory));
}

Assembly GetAssemblyByName(string name)
{
    var Myassembly = AppDomain.CurrentDomain.GetAssemblies().
           SingleOrDefault(assembly => assembly.GetName().Name == name);
    return Myassembly;
}
0
qo'shib qo'ydi

(Posted solution on behalf of the OP).

Dieter B ga rahmat!

Resurs fayli bilan:

enter image description here

Buni APIda o'qish uchun:

public ConnectionProvider()
{
    ResourceManager rm = new ResourceManager("Bank.Project.API.resources", GetAssemblyByName("Bank.Project.API"));

    this.connectionString = rm.GetString(Connection.Name);
    this.factory = DbProviderFactories.GetFactory(rm.GetString(Connection.Factory));
}

Assembly GetAssemblyByName(string name)
{
    var Myassembly = AppDomain.CurrentDomain.GetAssemblies().
           SingleOrDefault(assembly => assembly.GetName().Name == name);
    return Myassembly;
}
0
qo'shib qo'ydi

Resurs fayllaridan foydalanish - bu yomon fikr.

Faqatgina api aloqa liniyasini nusxa oling va uni web.config-da qiling. Resurs fayldan foydalanib, qayta ulanishga hojat qoldirmasdan, ushbu aloqa magistrini yangilashning hech qanday usuli yo'q.

Veb-ilovada web.config dan foydalaniladi va aloqa liniyasi u yerdan ochiladi. Agar bir xil api boshqa loyihada qayta ishlatilsa, ish stoli dasturini aytsangiz, faqat ulanish satrini kirish nuqtasining config fayliga nusxa ko'chiring.

0
qo'shib qo'ydi

Resurs fayllaridan foydalanish - bu yomon fikr.

Faqatgina api aloqa liniyasini nusxa oling va uni web.config-da qiling. Resurs fayldan foydalanib, qayta ulanishga hojat qoldirmasdan, ushbu aloqa magistrini yangilashning hech qanday usuli yo'q.

Veb-ilovada web.config dan foydalaniladi va aloqa liniyasi u yerdan ochiladi. Agar bir xil api boshqa loyihada qayta ishlatilsa, ish stoli dasturini aytsangiz, faqat ulanish satrini kirish nuqtasining config fayliga nusxa ko'chiring.

0
qo'shib qo'ydi

Fikr orqali taklif qilsam, sinf kutubxonasida manba fayli ishlataman.

@Nkosi aloqa tizimining statik bo'lishi noto'g'ri bo'lmasa-da, u haqiqiy API yoki ma'lumotlar bazasi chaqiruviga ega bo'lmagan ulanish platformasini tashishning eng oson yo'li.

Ammo, bu qayta nashr etilishi kerak bo'lgan barcha dastur emas. Agar sinf kutubxonasidagi kodning funktsiyasi o'zgarmasa, siz faqatgina sinf kutubxonasini yaratishingiz va uni .dll faylining ustiga yozishingiz mumkin.

Boshqa bir qimmatbaho echim, barcha echimlardan foydalanadigan alohida matnli faylda bog'lanishlar ro'yxatini saqlashdir. So'ngra, bu kod bo'lagini barcha ilovalaringizda almashtirishingiz mumkin, u holda 1 ta markaziy nuqta bo'lishi mumkin, u binolarni almashtirish va almashtirish mumkin :).

0
qo'shib qo'ydi

Fikr orqali taklif qilsam, sinf kutubxonasida manba fayli ishlataman.

@Nkosi aloqa tizimining statik bo'lishi noto'g'ri bo'lmasa-da, u haqiqiy API yoki ma'lumotlar bazasi chaqiruviga ega bo'lmagan ulanish platformasini tashishning eng oson yo'li.

Ammo, bu qayta nashr etilishi kerak bo'lgan barcha dastur emas. Agar sinf kutubxonasidagi kodning funktsiyasi o'zgarmasa, siz faqatgina sinf kutubxonasini yaratishingiz va uni .dll faylining ustiga yozishingiz mumkin.

Boshqa bir qimmatbaho echim, barcha echimlardan foydalanadigan alohida matnli faylda bog'lanishlar ro'yxatini saqlashdir. So'ngra, bu kod bo'lagini barcha ilovalaringizda almashtirishingiz mumkin, u holda 1 ta markaziy nuqta bo'lishi mumkin, u binolarni almashtirish va almashtirish mumkin :).

0
qo'shib qo'ydi