.NET

5

ürününde üretim veya geliştirme ortamında üretim yapmanın en iyi yolu Üretime e-posta göndermek gibi geliştirme ortamına ve üretim ortamına farklı şekilde e-posta göndermek istiyorum. Webconfig dosyasında bir uygulama değeri ayarlayabileceğimi veya e-postaları göndermeden önce URL'yi kontrol edebileceğimi biliyorum. Bunu yapmak için en iyi uygulamanın ne olduğunu bilmek isterim veya daha iyi olabileceğimi bilmediğim başka bir seçenek var mı? Bu konuyla ilgili herhangi bir bilgi büyük takdir edilecektir..NET

cevap

3

Preprocessor Directives (in C#) adlı ürünü kullanırım. VB'de sadece Directives olarak adlandırılır. kimse bu yöntemi çağırın ve çalışma zamanı sırasında her yerde kodunda Sonra

public static bool IsDebug() 
{ 
    #if DEBUG 
     return true; 
    #else 
     return false; 
    #endif 
} 

ve eğer kod Debug (gelişme) çalıştırılıyor olmadığını söylemek veya edeceğiz:

Böyle bir yardımcı yöntem var Release sürümü (üretim).

İşte eşdeğer #If...Then...#Else Directives in (VB).

1

yerine kodunuzu değiştirerek var, neden alanını ele İÇİN bakılmaksızın yalnızca sizin postaya geliştirme posta sunucusu ayarlayın yok?

Bunu yapmak için kod yazmaktan daha iyi görünüyor.

+0

Teşekkür ederim, IIS'de smtp'yi kurabilirim. Ayrıca e-postaları, onları göndermek yerine bir klasörde saklayabileceğimi düşünüyorum. – user1572948

1

Eh, yalnızca üretim neler belirleyebilir ve hangi gelişme, bu yüzden web.config bir bayrak Tamam, ama daha zarif bir çözüm isim Castle WindsorSpring.Net ala Dependency Injection (DI) gibi bir desen, StructureMap içerir ve olur az.

DI'nın arkasındaki temel kavram, çalışma zamanında yürütmek için hangi sınıfın başlatılacağı hakkında dinamik bilgi sağlayarak bir uygulamadaki varyasyonları çözme/ayırma işlemidir. Bu durumda, örneğin, tüm kodlarınız bir “posta” arayüzü ile başa çıkmak için yazılır (prod veya dev ortamı olup olmadığına bakılmaksızın) ve DI çerçevenizi, üretim veya geliştirme sürümlerini bir araya getirecek şekilde yapılandırabilirsiniz. posta uygulama sınıfı. Yapılandırma parametresi değerlerini açığa çıkarmamak ve çoğaltmamak için biraz daha temiz.

Burada kesinlikle bir öğrenme eğrisi var, bu nedenle projenizin bu aşamasında geçerli olmayabilir, ancak akılda tutulması gereken bir şey.

1

Uygulamanızın, içine yerleştirildiği ilgili ortamdan global içerik ayarlarını 'devralmasına' izin vermek için web config inheritance numaralı IIS'yi kullanabilirsiniz. NET uygulaması yüklü olduğu yere bir üst dizininde

(örn /inetpub/wwwroot.web.config, hatta kök web.config ( \Windows\Microsoft.NET\Framework\ver\web.config), özel ayarlar, çevreyi eklemek örn PROD olarak

<appSettings> 
    <add key="sendMailTo" value="" /> 
    <add key="environmentName" value="PROD" /> 
    </appSettings> 
dEV yılında

<appSettings> 
    <add key="sendMailTo" value="[email protected]" /> 
    <add key="environmentName" value="DEV" /> 
    </appSettings> 

Bu ortam bağlam ayarları açılmaz her uygulamanızı yeniden dağıtın. Ayrıca, y dağıtmak diğer tüm uygulamalar sunucularımız da bu ayarları devralabilir.

+0

Site genelinde web yapılandırma değerlerini kontrol ederek herhangi bir performans maliyeti var mı? – user1572948

+0

@ user1572948 AppSettings bir kez okunur ve önbelleğe alınır, bununla birlikte daha fazla performans geliştirmeleri de mümkündür. Http://stackoverflow.com/questions/1304897/asp-net-web-config-appsettings-performance – StuartLC

+0

Bir kez okunduğunda bilgi için teşekkürler ve önbelleğe alındığında benim için sorun olmamalı – user1572948