2016-03-26 17 views
3

başım WebAPI oluşturmak için ikinci databaseContext enjekte edebilir ve ben bazı sorular var böyle bir taban deposundan devraldığı depoları tablolar:nasıl API Yapılandırma

public ProductService(IProductRepository productRepository, 
         IProductPriceRepository productPriceRepository, 
         IProductProviderRepository productProviderRepository) 
{ 
} 

ve örneğin bir SaleService gibi diğer hizmetler gereklidir:

public SalesService(IDocumentService documentService, 
        ICustomerService customerService, 
        IProductService productService) 
{ 
} 

mimarı that's fazla veya daha az benim app ure. Soru şu: API yapılandırması için başka bir veritabanı içeriğine ihtiyacım var. Bunu enjeksiyon iğneleri yapmadan yapmak için doğru yol nasıl?

public ProductService(IProductRepository productRepository, 
         IProductPriceRepository productPriceRepository, 
         IProductProviderRepository productProviderRepository, 
         ConfigurationApiContextService configurationApicontextService) 
{ 
} 
public SalesService(IDocumentService documentService, 
        ICustomerService customerService, 
        IProductService productService, 
        ConfigurationApiContextService configurationApicontextService) 
{   
} 

IoC Unity kullanıyorum. Bu, başka bir dataContext hizmetine eklemek için uygun bir yoldur? Tüm uygulama için bu yeni dataContext global erişilebilir hale getirmek mümkün mü?

Bu uygun bir yöntemse, daha sonra tüm uygulamayı günlüğe kaydetmek için log4net paketi eklemek istiyorsam, hizmet için çok fazla enjeksiyon var mı? Sadece WebAPI başlayan bu soruya, Müteessir

;)

Ve çok kötü İngilizce için üzgünüm.

Şimdiden teşekkürler.

+0

Bu ikinci db içeriğini geçerli havuzlarla mı kullanırsınız? veya sadece ConfigurationApiContextService bu ikinci db içeriğini kullanacak mı? –

+0

Sadece configureapicontext ti ikinci db bağlamını kullanacaktır, sadece sistem tarafından depolanan istemci ve veri nihai tarafından gönderilen veri arasındaki bir veri ayrıştırıcısı. Soru şudur ki, ekzotik salesservice, poductservice'ye bağlı olduğunda, enjeksiyonun tekrar edilmesine gerek kalmadan, buna bazı metodoloji var mıdır. Awnser için teşekkürler :) –

cevap

0

Yapıcınızın çok fazla parametresi olmamalıdır. Ama 4 parametreniz var, bu yüzden sorun yok. Hizmetleri birleştirmek için Aggregate Services'u kullanabilirsiniz (mantıksal veya psikiyatrik bir ilişki varsa birleştirin).

Örneğin, Müşteri Hizmet ve Belge hizmetleriniz her zaman birlikte yaşıyorsa, bunlar için bir oluşturma hizmeti oluşturun. Refactoring to Aggregate Services belgesini okursanız daha fazlasını anlayacaksınız.

Ama görebildiğim kadarıyla bunu zaten ürün servisinizde yapıyorsunuz.

ConfigurationApiContextService için arabirimi kullanmanızı öneririm. Bu şekilde kolayca test edebilir ve uygulama ile bağlantıyı kaybedebilirsiniz.

Kurallarla bağlantı kuramazsınız (Arabirimler), ancak Depdency Injection uygulamasındaki taklitlerle bağlantıyı kaybedebilirsiniz. Ayrıca, en üst düzeydeki uygulamalara orta veya altta değil (kontrolün tersine çevrilmesi) karar verirsiniz.

Satış servisiniz, ürün servis kuralları (IProductService) ile birlikte kullanılmaz.