5. Microsoft’un 2008 yazılım geliştirme ürünleri daha çok C#’ın kullanım alanları göz önüne alınarak oluşturuldu. Genel bir dilden çok Kurumsal Yazılım Geliştirme alanına yöneldi.
6.
7.
8. Language INtegrated Query .Net dilleri içinde SQL tarzı sorgu yazılmasına izin veren bir teknolojidir.
9. SqlConnection c = new SqlConnection(…); c.Open(); SqlCommand cmd = new SqlCommand( @"SELECT c.Name, c.Phone FROM Customers c WHERE c.City = @p0" ); cmd.Parameters.AddWithValue("@po", "London"); DataReader dr = c.Execute(cmd); while (dr.Read()) { string name = dr.GetString(0); string phone = dr.GetString(1); DateTime date = dr.GetDateTime(2); } dr.Close(); Sorgu tırnak içinde Zayıf-bağlı Parametre Hatalar, derleme anında alınamaz Tip-Güvenli olmayan alanlar
10. public class Customer { public int Id; public string Name; public string Phone; … } Table<Customer> customers = db.Customers; var contacts = from c in customers where c.City == "London" select new { c.Name, c.Phone }; Sınıflar Veritabanı kayıtlarını tanımlar Tablolar Tip-Güvenli koleksiyonlardır Sorgu dilin doğal bir parçası Derleyici sizi hatalardan korur
11. IQueryable<Telefon> findTelefons(string ad) { TelDBDataContext ctx = new TelDBDataContext(); IQueryable<Telefon> tel = from c in ctx.Telefons where c.Kisi.AdSoyad == ad select c; return tel; } private void Form_Load(…) { GridView1.DataSource = findTelefons(ad); kayitSayisi.Text = findTelefons(ad).Count() .ToString(); } Verileri henüz kullanmadan hazırlanmış sorgular Gelen kayıt sayısını aynı sorgu üzerinden çek “ Select * From Telefon …” üretir “ Select Count(*) From Telefon …” üretir
12. LINQ Query Objects SubmitChanges() SQL Query Rows SQL or Stored Procs Linq Linq2Sql ya da Bir ORM Aracı ile DB Engine from c in db.Customers where c.City == "London" select new { c.Name, c.Phone } select Name, Phone from customers where city = 'London' Application Servisler: - Değişim yönetimi - Concurrency control
13.
14.
15.
16.
17.
18. Linq 2 Sql Vs 2008 ile piyasaya çıkan zayıf ancak kullanımı çok kolay bir ORM aracı
19.
20. Linq to Sql Tablolar Fonksiyon ya da Stored Procedure’ler Entity’s Associations (Relations)
21. Yeni Veri Girişi TelDBDataContext ctx= new TelDBDataContext(); Kisi ali = new Kisi() { AdSoyad = "Cin Ali" }; ali.Telefons.Add(new Telefon(){TelefonNo="123456789"}); ctx.Kisis.InsertOnSubmit(ali); ctx.SubmitChanges(); Object Initializing Tüm İşlemleri gerçekleştirir Insert işlemi
22. Association üzerinden veri ekleme TelDBDataContext ctx= new TelDBDataContext(); var kisi = (from c in ctx.Kisis where c.AdSoyad.Contains(“ Ali Veli “) select c).First(); kisi.Telefons.Add(new Telefon() { TelefonNo = "1234567" } ); ctx.SubmitChanges(); Tablolar Tip-Güvenli koleksiyonlar String içinde taratma işlemi Değişiklikleri takip eder. Tüm değişiklikleri tek seferde kaydeder.
23.
24. Entity Framework Microsoft’un sağladığı Haziran 2008 dolaylarında piyasaya çıkacak olan LINQ tabanlı güçlü bir ORM aracı
44. Windows Workflow Foundation İş Akışı tabanlı uygulamalar geliştirmek için tasarlanmış bir programlama modeli, motoru ve araçları bütünü.
45.
46.
47.
48. WF’ının Yapısı Bütün workflow örnekleri , process dahilindeki runtime içerisinde yaratılırlar ve işlem görürler. Aynı application Domain içerisinde birden fazla runtime oluşturulabilir ve bu runtime motorları tutarlı çalışacak şekilde bir çok Workflow örneğini çalıştırabilir. Bir workflow derlendikten sonra, bir windows prosesinde, bir web uygulamasında veya bir web servisinde host edilebilir ve bu uygulama ile kolayca iletişimde bulunabilir. Host eden uygulama olmadan workflow’larımız çalıştırılamaz.
49.
50.
51.
52. Runtime Servisleri Host Application App Domain Runtime Services Workflow PersistenceService TrackingService WorkflowScheduler Service WorkflowCommitWork BatchService Bir thread üzerinde Workflow’un çalışmasını zamanlar Transaction’ları Commit eder Process’in bulunğu durum ya da adımla ilgili değişiklikleri tutar Workflow Instance’ını veritabanına saklar
53.
54.
55.
56. XAML Markup XAML C#/VB Markup + kod C#/VB Sadece kod Workflow derleyicisi C#/VB derleyicisi XAML Markup NET Assembly Workflow Runtime Workflow Instance Geliştirme Seçenekleri
59. Bütünleşik Programlama Modeli Farklı platformlarla çalışma ASMX Olay tabanlı programlama Enterprise Services WS-* Protokolleri WSE Mesaj tabanlı programlama System.Messaging Mekan bağımsız nesneler .NET Remoting
62. Windows Presentation Foundation Benzersiz bir kullanıcı deneyimi oluşturmak için UI ve medya kavramlarını kapsayan bütünleşik ve üretkenlik sağlayan bir framework
Think of EscalateToManager as a blocking activity. While it is waiting, it no longer needs to take CPU or system resources. It only needs a small stub to wait for a reply. It could also time out. DecrementInventory could fail and a whole set of compensating activities could need to occur as a result. Three are a few styles. Start at the top and go to the bottom. Or states can be transitioned between and actions can be taken when events occur. You can create other styles as well.
Speaker Notes These are the what we refer to as the three pillars of Indigo . They are the three design goals of Indigo that really sum up what that technology is all about. They’re what we’ll be drilling into for the remainder of this presentation. <click> The first design goal is productivity . When we talk about productivity, we’re talking about bringing together the various technologies available today for building distributed applications (COM+ and .NET Enterprise services, MSMQ, .NET Remoting, ASP.NET Web Services, Web Services Enhancements (WSE)) into a single, unified programming model. Why is this important? First, it reduces complexity by allowing us to focus on a single programming model rather than learn multiple programming models. Second, it allows us to compose/combine the functionality of today’s technologies in ways that we can’t today. Finally, it allows us to use a single programming model for building distributed applications that communicate with one another on a single machine, across multiple machines, and across the Internet. <click> The second design goal is interoperability and integration . We talk about interoperability and integration on two different pivots. First, Indigo enables you to build services that speak advanced Web services protocols (WS-*), enabling your application to communicate with other WS-* compliant services running on other platforms. Second, we built Indigo to provide a smooth upgrade and interop story for your distributed applications built on today’s technologies (WSE, ASMX, .NET Enterprise Services, System.Messaging, .NET Remoting). Why are Interop and Integration important? First, the ability to communicate with applications running on other platforms provides you with the flexibility you need when working in a heterogeneous environment. Second, the ability to communicate with existing applications protects your investments and provides you with an optional, incremental upgrade path to Indigo. <click> The third design goal is all about service orientation . Indigo provides developers with a highly productive programming model for building service-oriented applications. By using Indigo’s attribute-based programming to define your services, you can dramatically reduce the amount of code you write to build secure, reliable services. Indigo also facilitates the development of applications that adhere to the “four tenets of service-orientation” that we’ll drill into later in the presentation. These tenets help ensure that your services are extremely flexible and resilient to change, thereby reducing long-term maintenance costs. Transition to next slide: We’ll spend the rest of this presentation drilling into these 3 concepts.
Speaker Notes Today, when we build distributed applications, we have a choice of programming models. Each programming model has a different set of APIs, different feature sets, and a different core set of scenarios: ASP.NET Web Services (ASMX) – Our current Web services stack provides basic Web services support and interoperability with Web services running on non-Microsoft platforms. Web Services Enhancements (WSE) – A supported extension to the .NET Framework that provides end-to-end standards-based security for Web services. System.Messaging – This namespace in the .NET Framework provides managed APIs to MSMQ, enabling developers to build asynchronous reliable distributed applications. Enterprise Services – Provided through the System.EnterpriseServices namespace in the .NET Framework, Enterprise Services (or “ES”) provides managed APIs to COM+. COM+ provides component-based programming for doing enterprise critical functionality such as transactions. Remoting – Provided through the System.Remoting namespace in the .NET Framework, .NET Remoting exposes the CLR type system remotely and provides location transparency for objects. While these technologies provide a wide range of functionality, they exist in silos – isolated from one another. This creates an impedance mismatch across the technologies hindering our ability as developers to “compose” or combine functionality across them. For example: You want to use .NET Remoting for it's rich extensibility model, but you want a ES-style transaction to flow. How do you do this? You want to use ASMX for its interoperability, but you want to provide direct reliable messaging guarantees. How is this accomplished? Today, scenarios like these that involve the combination of functionality across these technologies are more of a challenge than it should be. They often involve hundreds and sometimes thousands of lines of code to accomplish. With Indigo, the challenges of silo programming models becomes a thing of the past… Indigo provides you with a unified programming model that brings together the best aspects of existing Microsoft technologies. What this means is that, with Indigo, you will no longer need to wonder “which technology do I use (ASMX, Remoting, etc)” when building a connected system. All of the application-to-application and intra-application communication for your connected will be handled by Indigo. This unified programming model is exposed to you through the System.ServiceModel namespace. Since Indigo provides all of the features of these existing Microsoft technologies, Indigo supports all of the scenarios currently supported by these technologies. In addition, Indigo enables new scenarios that are currently not possible or very hard to implement with existing technologies because Indigo allows you to compose functionality across these existing technologies. For example, this means that you’ll be able to achieve secure, reliable, transacted Web services by combining/composing the functionality that previously existed in silos. On a related note, we’re also doing a lot of work to preserve your existing investments in ASMX, ES, and other existing technologies shown on this slide. We do this through a number of mechanisms including the ability to communicate between Indigo services and existing ES-based applications for example. We’ll talk about this more later in the presentation.
Windows Presentation Foundation (WPF) is a productive, unified approach to UI, Media, and Documents that you can use to deliver unmatched user experiences to your customers.
Stands for Extensive Application Markup Language Easily toolable, declarative markup Build applications in simple declarative statements Can be used for any CLR object hierarchy Code and content are separate Streamline collaboration between designers and developers Developers add business logic, while designers design Can be rendered in the browser (as part of a web page) or as a standalone application XAML WPF introduces a new role to the rich client software development team – that of professional designer. Gone are the days of boring gray buttons and poorly designed applications: with the declarative programming model enabled by XAML, you can split off presentation and logic in the same way as with a web application. XAML is a markup language that is inherently toolable, allowing for designers and developers to use independent tools. XAML (which stands for &quot;Extensible Application Markup Language&quot;) provides an XML-based way to specify declaratively a hierarchy of objects with properties and logic. We're positioning XAML as a user interface design language, because it is ideal for generating the kind of code that traditionally resided in a hidden #region area and was hard to maintain by both developers and tools. If you've ever wanted to edit the auto-generated blocks of code created by Visual Studio but been dissuaded by the warning comments writ large, or you've gone ahead regardless and been burnt badly when your tools refused to load your changes, you'll appreciate XAML. XAML is not Avalon, and Avalon is not XAML. It so happens that they come out of the same team at Microsoft, but they are not intrinsically wedded together. I've been asked before &quot;where can I go to get the XSD for XAML?&quot; and hopefully it's now clear that this question doesn't make much more sense than asking for the C# schema. XAML gets compiled into an object definition.