BizTalk Server 2016 ile WCF Servisi Yayınlama – Part 1

Bu yazı serimizde BizTalk Server ile geliştirilen uygulamaların WCF servisi olarak yayınlanmasına değineceğiz. Örnek olarak yeni bir uygulama geliştirmek yerine daha önce geliştirdiğimiz FileToFile uygulamamızı kullanıp, Visual Studio üzerinden WCF servisi olarak yayınlama, konfigurasyon, servise erişim ve servis test işlemlerinin nasıl yapıldığına, dair bazı bilgileri paylaşıyor olacağız. Bazı ekranlarda detaylı bilgi verip bazı ekranlarda yüzeysel geçiş yapacağız. Önemli gördüğümüz yerler hakkındaki bilgileri elimizden geldiğince yazmaya çalışacağız. Şimdiden hayırlı olsun inşallah deyip başlıyoruz arkadaşlar.

Başlıklar halinde özetleyecek olursak;

1- GitHub üzerinde bulunan mevcut BizTalk2016FileToFile proje yapımızın açıklanması (Part – 1)

1.1 – Projenin nasıl geliştirildiğine dair videoyu YouTube üzerinde https://www.youtube.com/watch?v=k0Lhs9qQ6go linkinden izleyebilirsiniz

1.2 – Projenin kaynak kodlarına GitHub üzerindeki https://github.com/yahyasonmez/BizTalk2016FileToFile linkinden erişebilirsiniz

2- Orchestration üzerindeki receive port ve send port yerine WCF servis için request-response port kullanılması (Part – 1)

3- Visual Studio aracılığıyla Projenin WCF servis olarak yayınlanması (Part – 2)

4- IIS Management üzerinden yayınlanan WCF servisle ilgili gerekli konfigurasyonların yapılması (Part – 3)

5- BizTalk Server Administrator yönetim konsolu üzerinden servisin konfigure edilmesi (Part – 3)

6- Yayınladığımız WCF servisin SOAP UI ile test edilmesi (Part – 3)

 

1- Mevcut BizTalk2016FileToFile proje yapısının açıklanması

BizTalk2016FileToFile projemizi göz önüne aldığımızda aşağıdaki şekilde bir yapısı bulunuyor. Burada bulunan dosya ve dizinleri biraz daha yakından tanıyalım.

BizTalk-Server-2016-FileToFile-Project

Book.xsd: Input şeması. Kitapla ilgili “Name,  Summary, PublishedYear, Price, AuthorFirstName, AuthorLastName” alanlarının yer aldığı XSD (XML Scheme Defination) dosyası.

DiscountedBook.xsd: Output şeması. İndirimli kitapla ilgili “Name,  Summary, PublishedYear, Price, AuthorInfo” alanlarının yer aldığı XSD (XML Scheme Defination) dosyası.

BookToDiscountedBook.btm: Map işlemi. İnput mesajının Output mesaja nasıl dönüştürüleceğinin belirlendiği eşleştirme dosyası.

FileToFile.odx: Orchestration işlemi. Input mesajının ve output mesajının hangi aşamada nasıl işleneceğine karar veren ve yönlendiren iş akışlarının tanımlandığı dosya.

Book_output.xml: Input şemasının XML e dönüştürülmüş hali. İçerisinde örnek verilerimizin bulunduğu dosyası. Test işlemi için kullanıyoruz.

BTS2016FileToFile.snk: Sign (imza) dosyası.

TestData \ FileIn: Input mesajının XML örneğini (Book_output.xml) bıraktığımız veri giriş dizini. Test işlemi için kullanıyoruz.

TestData \ FileOut: Output mesajının XML örneğinin (DiscountedBookFileOut_{8184DBC3-5CB2-4E01-ADB8-9859C5A01534}.xml) oluşturulduğu verilerin çıktı dizini. Test işlemi için kullanıyoruz.

2- Orchestration üzerindeki receive port ve send port yerine WCF servis için request-response port kullanılması

Önce Port Surface alanları üzerindeki tek yönlü veri alma işleminde kullandığımız “Port_BookFileIn” portunu seçip “Delete” tuşu ile siliyoruz ve sonra tek yönlü veri gönderimi yapan  “Port_DiscountedBookFile” portunu seçip “Delete” tuşu ile siliyoruz.

port-surface-Port_BookFileIn

Port_BookFileIn

port-surface-Port_DiscountedBookFile

Port_DiscountedBookFile

 

Bu işlemlerin sonrasında WCF service için kullanacağımız her iki yönde veri aktarımını sağlayan Request-Response portunu oluşturacağız.

Bunun için mouse ile Port Surface alanı üzerine gelip Sağ tıklayıp “New Configured Port…” seçeneğini seçiyoruz. Karşımıza  “Port Configuration Wizard” penceresinin Hoşgeldiniz ekranı gelecektir. “Next >” deyip bir sonraki “Port Properties” ekranına geçiş yapıyoruz.

Burada Name alanına “Port_RequestResponse” yazıp “Next >” ile devam ediyoruz. Karşımıza aşağıdaki şekilde “Select a Port Type” ekranı gelecektir. Port Type Name alanına “PortType_RequestResponse” bilgisini yazıyoruz. Burada dikkat edilmesi gereken yer “Communication Pattern” altındaki “Request-Response” seçiminin yapılmış olması. Yukarıda silmiş olduğumuz portlar tek yönlü veri aktarımı sağladığı için hatırlarsanız daha önce “One-Way” seçmiştik. Yeni ekleyeceğimiz port ile silinen portlar arasındaki fark burasıdır. Bilgileri ve seçimleri aşağıdaki şekilde olduğu gibi girebilirsiniz.

port-configuration-wizard-PortType_RequestResponse

Bir sonraki Port Binding ekranında “Port direction of communication” alanında “I’ll be receiving a request and sending a response.” (bir talep alıp yanıt gönderme) seçeneğini seçip “Next >” ile devam ediyoruz.

port-configuration-wizard-Port-Binding

Bir sonraki ekranda işlemlerimizin tamamlandığını gösteren “Completing the Port Wizard” penceresi gelecektir. Burada yapılan işlemin özet bilgileri yer almaktadır. “Finish” butonuna basarak port oluşturma işlemlerimizi  tamamlıyoruz.

port-configuration-wizard-Copmleting-the-port-wizard

Port tanımlama işleminden sonra Input mesajımız “Receive_MsgIn” ile “Request” operasyonunu eşleştiriyoruz, Output mesajımız “Send_MsgOut” ile de “Response” operasyonunu eşleştiriyoruz. Eşleştirmeyi yapmak için “Receive_MsgIn” şeması mouse ile tıklayarak seçip, Visual Studio üzerindeki “Properties” sekmesinde “Operation” alanından “Port_RequestResponse.Operation_ReqRes.Request” değerini seçiyoruz. Devamında “Send_MsgOut” şeması mouse ile tıklayarak, Visual Studio üzerindeki “Properties” sekmesinde “Operation” alanından “Port_RequestResponse.Operation_ReqRes.Response” değerini seçiyoruz. En son aşağıdaki şekilde bir görünüm oluşur.Orchestration-WCF-Request-R

İşlemlere bir sonraki “BizTalk Server 2016 ile WCF Servisi Yayınlama – Part 2” yazımızda devam ediyoruz.

Yahya Sönmez

BizTalk Server - Azure Enterprise Integration - Azure Logic Apps - Azure API Management entegrasyon çözümleri konusunda geliştirme yapmakla birlikte Asp.Net MVC ile web tabanlı kurumsal projeler geliştirmekteyim.

You may also like...

2 Responses

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir