Quantcast
Channel: Category Name
Viewing all 10804 articles
Browse latest View live

Azure Service Fabric Mesh is now in public preview

$
0
0

Azure Service Fabric is a highly-scalable distributed systems platform to build and manage scalable microservices and container-based applications for Windows and Linux. Service Fabric is a foundational technology powering core Azure infrastructure, as well as other Microsoft cloud services such as Skype for Business, Azure Cosmos DB, Azure SQL Database, Dynamics 365, and many more.

At Build 2018, we shared the Service Fabric product roadmap and demonstrated Azure Service Fabric Mesh, a fully-managed service that enables developers to deploy and operate containerized applications without having to manage VMs, storage or networking configuration, while keeping the enterprise-grade reliability, scalability, and mission-critical performance of Service Fabric. Service Fabric Mesh supports both Windows and Linux containers, so you can develop with the programming language and framework of your choice.

Today, after a couple of months of private preview, we are excited to open the preview of Service Fabric Mesh to everyone. We invite you to try it and give us feedback. Thank you to all the participants for the invaluable feedback during our private preview! The public preview of Service Fabric Mesh is available in three Azure regions - US West, US East, and Europe West. We will expand the service to other Azure regions in the coming months. Head over to the Service Fabric Mesh documentation page to get started. You’ll find all the resources you need including documentation, samples, and SDK.

You can also learn more by reading the Codit Service Fabric Mesh private preview experience. (Thanks Tom & team for the write up!)

Frequently asked questions

How do I deploy to Service Fabric Mesh?

As a developer, you would build your application using your choice of languages and frameworks. To get started, you can use the new Visual Studio Tools for Service Fabric Mesh. You can also choose one of the applications you want to lift-and-shift to the cloud. Once you have the application running inside a container, you can deploy it using the Azure CLI with an application manifest to the Service Fabric Mesh service. The manifest specifies the set of services comprising the application along with any scale and networking requirements. 

Service Fabric Mesh takes care of the rest, including maintaining availability in the presence of failures (hardware or software), service discovery, scaling, the ability to perform no-downtime upgrades, and more. Essentially, developers can focus on the applications and the business logic without having to invest time on managing a distributed systems or infrastructure. Follow this quick start guide to try on your own.

Below you can see how easy it is to deploy a containerized application to Service Fabric Mesh.

SFMesh%20CLI5

Note: You can easily build stateless or stateful services in Service Fabric Mesh the same way you would for a Service Fabric cluster. Stateful services can be developed using either the built-in low latency volume drivers, or by using Reliable Collections (coming soon). We’re extending Reliable Collections to store state for any programming model or framework.

What are the supported container images?

The following container OS images can be used when deploying services.

  • Windows - windowsservercore and nanoserver
    • Windows Server 2016
    • Windows Server version 1709
  • Linux
    • No known limitations

Is there any cost associated to the preview?

Currently, there are no charges for deploying applications or containers to the Azure Service Mesh public preview. However, in the next few months we will begin to charge for the resources you deploy at 50 percent of the cost when the service is generally available. Before we make the switch to charging you for the resources, we will publish another post on the Azure blog, so that you are aware of this change.

Is there any specific limitation for the preview?

Yes, you will be allocated a restricted quota for use in the preview currently. Once the resources are switched to being charged, the quotas would be managed at the subscription level, similar to the other Azure resources. We will inform users several weeks ahead so you have time to react

Quota for each subscription are as follows:

  • Number of applications: 5
  • Number of cores per application: 12
  • Total RAM per application: 48 GB
  • Number of network and ingress end points: 5
  • Number of Azure volumes that you can attach: 10
  • Number of service replicas: 3

The largest container you can deploy is limited to 4 cores, 16-GB RAM. You can allocate partial cores to your containers.

Can I leave my application running overnight?

Yes, you can. However, we encourage you to delete the resources you deploy and not leave them running, unless you are actively testing it. This preview policy may change in the future and we may delete the resources if they are being misused, or to reclaim capacity needed for onboarding new folks.

Can I use the Service Fabric Mesh public preview service for deploying my production workloads?

The service is in preview and has no SLA, hence we discourage you from deploying your production workloads to it at this time.


Azure Security Center is now integrated into the subscription experience

$
0
0

Securing your resources is important, which is why we’ve made it even simpler for you to do. Azure Security Center is available in public preview in the subscription experience. In just a few clicks, you can enable Security Center and quickly assess the security state of your resources, get actionable recommendations, and mitigate risks.

Azure Security Center subscription experience

Azure Security Center gives you visibility into your security state across hybrid cloud workloads, gives you adaptive protections to reduce your exposure to attacks, and intelligent threat detection that helps you keep pace with rapidly evolving attacks.
The newly added Security tab provides a quick view into the security posture of your subscription, enabling you to discover and assess the security of your resources in that subscription and take action. The built-in dashboard provides instant insights into security alerts and vulnerabilities that require attention.

To make sure you can address the most important issues first, we provide a list of prioritized security recommendations and prioritized alerts. These recommendations and alerts are ranked from high severity to low severity to help you quickly respond and reduce the surface area in your environment susceptible to attack.

For further investigation or to respond to a detected issue, you can easily open Azure Security Center from the subscription blade. You have the flexibility to use a first-party or integrated partner solution to remediate the risk.

To learn more about Azure Security Center, visit our documentation.

Get started with Azure Security Center today and let us know what you think in our Tech Community.

Lilly strives to speed innovation with help from Microsoft 365 Enterprise

$
0
0


Profile picture of Ron Markezich.The nearly 40,000 employees of Eli Lilly and Company are on a mission to make medicines that help people live longer, healthier, and more active lives. But they know that developing new treatments for cancer, diabetes, and other debilitating diseases requires collaboration with the best minds working together to foster innovation.

That’s why Lilly takes a collaborative approach to discovering and developing new medicines—between lab researchers and the rest of the company—as well as with a global network of physicians, medical researchers, and healthcare organizations. Working together—creatively and efficiently—can help generate new ideas that fuel innovation. To bring together scientists across hundreds of locations and organizations and truly empower the workforce, Lilly selected Microsoft 365 Enterprise.

While Lilly is in the early stage of deployment, these cloud-based collaboration tools, including Microsoft Teams, are making an impact. Mike Meadows, vice president and chief technology officer at Lilly, says that the technology will allow for enhanced productivity and teamwork, while helping to protect IP:

“Collaboration tools like Microsoft Teams enhance our ability for researchers and other employees to work together in faster and more creative ways, advancing our promise to make life better through innovative medicines. Microsoft 365 helps us bring the best minds together while keeping data secure and addressing regulatory compliance requirements.”

Like enterprise customers across the globe, Lilly sees Microsoft 365 as a robust, intelligent productivity and collaboration solution that empowers employees to be creative and work together. And when deployment of Windows 10 is complete, employees across the company will advance a new culture of work where creative collaboration that sparks critical thinking and innovation happens anywhere, anytime.

At Microsoft, we’re humbled to play a role in helping Lilly make life better for people around the world.

—Ron Markezich

The post Lilly strives to speed innovation with help from Microsoft 365 Enterprise appeared first on Microsoft 365 Blog.

Azure Service Fabric Mesh tools now available for Visual Studio 2017

$
0
0

Azure Service Fabric is a market-tested distributed systems platform for running scalable and reliable applications on microservices and containers. Up until now, Service Fabric required you to create and manage the clusters and their nodes using virtual machine scale sets. With today’s announcement of Azure Service Fabric Mesh, you’ll be able to use Service Fabric without managing infrastructure such as VMs, storage, or networking. Additionally, we’ve released Service Fabric Mesh tooling in Visual Studio 2017 to help you build applications.

Previously, you had to describe your Service Fabric applications with XML manifests, which was complex and tedious. The new resource-based application uses lightweight YAML files to describe your application and the resources that make it up, making it easier to specify and modify these resources. The tools also help you scaffold applications, debug microservices, and publish your application to Mesh.

Ready to get started? We’ll walk you through how to take advantage of the managed infrastructure and the simplified YAML files for defining your applications.

Get Started with Service Fabric Mesh tools in Visual Studio 2017

After you download the Mesh tools, you’ll notice we’ve added a new entry for Service Fabric Mesh Application in the new project dialog.

Service Fabric Mesh in New Project Dialog, under Visual CSharp, Cloud

You might notice the new Container OS drop-down. Right now, local Service Fabric developer cluster debugging is Windows-only, but Service Fabric Mesh supports both Linux and Windows containers. Before publishing to Azure, you can change your service to use a Linux-based image by changing the “osType” property in the service.yaml file.

Service Fabric ASP.NET Core applications have two projects in the solution. The service.yaml file that is included in your main service project describes your service to the Service Fabric runtime. This file contains any endpoints your service will be listening on, environment variables, and other properties, including any resource constraints you want enforced. There’s also a Dockerfile with instructions for the Docker image that gets built for your service when it’s running in Service Fabric. The tools configure the Dockerfile to work with the service you select. Usually you won’t need to worry about this file, but you are free to modify it if you want to use a different base image or include additional dependencies.

Service Fabric Mesh in Visual Studio

The second project in this example, HotelApp, is a lightweight project for configuring application-wide settings. By default, the app.yaml and network.yaml files contain basic configuration information. During debugging and publishing, Visual Studio will use the Service Fabric SDK to merge the various YAML files and deploy them, along with your service(s), to Service Fabric.

Publishing and Debugging your Service Fabric Mesh Application

You can set breakpoints and debug your code just like any other .NET Core application. When it’s time to publish your application to Azure Service Fabric Mesh, right click the application project and select Publish. This brings up the following dialog where you’ll need to specify a few values to successfully publish your application.

Service Fabric Mesh Publish dialog showing options like Subscription, Location, and Azure container registry

Publishing from Visual Studio builds the exe/dll for each service, creates Docker images for the services, pushes them to Azure Container Registry, and deploys the application to Mesh. Once publish is complete, Visual Studio will show you each of the ingress endpoint URLs for each of your services that had one defined.

You can get more information about these steps by following our Service Fabric Mesh Quickstart.

Share Your Thoughts

When you try the new Service Fabric Mesh tooling, we’d love to hear your feedback! Leave a message for us through Visual Studio or add a comment to this blog post. You can get started setting up your development machine here.

Cristy Gonzalez, Program Manager, Azure Developer Experiences

Cristy has been a PM at Microsoft since 2013. In that time, she has worked on the Azure SDK, Storage Explorer, Azure Diagnostics, and Azure developer services like DevTest Labs and ACR. She’s currently working on experiences for users getting started with Azure.

Exploring Azure App Service – Azure Diagnostics

$
0
0

If you’ve followed our previous posts about using Azure App Service to host web apps in the cloud (1. Introduction to App Service, 2. Hosting web apps that use SQL) you’re already familiar with how easy it is to get an app running in the cloud; but what if the app doesn’t work correctly (it’s crashing, running too slow, etc.)?  In this post we’ll explore how to use Azure’s Application Insights to have always on diagnostics that will help you find and fix these types of issues.

Azure Application Insights provides seamless integration with Azure App Service for monitoring, triaging and diagnosing code-level issues. It can easily be enabled on an existing web app with a single button click. Profiler traces and exception snapshots will be available for identifying the lines of code that caused issues. Let’s take a closer look at this experience.

Enable Application Insights on an existing web app to investigate issues

We recommend you follow along using your own application, but if you don’t have one readily available we will be using the Contoso University sample. The instructions on how to deploy it to App Service are in the readme file.

If you are following along with Contoso University, you will notice the Instructors page throws errors. In addition, the Courses tab loads a bit slower than others.

Let’s turn on Application Insights to investigate. After the app is deployed to App service, Application Insights can be enabled from the App Service portal by clicking the button on the overview blade:

Fill out the Application Insights enablement blade the following way:

  • Create a new resource, with an appropriate name.
  • Leave all default options for Code-level diagnostics on. The added section Code level diagnostics is on by default to enable Profiler and Snapshot Debugger for diagnosing slow app performance and runtime exceptions.
  • Click the ‘OK’ button. Once prompted if to restart the web app, click ‘Continue’ to proceed.

Once Application Insights is enabled, you will be able to see its connection status. You can now navigate to the Application Insights overview blade by clicking on the link next to the green check mark:

Generate traffic for your web app in order to reproduce issues

Let’s generate some traffic to reproduce our two issues: a) Courses page loading slowly, b) Instructors page throwing errors. You are going to use performance test with Azure portal to make requests to the following URLs:

  • http://<your_webapp_name>.azurewebsites.net/Courses
  • http://<your_webapp_name>.azurewebsites.net/Instructors

You are going to be creating two different performance tests, once for each URL. For the Courses page you are going to simulate 250 users over a duration of 5 minutes, since you are experiencing a performance issue. For the Instructors page you can simulate 10 users over 1 minutes since we’d generally expect less instructors than users on the site at any given time.

Profile your app during performance tests to identify performance issues

A performance test will generate traffic, but if you want to understand how you app performs you have to analyze its performance while the test is running using a profiler. Let’s do exactly that, using the Performance | Configure Profiler blade while one of our performance tests is running:

Later on we will walkthrough how to use the profiler to identify the exact lines of code responsible for the slow-down. For now, let’s focus on simply profiling . After clicking on “Profile now”, wait until the performance test finishes and the profiler has completed its analysis. After a new entry in the section “Recent profiling sessions” appears, navigate back to the Overview blade.

Diagnose runtime exceptions

If your web app has any failed requests, you need to root cause and solve the issues to ensure your app works reliably. After running your performance test on the Instructors page you have some example failed requests to take a look at:

Let’s go to Failures blade to investigate what failed.

On the Failures blade, the top failed operation is ‘GET Instructors/Index’ and the top exception is ‘InvalidOperationException’. Click on the ‘COUNT’ column of the exception count to open list of sample exceptions. Click on the suggested exception to open the End-to-End Transaction blade.

In the End-to-End Transaction blade, you can see ‘System.InvalidOperationException’ exceptions thrown from GET Instructors/Index operation. Select the exception row and click on ‘Open debug snapshot’.

If it’s the first time you use Snapshot Debugger, you will prompt to request RBAC access to snapshots to safeguard the potentially sensitive data shown in local variables:

Once you get access, you will see a snapshot view like the following:

From the local variables and call stack, you can see the exception is thrown at InstructorsController.cs line 56 with message ‘Nullable object must have a value’. This provides sufficient information to proceed with debugging the app’s source code.

To get a better experience, download the snapshot and debug it using Visual Studio Enterprise. You will be able to interactively see which line of code caused the exception:

Looking at the code, the exception was thrown because ‘id’ is null and you are missing the appropriate check. When your app is running in the cloud, resources are dynamically provisioned and destroyed and so may not always get the chance to access the state of a failed component before it is reset. The Snapshot Debugger is a powerful tool that can maintain the failed state of the component even after the component’s state has been reset, by capturing local variables and call stack at the time the exception is thrown.

Diagnose bad performance from your web app

The server response time chart on the overview blade provides quick information on how performant your web app is over time. In the Contoso example, we see some spikes on the chart indicating there is a short period of time where users experienced slow responses for the requests they made.

To investigate further, navigate to the Performance blade in App Insights portal:

Zoom into the time range 6pm-10pm in the ‘Operation times: zoom into range’ chart to see spikes on the Request count.

Sort the Operations table by duration and request count to figure out where your web app spent the most time. In our example GET Courses/Index operation has the longest average duration. Let’s click on it to investigate why this operation takes so long.

The right side of the blade provides insights based on the Course/Index operation.

From the chart you can see although most operations only took around 400ms, the worst ones took up to 35 seconds. This means some users are getting really bad experience when hitting this URL and you should address it. Let’s look at Profiler traces to troubleshoot why GET Courses/Index was being so slow.

You should see profiler traces similar to the following:

The code path that’s taking the most time is prefixed with the flame icon. In this particular request, most time was spent on reading the list of courses from the database. Browsing to the code CourseController.cs we can see that when loading the list of courses the AsNoTracking() optimization option is not used. By default, Entity Framework will turn on tracking which caches the results to compare with what’s modified. This could add an approx. ~30% overhead to your app’s performance. For simple read operation like this one, we can optimize the query performance by using the AsNoTracking() option.

Conclusion

We hope that you find it easy to use Application Insights to diagnose performance and errors in your web apps. We believe Azure App Service is a great place to get started hosting and maintaining your web apps. You don’t have to enable App Insights upfront; the option is always there to be turned on when and as needed without re-deployment.

If you have any questions or issues, let us know by leaving comments below.

Catherine Wang Program Manager, VS and .NET

Catherine is on Azure developer experience team and is responsible for Azure diagnostics, security and storage tools.

Azure AD Managed Service Identity updates

$
0
0

This post is authored by Arturo Lucatero, Program Manager, Azure Identity Services.

Azure AD Managed Service Identity has been in preview for several months now, so we wanted to give you an update on what has been happening.

Two types of managed identities

There are now two types of managed identities:

  1. System Assigned: This is the type of managed identity we introduced back in September. It has a 1:1 relation with an Azure resource (e.g., VM) and shares the same life-cycle. When you delete the resource, we automatically clean up the identity.

  1. User Assigned: This new type of managed identity is a standalone Azure resource with its own life-cycle. It enables you to have an identity which can be used by one or more Azure resources. A few notes worth mentioning:

    • As of today, user assigned managed identities can only be used on Virtual Machines and Virtual Machine Scale Sets. Other resource types are onboarding soon.

    • The API to assign user assigned managed identities to a resource is going change in the near future. Today, the assigned identities are listed in an array property in Azure Resource Manager. This will be changing to be a dictionary to support PATCH semantics.

    • You can’t create and manage user assigned identities in the portal yet. We are working on getting that ready for preview, very soon, stay tuned!

Azure AD Managed Service Identity on Azure Friday

Recently, I visited Azure Friday and talked about Azure AD Managed Service Identity with Donovan Brown. Check it out below:

Endpoint update for token requests on Virtual Machines and Virtual Machine Scale Sets

We've changed the endpoint for managed identity token requests on Virtual Machines and Virtual Machine Scale Sets:

For VMs and VM Scale Sets you now request tokens via the Azure Instance Metadata Service (IMDS). IMDS is a REST endpoint only accessible from within the VM, at a well-known non-routable IP address.

Sample HTTP calls for requesting tokens within a VM:

Via IMDS GET 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/' HTTP/1.1 Metadata: true
Via VM extension GET 'http://localhost:50342/oauth2/token?resource=https://management.azure.com/' HTTP/1.1 Metadata: true

Using IMDS for token requests has several benefits:

  • All Windows and Linux OS’s supported on Azure IaaS can use managed identities.

  • Credentials used under the covers by managed identity are no longer hosted on the VM. They are now hosted and secured on the host of the Azure VM.

  • Enabling managed identities on a VM is a simpler and faster. The VM extension is no longer needed.

To learn more about Azure's Instance Metadata Service, see: Azure Instance Metadata service docs.

Virtual Machine extension deprecation

Considering the benefits of using IMDS for managed identity token requests, we are deprecating the existing VM extension. While the extension has been incredibly helpful during the preview phase of managed identities, it has certain limitations, and we have decided not to include it in our general availability plan. Some of the limitations include:

  • Only certain Linux distributions are supported. We would need to develop, modify and test the extension for every distro we want to support.

  • With the VM extension, the credentials used to request tokens are stored on the VM. An attacker who successfully breaches a VM can exfiltrate the credentials.

  • Deploying VMs with managed identities has a performance impact since the VM extension needs to be provisioned.

  • The VM extension can only support having 32 user assigned managed identities per VM. Via IMDS we can support a significantly higher limit.

We plan to support the VM extension in its preview form until January 2019. At the end of January 2019, we will stop supporting the VM extension, and the IMDS endpoint will be the only mechanism to request tokens.

Azure Storage support

Azure Storage has announced a preview of Azure AD authentication and RBAC integration. You can now use a managed identity to authenticate to Azure storage directly. To learn more, see: Tutorial: Use a Linux VM's Managed Identity to access Azure Storage.

Support for build and release agents in VSTS

Visual Studio Team Services now supports Managed Identity based authentication for build and release agents. To learn more, see: Streamline authentication from agent VMs in Azure to Azure Resource Manager.

App Service and Azure Functions support

The integration of system-assigned managed identities with App Services and Azure Functions is now Generally Available. To learn more, see: Announcing General Availability and Sovereign Cloud Support of Managed Service Identity for App Service and Azure Functions.

We're listening

Thank you for reading this far! The team is hard at work on the finishing touches of managed identities for VMs and VM Scale sets.

We would appreciate your feedback on Azure AD Managed Service Identity via this 2-minute survey. Your feedback is incredibly helpful for us to know what you like and where we can improve.

As always, we’re listening on Stack Overflow, Azure feedback, and on GitHub for issues in our documentation.

Globally replicated data lakes with LiveData using WANdisco on Azure

$
0
0

The recent announcement of Azure Data Lake Storage Gen2 preview and its support on Azure HDInsight is already leading partners to innovate at a global scale. WANdisco enables globally replicated data lakes on Azure for analytics over the freshest data. This blog explains how.

The modern business landscape is ruled by data. Analytics and AI are now essential for driving key business transformation. Customers have benefited tremendously from the performance, flexibility, and low cost offered by Azure for analytics and AI workloads.

Hybrid made easy with a single-click!

For many organizations, however, the process of making their data available in the cloud has been a challenge. The sheer scale of modern data sets combined with the expectations from users of continued system availability make it difficult to use standard tooling for copying data just to get data to Azure. They cannot suffer the business cost of system downtime, nor the potential for inconsistent or unavailable data that produces incorrect analytics results.

The organizations that are maximizing their Azure opportunities are using WANdisco Fusion to ensure they have always accurate and consistent data.  Let’s look at an example of how a customer was able to leverage WANdisco on Azure HDInsight and reduce their deployment time from months to days.

Scenario: replicating data from on-prem to cloud and other Hadoop distributions

Customer wanted to synchronize data from on-prem Hadoop to Azure HDInsight for analytics and then replicate to a third data lake in parent company in real-time, always, with no downtime, with strict SLAs.

Challenge: Petabytes across on-prem and the cloud

Multiple petabyte under replication across on-prem and the cloud. Data along with the metadata such as Hive schema, authorization policies using Ranger etc. was constantly changing and used at the source and the destination. Customer wanted a zero-disruption solution.

Solution: deploy WANdisco Fusion with a single-click in Azure HDInsight

With hundreds of terabytes of data needing to be in sync with Azure all the time, Customer was able to deploy WANdisco Fusion with a single-click in Azure HDInsight Application Platform and was able to support the complex data availability, multi-vendor and multi-location support, while ensuring their data SLAs.

Globally replicated data lakes!

With WANdisco Fusion, you can make data that you have used in other large-scale analytics platforms available in Azure Blob Storage, ADLS Gen1 and Gen2 without downtime or disruption to your existing environment. Customers can also replicate the data, and metadata (Hive database schema, authorization policies using Apache Ranger, Sentry, and more ) across different regions to make the data lake available globally for analytics.

Screen Shot 2018-07-01 at 12.00.23 PM

The technology to make this happen is WANdisco Fusion, and the capability is called ‘LiveData.’ LiveData combines distributed consensus with large-scale data replication, so that applications can continue to operate on data locally, while WANdisco Fusion makes that same information available in Azure Blob Storage, Azure Data Lake Storage Gen2 and Gen1. Systems can operate on data in either platform at the same time, while WANdisco Fusion's LiveData technology ensures that data are available for use at any time in any location.

LiveData in practice

As an example of how a LiveData platform is used, a semiconductor manufacturer applies this technology today to bridge their on-premises analytics infrastructure with Azure. Large-scale Hadoop deployments run on-premises with hundreds of Terabytes of data in constant use. Making that data available in Azure Data Lake Storage (ADLS) would be impossible without a LiveData platform because it is undergoing constant change. There is no time for downtime, so data need to be replicated while they are changing and being used.

WANdisco Fusion achieves this by introducing consensus to changes made in the environments. Deployed in both the on-premises Hadoop environments, and in Azure, Fusion lets administrators select which portions of their data need to be available in each environment. That selective replication in combination with continuous replication of data, as soon as any change occurs, can be used to bring data at scale to the cloud. The LiveData capability does even more! The semiconductor manufacturer also has to ensure that their applications will operate in Azure on Azure Data Lake Storage Gen2 on exactly the same data that they use on-premises. With a LiveData platform, this manufacturer is able to guarantee consistency by actively replicating changes multi-directionally, a new critical business and technology capability.

By introducing WANdisco Fusion on-premises and in Azure, linking those deployments and defining simple rules for data availability (directory, database, table, and more) and spanning locations, an enterprise is able to avoid the physical constraints that would otherwise prevent ready adoption of Azure Data Lake Storage Gen2 and other Azure analytical services. Applications can continue to run on-premises while data are replicated with Azure, and applications can be operated in the Azure environment on the very same data at the same time. A LiveData architecture avoids the divergence of data by removing the notion of having separate data in each environment. Instead, both the on-premises and Azure deployments have direct access at local speed to the same data all the time.

Try WANdisco to create globally replicated data lakes today!

Getting there is simple, with three steps:

  1. Installing WANdisco Fusion App on HDInsight using a single-click deployment model
  2. Install WANdisco Fusion on-premises
  3. Connect to the data sources in each region and choose the datasets to replicate.

Replication rules can act on file system locations or on specific Hive databases and tables, Ranger and sentry policies etc. Applications can then use their data as normal. With local speed of access and no need to modify how the applications work, Fusion provides continuous replication and guaranteed consistency for those data sets that are shared across environments.

Resources

Announcing the Azure Cloud Shell editor in collaboration with Visual Studio Code

$
0
0

Last year at the //Build conference we launched the Azure Cloud Shell in the Azure portal, providing our users with a cloud-native command-line environment from any device, anywhere in the world. Over the last year, we've seen incredible adoption, with thousands of users logging in every day.

We've added some incredible integrations that make Cloud Shell even more powerful. We added automatic authorization for pre-installed open source tools like Terraform, Ansible, and InSpec. We've also partnered with other Microsoft teams to enable the Try It experiences for Azure and .NET documentation. Additionally, we worked with the Visual Studio Code team to embed Cloud Shell inside of Visual Studio Code and the Azure mobile app team to integrate Cloud Shell into the Azure mobile app for easy access from mobile devices everywhere.

Overall, the feedback we received from our active user base demonstrates the utility and value of Cloud Shell to our users. As we looked at the ways that people are using Cloud Shell, we realized early on that providing our users with easy-to-use choices for managing their cloud infrastructure via the web browser was critical to success.

Since launch, we have provided a variety of editors (vi, emacs, nano) for editing files from Cloud Shell. To bring even more flexibility to how you edit files, today I'm excited to announce the launch of a graphical editor embedded directly in Azure Cloud Shell. Through collaboration with the Visual Studio Code team and their open-source Monaco project, the same web-standards based editor that powers Visual Studio Code is now integrated directly into Cloud Shell.

lznciJO

The Monaco code editor brings features like syntax coloring, auto completion, and code snippets. The new Cloud Shell integration includes a file explorer to easily navigate the Cloud Shell file system for seamless file exploration. This enables a rich editing workflow by simply typing “code .” to open the editor’s file explorer from any Cloud Shell web-based experience.

 

 

There's never been a better time to see how a cloud-based DevOps environment can radically change the ease and ubiquity of your interactions with the cloud. Try the new Cloud Shell editing experience today by navigating to shell.azure.com or portal.azure.com and typing "code .”!


R3 on Azure: Launch of Corda Enterprise v3.1

$
0
0

As part of our ongoing partnership, which my colleague Kashif Ali discussed in his November update, we are delighted to announce the launch of Corda Enterprise v3.1 to the Azure Marketplace.

This comes at a time when the state of digital ledger, blockchain technology, and the surrounding industry are maturing and continuing to grow rapidly. In particular, maturity around the R3 ecosystem is accelerating.

Today, R3 launches their Corda Enterprise v3.1 offering to the Azure Marketplace with a free trial offer, giving you the opportunity to kick the tires before you buy. As one of the few general purpose enterprise digital ledgers in the market, R3 continues to drive interesting projects like the recently launched KYC solution involving 33 institutions sharing KYC data geographically spread around the world all running in Azure.

Corda Enterprise offers a number of unique Azure features that make standing up a digital ledger environment inside an enterprise much simpler.

The deployment template in the Azure Marketplace:

  • Dramatically speeds deployment and configuration of Corda Enterprise.
  • Is the gold standard reference implementation.
  • Offers resilience and high availability.
  • Easily integrate with existing enterprise systems through Azure services such as Logic Apps and Power Apps.

Some of the technical nuances of Enterprise Corda on Azure include:

  • Leveraging the AzureSQL managed database, reducing the need to worry about managing the VM for database issues like uptime, disk space concerns, and sharding.
  • Managed and replicated filesystem.
  • Load balancer deployed as part of the solution.
  • The node can be provisioned to connect to any Corda network.
  • Azure deployment templates that let the user select options for a number of parameters to configure the environment.
  • Decide during deployment which Azure regions make sense for your Corda network and applications.
  • Corda Enterprise on Azure is being launched with a 60-day free trial and full license available from R3.

Get started

Azure cost forecast API and other updates

$
0
0

As your cloud spend starts to increase, being able to accurately forecast usage becomes a critical part of your plan. As the first step in enabling a forward looking view to your spend on a subscription we’re launching a forecast API. The forecast API today supports a daily or monthly grain forecast at a 95 percent confidence interval. The API also returns the last two months of actual usage that should help in looking at any trending scenarios. For future iterations of the API, we plan to support multiple other scopes up and down the hierarchy, like resource groups and enrollments, options for confidence intervals and longer range forecasts. Check out the documentation page for more details on calling the forecast API.

Location and service data normalization

Effective cost management for enterprise customers requires accurate and granular data that can be dimensionalized to support ad hoc queries and accurate rollups of costs in the enterprise hierarchy. As the first step to make the usage data adding more dimensions, we are normalizing the location (InstanceLocation) and service (ConsumedService) fields as there are a few data quality issues with multiple variants of data in these columns. The dimensions currently supported are tags and resource groups, with this release we will now be adding location and service as dimensions. Location will manifest as a new column called Location and service will manifest itself as two new columns, namely ServiceName and ServiceTier. This should ensure moving to the new API version is backward compatible. These changes will be available in the API version 2018-06-30.

Price sheet mapping to usage Details

The price sheet API is a union of the prices for each applicable meter for each offer. As a result for customers with multiple offers, there was no deterministic way to identify which specific instance of a meter was used to price a usage record in the usage details. This update to the APIs (version 2018-05-31) introduces a few new attributes on the usage details to correlate usage with the price sheet. For customers looking to map the price sheet to the usage details, joining the two datasets on the following columns will result in a unique match between the usage details row and the meter price.

New fields in usage details API

  • OfferId
  • PartNumber
  • ResourceGuid

New fields in price sheet API

  • OfferId

This change update affects both the key based API and the ARM API.

Monetary commit ineligible charges

Enterprise customers with a monetary commit have usage applied to the available credit first before an invoice is generated. In some instances, certain charges are not credit eligible and will be invoiced. The feedback we have received is that it’s cumbersome to try and determine which charges are monetary commit eligible. As a result, the usage details API is being updated to add an additional attribute to flag charges billed separately.

New field in the usage details API

  • ChargesBilledSeperately

Late Arriving Data

To accommodate third party services that have delays in reporting usage, the reported usage date (usage report date) is set to the time at which the usage data was sent as opposed to when the actual usage took place (i.e. consumption time). As a result, the usage will be rated for and applied to the reported time. In order to represent the actual consumption time, the properties.AdditionalProperties field will now contain two additional properties ConsumptionBeginTime and ConsumptionEndTime that correspond to the actual consumption time window.

These changes will result in a few scenarios that will need to be addressed when calling the usage details API:

  • Month End Reporting: For usage that occurred during a month but reported during the next month, customers will need to look at the AdditionalProperties field to allocate the usage to the appropriate month if needed.

When querying the usage details API by a date range, the query only applies to usage report date and not the consumption time. For customers looking to map usage details to invoices, this update does not affect the process as the invoice will process the usage based on the usage report date. For customers looking to map usage details to a specific calendar date/month, this update is a breaking change and for these scenarios the usage report date cannot be used  and the date that the usage occurred (i.e. the consumption date) in the additional properties section must be used.

PowerShell support

As the Cost Management APIs grow in complexity, we are adding support for PowerShell in addition to the supported SDKs (Python, NodeJS, .Net, and Ruby). The documentation page has additional details on the cmdlets.

Visual Studio IntelliCode now infers coding conventions for consistent code

$
0
0

Following the initial announcement of Visual Studio IntelliCode at Build 2018, we’re excited to report that the Visual Studio IntelliCode Extension has been updated to enable coding convention inference for C#, to help you and your team achieve more readable and consistent code. If you’re new to the Intellicode extension, it already provides AI-assisted IntelliSense suggestions, which you can read about in the initial announcement. If you already have the extension installed, you may have automatically received this update. If not, you can get started now by downloading the extension.

Inferring code style and formatting conventions for your codebase

Inferring code style and formatting conventions for your codebase

Consistency is important for code maintainability and readability; in fact, a recent Microsoft Research study in this area showed that 18 percent of pull request review comments were related to coding conventions, styles, and naming issues.  

With this update, the IntelliCode extension can now generate an .editorconfig file on-demand that best matches the coding conventions used in your codebase; no more long discussions with your team about the best convention to use! Once generated, this file will help you maintain consistency in your team’s codebase. Fixing up formatting issues is quick and easy with the Quick Action lightbulb menu (Ctrl+. or Alt+Enter) or with the new configurable Format Document (Ctrl+K, D) in Visual Studio 2017 version 15.8 Preview 3 and higher. 

How to use .editorconfig inference

IntelliCode creates the inferred .editorconfig file by scanning the code files below your chosen location to create the best matching set of conventions. Once it’s there, you will see any coding convention violations related to style show up in the error list as Messages as illustrated below:

Coding convention violations related to style show up in the error list as Messages

The style violations are set up to default to “Message” severity – this is shown by the “:suggestion” suffix on each rule line in the .editorconfig file .You can tweak the file if you want a different level of enforcement, like warning or error.  Note that formatting violations do not show up in the Error List,  but can still be fixed easily – see our “how to” below.

You can invoke EditorConfig generation via the Solution Explorer. Simply right-click on the solution, project, or folder level folder where you want the conventions to apply, select “add”, and then “EditorConfig file (IntelliCode)”. For projects you can also select “add” then “new item” then “EditorConfig file (IntelliCode)”. Note that EditorConfig files apply enforcement hierarchically to all files below it in the filesystem “cone”. For instance, if you want a set of conventions that apply to your whole solution, place your .editorconfig in the solution directory. If you have subfolders or projects that have different conventions, you can create a new EditorConfig for those subfolders/projects to override the conventions from the higher level.

How to fix up your code to conform to the new conventions

There are a couple of ways to clean up your code to conform to the new conventions, depending on your goals.

  1. Using Quick Actions Lightbulb Menu (Ctrl+. or Alt+Enter)
    For style issues, lightbulbs will appear (along with error list entries), to allow you to auto-fix any inconsistencies. You can choose the scope of the fix in the lightbulb – instance, document, project or solution.
  1. Using Format Document (Ctrl+K,D)
    For both format and style issues, if you are using Visual Studio 2017 15.8 Preview 3 or higher, you’ll be able to use the extended “Format Document” command to perform additional code cleanup for the current document. This will fix up the code in that document to conform to the conventions you just created, allowing you to adopt a “clean up as you touch each file” approach to getting consistent. Note that this additional capability in format document only covers a fixed set of issues, which you can change in Tools > Options > Text Editor > C# > Code Style > Formatting > General > Format Document Settings (Experiment):Format Document Options Extension For Conventions

Notice that the default settings do not fix some style conventions. You can opt in to these via tools options (e.g. Apply implicit/explicit type preferences will run style rules related to the use of var in your code).

Things to be aware of when using EditorConfig inference

There are a couple of known issues to be aware of when using EditorConfig inference:

  1. You need to close and reopen open files to see changes to the conventions apply in 15.8 Preview 2 and earlier
    In Visual Studio 2017 versions prior to 15.8 Preview 3, you will need to close and re-open all open documents to see the conventions in the EditorConfig file you create take effect. This is fixed in the 15.8 Preview 3 release.
  1. Creating through the File-New Item dialog adds a “1” To the filename
    If you use the File-New Item dialog route to create your EditorConfig, in Visual Studio versions prior to 15.8 Preview 4, you’ll need to manually remove the superfluous “1” Prefixing the EditorConfig file name in the dialog. This is fixed in the 15.8 Preview 4 release.

Thanks for all your interest in IntelliCode. We’re excited to hear your feedback and improve IntelliCode as we make more progress. Use the extension’s review page to make suggestions; if you find any problems with the extension, please use the built-in Visual Studio “Report a Problem” option, and mention IntelliCode in your report – reporting this way helps us gather helpful information to resolve the issue.

Get Involved

As we expand capabilities to more scenarios and other languages, we’ll announce a limited preview of IntelliCode.

Sign up to become an insider to keep up with the project and join the waitlist for the private preview.

Thanks!

Mark Wilson-Thomas, Senior Program Manager, Visual Studio IDE Team
@MarkPavWT

Mark is a Program Manager on the Visual Studio IDE team, where he’s been building developer tools for nearly 10 years. He currently looks after the Visual Studio Editor. Prior to that, he worked on tools for Office, SQL, WPF and Silverlight.

Video: R for AI, and the Not Hotdog workshop

$
0
0

Earlier this year at the QCon.ai conference, I gave a short presentation, "The Case for R, for AI developers". I also presented an interactive workshop, using R and the Microsoft Cognitive Services APIs, to automatically generate captions for images, and to create a tool to recognize images of hotdogs. Video from both the presentation, and the workshop (which starts at the 10:00 mark), is now available to view the QCon.ai website.

RforAI

You can find the slides for the presentation here. The R code for the "Not Hotdog" workshop is available as an Azure Notebook which you can clone and use to follow along with the workshop.

InfoQ: R for AI developers

New web app tutorials in the VS and VS Code Python docs, and docs feedback

$
0
0

This post was written by Kraig Brockschmidt

Recognizing the popularity of the Django and Flask web app frameworks, we recently added several tutorials in the Python documentation that guide you through working with these frameworks in Microsoft’s Python-capable IDEs: the lightweight Visual Studio Code available on all operating systems, and the full Visual Studio for Windows. If you haven’t seen the tutorials yet, this blog post gives you a brief introduction. We also wanted to take the opportunity to highlight how you can contribute to docs, and the ways you can give feedback—both of which we very much welcome!

Flask in Visual Studio Code

First is Using Flask in Visual Studio Code, an already popular walkthrough that starts with creating an environment for Flask and getting a very simple Hello World app up and running. From there it introduces Python debugging and debugger configurations for Flask, using page templates, serving static files, and using template inheritance. The end result is a multi-page app as shown below, which can serve as a starting point for projects of your own. The completed code for the tutorial is available on GitHub.

Django and Flask in Visual Studio

For Visual Studio, we’ve added two series of tutorials for Django and Flask.

Learn Django in Visual Studio is a series of six articles in which you learn how to do the following:

  • Step 1: Create a basic Django project in a Git repository using the "Blank Django Web Project" template
  • Step 2: Create a Django app with one page and render that page using a template
  • Step 3: Serve static files, add pages, and use template inheritance
  • Step 4: Use the Django Web Project template to create an app with multiple pages and responsive design
  • Step 5: Authenticate users
  • Step 6: Use the Polls Django Web Project template to create an app that uses models, database migrations, and customizations to the administrative interface

As you can see, in this tutorial you learn about Django in the context of Visual Studio project templates. The tutorial explains everything that’s happening in the templates, so you can easily adapt the template-generated apps to suit your own needs. The code for the tutorial can of course be found on GitHub.

Learn Flask in Visual Studio, similarly, walks you through the different Flask project templates (code on GitHub):

  • Step 1: Create a basic Flask project in a Git repository using the "Blank Flask Web Project" template
  • Step 2: Create a Flask app with one page and render that page using a template
  • Step 3: Serve static files, add pages, and use template inheritance
  • Step 4: Use the Flask Web Project template to create an app with multiple pages and responsive design
  • Step 5: Use the Polls Flask Web Project template to create a polling app that uses a variety of storage options (Azure storage, MongoDB, or memory).

Other Highlights

We’ve also recently added a reference for Python-related item templates in Visual Studio. And if you’re interested in writing C++ modules that you can use from your Python programs, check out Creating a C++ extension for Python.

Contribute to the documentation!

Did you know that all the documentation for Visual Studio and Visual Studio Code is open source?

We’re delighted to receive contributions from the community in both docsets, and actively monitor pull requests. Truly, no contribution is too small. As the content developer who manages these docsets, I very much appreciate anyone who takes the time to fix a typo, correct an error, or otherwise make the docs better! Your contribution doesn’t have to be perfect, either: we’ll take the time to do the necessary editing and formatting.

And did you know you can contribute by simply using the Edit command that appears on each article in the Visual Studio Code docs:

and in the Visual Studio docs?

Those links take you straight into the GitHub repository for that article, where you can make edits, see the history, and enjoy all the other GitHub goodness.

Give docs feedback: what would you like to see?

We also welcome any doc issues or requests you have for new content. In the Visual Studio Docs, the Feedback command that alongside Edit takes you to the bottom of the page where you can create GitHub issues without leaving the docs at all. The Feedback section also shows existing issues and provides a Product Feedback link through which you can file bugs and feature requests for the Python Tools themselves. You can also just create an issue at any time directly in the Visual Studio docs repo.

We’re very responsive to issues and requests. For example, VS docs issue 1086, shown above, identified a detail that was missing from the documentation for the Python Environments window, which we fixed within a day!

For Visual Studio Code, we don’t have integration with GitHub directly in the docs, so just file an issue directly in the repo. For product feedback, use the Request and Report links on the right side of each docs page:

To file a issues for the Python Extension for Visual Studio Code itself (not the docs), go to https://github.com/Microsoft/vscode-python/issues.

In closing, it’s worth mentioning that although you can leave feedback through the “Is this page helpful?” controls in the docs, they are anonymous mechanisms that unfortunately don’t provide us any way to respond. We vastly prefer that you use GitHub issues so we can ask for more details and let you know when the issue has been addressed.

 

Kraig Brockschmidt
Content Developer for Python in Visual Studio and Visual Studio Code

Azure Monitor: Route AAD Activity Logs using diagnostic settings

$
0
0

Today in partnership with the Azure Active Directory (AAD) team we are excited to announce the public preview of AAD Activity Logs using Azure Monitor diagnostic settings. Azure Monitor diagnostic settings enable you to stream log data from an Azure service to three destinations: an Azure storage account, an Event Hubs namespace, and/or a Log Analytics workspace. This allows you to easily route logs from any Azure service to a data archive, SIEM tool, or custom log processing tool. With today’s announcement, you will now be able to route your AAD audit and sign in logs to these same destinations, centralizing all of your Azure service logs in one pipeline.

Until now, all log data handled by Azure Monitor came from an Azure resource deployed within an Azure subscription. We often describe this type of data as “resource-level log data,” and it is configured using a resource diagnostic setting. AAD log data is the first type of log data from a tenant-level service made available through Azure Monitor. Tenant-level services aren’t deployed as resources within an Azure subscription, rather they function across an entire AAD tenant. To handle this new type of “tenant-level log data,” Azure Monitor has introduced a new type of diagnostic setting, a tenant diagnostic setting. For AAD logs, you can setup a tenant diagnostic setting by navigating to Audit Logs in the AAD area of the portal and clicking “Export Data Settings.”

image

This will pull up the familiar Azure Monitor diagnostic setting experience, where you can create, modify, or delete diagnostic settings.

image To learn more about the feature and get started, check out Alex Simons’s post on the Enterprise Mobility and Security blog. Please also be aware that during the public preview AAD activity logs cannot yet be routed to Log Analytics, but we are working to enable this by October 2018. For a full list of services that expose logs through Azure Monitor, visit our documentation.

Blockchain as a tool for anti-fraud

$
0
0

Healthcare costs are skyrocketing. In 2016, healthcare costs in the US are estimated at nearly 18 percent of the GDP! Healthcare is becoming less affordable worldwide, and a serious chasm is widening between those that can afford healthcare and those that cannot. There are many factors driving the high cost of healthcare, one of them is fraud. In healthcare, there are several types of fraud including prescription fraud, medical identity fraud, financial fraud, and occupational fraud. The National Health Care Anti-Fraud Association estimates conservatively that health care fraud costs the US about $68 billion annually, which is about three percent of the US total $2.26 trillion in overall healthcare spending. There are two root vulnerabilities in healthcare organizations: insufficient protection of data integrity, and a lack of transparency.

841064554

Insufficient protection of data integrity enables fraudulent modification of records

Cybersecurity involves safeguarding the confidentiality, availability, and integrity of data. Often cybersecurity is mistakenly equated with protecting just the confidentiality of data to prevent unauthorized access. However, equally important is protecting the availability of data. That is, you must secure timely and reliable access to data, as well as the integrity of the data. You must ensure records are accurate, complete, and up-to-date. Protecting the integrity of information is particularly important for anti-fraud. Insufficient protection paves the way for the alteration or deletion of records for personal gain.

Insufficient transparency enables fraud to proceed undetected

Many types of fraud involve the creation of new fraudulent records. This can occur within a single organization and many times even within just a single system or silo within a healthcare organization. When this happens with limited access and visibility, then it is easier for fraudsters to conceal their activity. They can conduct fraudulent activities for longer before detection. The longer fraud proceeds undetected, the larger the business impact and cost.

Blockchain immutability protects the integrity of records

Chained hashcodes on blockchains make it practically impossible to alter or delete records on the blockchain. Furthermore, records on blockchains can also include pointers to off-chain data. Together with hashcodes, the pointers can be used to verify the integrity of such off-chain data. And that enables blockchains also to protect the integrity of off-chain data. Protecting the integrity of both on and off-chain records essentially blocks the fraudulent deletion or alteration of records for personal gain.

Blockchain transparency enables improved detection of fraud

Blockchains provide near real-time transparency of electronic records appended to the blockchain. These new records are visible across the consortium of healthcare organizations connected to the blockchain. This improves the ability of such consortiums to detect fraudulent records. The mere presence of such transparency and the prospect of detection alone will significantly deter fraud. And once such fraud is discovered, organizations can stop, remediate losses, and minimize business impacts and costs.

Blockchain advancing artificial intelligence for anti-fraud

Artificial Intelligence (AI) and Machine Learning (ML) have significant potential as tools for anti-fraud. They enable anti-fraud teams to process vast quantities of data in near real-time and detect fraudulent patterns that can then be investigated further by a team of anti-fraud experts. For example, see a data-driven fight against healthcare fraud, waste, and abuse. As new patterns of fraud are identified, new AI/ML models can be built and integrated into future anti-fraud inference suites, enabling a high degree of automation in anti-fraud. However, AI/ML are very data hungry. When they are powered by data from a single organization and often only a single silo of data within that organization, this stunts the quality of the models that can be built. Further, the quality of inference that can be done using such stunted models often results in a high inference error rate making many anti-fraud use cases infeasible. Blockchains enable collaboration on AI/ML for anti-fraud across a consortium of healthcare organizations. This allows collaboration on training data, the creation of shared models, inference results, and the validation of those results. As discussed in Accelerating AI and ML in Healthcare Using Blockchain.

ISMG fraud and breach prevention summits

I recently had the honor of presenting “Blockchain as a tool for anti-fraud” at the ISMG Fraud and Breach Prevention Summit in Chicago. Due to the overwhelming interest from the anti-fraud community in this subject, I will also be presenting at the ISMG Fraud and Breach Prevention Summits in San Francisco July 10-11 and New York August 8-9. Join us for a lively discussion and to find out how you can leverage Blockchain and AI/ML for anti-fraud in your healthcare organization.

Getting started with Blockchain

If you would like to get started with prototyping a blockchain for your anti-fraud initiative, see the Azure Blockchain Workbench. The workbench is a powerful platform for rapid prototyping of your blockchain. Once created, you can also deploy it as an Ethereum Blockchain on the Microsoft Azure cloud. The Azure Blockchain Workbench will also be adding support for both the Hyperledger Fabric and R3 Corda Blockchain platforms going forward. The Azure Blockchain Workbench enables you to accelerate your prototyping, technical POCs and pilots, enabling you to focus on anti-fraud results, and business value rather than blockchain technologies and deployment complexities.

Getting started with AI

Bootstrap your AI anti-fraud initiative with the Azure Security and Compliance Blueprint - HIPAA/HITRUST Health Data and AI. Rather than starting from scratch, you can accelerate your AI initiative by downloading, configuring, running, and customizing this AI blueprint for your anti-fraud use case. This blueprint also provides a wealth of information on how to protect the privacy, security, and compliance of your cloud-based AI solution.

Collaboration

I post regularly about new developments in healthcare, anti-fraud, AI, blockchain, and cloud computing on social media. If you would like to follow me you can find me on LinkedIn and Twitter. What other opportunities and challenges do you see with anti-fraud in healthcare using Blockchain and AI? I welcome your feedback and questions.

Related


Intelligent Healthcare with Azure Bring Your Own Key (BYOK) technology

$
0
0

Sensitive health data processed by hospitals and insurers is under constant attack from malicious actors who try to gain access to health care systems with the goal to steal or extort personal health information. Change Healthcare has implemented a Bring Your Own Key (BYOK) solution based on Microsoft Azure Cloud services and introduces Intelligent Healthcare today.

Change Healthcare is enabling payers and providers to have immediate and granular control over their data by transferring the ownership of encryption keys used to encrypt data at rest. This allows Change Healthcare customers to make security changes without involvement by Change Healthcare personnel and have their cloud-based systems re-encrypted and operational without service interruptions. The BYOK management capabilities include revoking access to encryption keys and rotating or deleting encryption keys on demand and at the time of a potential compromise. 
 
For the Intelligent Healthcare solution, Change Healthcare implemented Azure SQL Database Transparent Data Encryption (TDE) with BYOK support. TDE with BYOK encrypts databases, log files and backups when written to disk, which protects data at rest from unauthorized access. TDE with BYOK support integrates with Azure Key Vault, which provides highly available and scalable secure storage for RSA cryptographic keys backed by FIPS 140-2 Level 2 validated Hardware Security Modules (HSMs). Key Vault streamlines the key management process and enables customers to maintain full control of encryption keys and allows them to manage and audit key access.

Customers can generate and import their RSA key to Azure Key Vault and use it with Azure SQL Database and Azure SQL Data Warehouse TDE with BYOK support. Azure SQL Database handles the encryption and decryption of data stored in databases, log files, and backups in a fully transparent fashion by using a symmetric Database Encryption Key (DEK), which is in turn protected with the customer managed key called TDE Protector stored in the customer owned Azure Key Vault.

Taking advantage of BYOKs, customers gain more control over their data and can create, rotate and delete encryption keys, as well as grant and revoke key vault access to Azure SQL Database at any time. Revoking access in Azure Key Vault will effectively block access to all databases when the TDE Protector is inaccessible by Azure SQL Database. A SQL Database that doesn’t have access to the TDE Protector cannot get loaded into memory and a live database that loses access to Azure Key Vault or the TDE Protector will go offline within 24 hours.

Overview of TDE with customer managed keys and Azure Key Vault integration: 

TDE_BYOK

Windows 10 SDK Preview Build 17713 available now!

$
0
0

Today, we released a new Windows 10 Preview Build of the SDK to be used in conjunction with Windows 10 Insider Preview (Build 17713 or greater). The Preview SDK Build 17713 contains bug fixes and under development changes to the API surface area.

The Preview SDK can be downloaded from developer section on Windows Insider.

For feedback and updates to the known issues, please see the developer forum. For new developer feature requests, head over to our Windows Platform UserVoice.

Things to note:

  • This build works in conjunction with previously released SDKs and Visual Studio 2017. You can install this SDK and still also continue to submit your apps that target Windows 10 build 1803 or earlier to the Store.
  • The Windows SDK will now formally only be supported by Visual Studio 2017 and greater. You can download the Visual Studio 2017 here.
  • This build of the Windows SDK will only install on Windows 10 Insider Preview builds.
  • In order to assist with script access to the SDK, the ISO will also be able to be accessed through the following URL: https://go.microsoft.com/fwlink/?prd=11966&pver=1.0&plcid=0x409&clcid=0x409&ar=Flight&sar=Sdsurl&o1=17713 once the static URL is published.

C++/WinRT Update for build 17709 and beyond:

This update introduces many improvements and fixes for C++/WinRT. Notably, it introduces the ability to build C++/WinRT without any dependency on the Windows SDK. This isn’t particularly interesting to the OS developer, but even in the OS repo it provides benefits because it doesn’t include any Windows headers. Thus, a developer will typically pull in fewer or no dependencies inadvertently. This also means a dramatic reduction in the number of macros that a C++/WinRT developer must guard against. Removing the dependency on the Windows headers means that C++/WinRT is more portable and standards compliant, and furthers our efforts to make it a cross-compiler and cross-platform library. It also means that the C++/WinRT headers will never be mangled by macros. If you previously relied on C++/WinRT to include various Windows headers you will now have to include them yourself. It has always been good practice to always include any headers you depend on explicitly and not rely on another library to include them for you.

Highlights

Support get_strong and get_weak to create delegates: This update allows a developer to use either get_strong or get_weak instead of a raw this pointer when creating a delegate pointing to a member function.

Add async cancellation callback: The most frequently requested feature for C++/WinRT’s coroutine support has been the addition of a cancellation callback.

Simplify the use of APIs expecting IBuffer parameters: Although most APIs prefer collections or arrays, enough APIs rely on IBuffer that it should be easier to use such APIs from C++. This update provides direct access to the data behind an IBuffer implementation using the same data naming convention used by the C++ standard library containers. This also avoids colliding with metadata names that conventionally begin with an uppercase letter.

Conformance: Improved support for Clang and Visual C++’s stricter conformance modes.

Improved code gen: Various improvements to reduce code size, improve inlining, and optimize factory caching.

Remove unnecessary recursion: When the command line refers to a folder rather than a specific winmd, cppwinrt will no longer search recursively for winmd files. It causes performance problems in the OS build and can lead to usage errors that are hard to diagnose when developers inadvertently cause cppwinrt to consume more winmds than expected. The cppwinrt compiler also now handles duplicates more intelligently, making it more resilient to user error and poorly-formed winmd files.

Declare both WINRT_CanUnloadNow and WINRT_GetActivationFactory in base.h: Callers don’t need to declare them directly. Their signatures have also changed, amounting to a breaking change. The declarations alleviate most of the pain of this change. The change is necessitated by the fact that C++/WinRT no longer depends on the Windows headers and this change removes the dependency on the types from the Windows headers.

Harden smart pointers: The event revokers didn’t revoke when move-assigned a new value. This lead us to take a closer look at the smart pointer classes and we noticed that they were not reliably handling self-assignment. This is rooted in the com_ptr class template that most of the others rely on. We fixed com_ptr and updated the event revokers to handle move semantics correctly to ensure that they revoke upon assignment. The handle class template has also been hardened by the removal of the implicit constructor that made it easy to write incorrect code. This also turned bugs in the OS into compiler errors fixed in this PR.

Breaking Changes

Support for non-WinRT interfaces is disabled by default. To enable, simply #include <unknwn.h> before any C++/WinRT headers.

winrt::get_abi(winrt::hstring) now returns void* instead of HSTRING. Code requiring the HSTRING ABI can simply use a static_cast.

winrt::put_abi(winrt::hstring) returns void** instead of HSTRING*. Code requiring the HSTRING ABI can simply use a reinterpret_cast.

HRESULT is now projected as winrt::hresult. Code requiring an HRESULT can simply static_cast if you need to do type checking or support type traits, but it is otherwise convertible as long as <unknwn.h> is included first.

GUID is now projected as winrt::guid. Code implementing APIs with GUID parameters must use winrt::guid instead, but it is otherwise convertible as long as <unknwn.h> is included first.

The signatures of WINRT_CanUnloadNow and WINRT_GetActivationFactory has changed. Code must not declare these functions at all and instead include winrt/base.h to include their declarations.

The winrt::handle constructor is now explicit. Code assigning a raw handle value must call the attach method instead.

winrt::clock::from_FILETIME has been deprecated. Code should use winrt::clock::from_file_time instead.

What’s New:

MSIX Support

It’s finally here! You can now package your applications as MSIX. These applications can be installed and run on any device with 17682 build or later.

To package your application with MSIX, use the MakeAppx tool. To install the application – just click on the MSIX file. To understand more about MSIX, watch this introductory video: link

Feedback and comments are welcome on our MSIX community: http://aka.ms/MSIXCommunity

MSIX is not currently supported by the App Certification Kit nor the Microsoft Store at this time.

MC.EXE

We’ve made some important changes to the C/C++ ETW code generation of mc.exe (Message Compiler):

The “-mof” parameter is deprecated. This parameter instructs MC.exe to generate ETW code that is compatible with Windows XP and earlier. Support for the “-mof” parameter will be removed in a future version of mc.exe.

As long as the “-mof” parameter is not used, the generated C/C++ header is now compatible with both kernel-mode and user-mode, regardless of whether “-km” or “-um” was specified on the command line. The header will use the _ETW_KM_ macro to automatically determine whether it is being compiled for kernel-mode or user-mode and will call the appropriate ETW APIs for each mode.

  • The only remaining difference between “-km” and “-um” is that the EventWrite[EventName] macros generated with “-km” have an Activity ID parameter while the EventWrite[EventName] macros generated with “-um” do not have an Activity ID parameter.

The EventWrite[EventName] macros now default to calling EventWriteTransfer (user mode) or EtwWriteTransfer (kernel mode). Previously, the EventWrite[EventName] macros defaulted to calling EventWrite (user mode) or EtwWrite (kernel mode).

  • The generated header now supports several customization macros. For example, you can set the MCGEN_EVENTWRITETRANSFER macro if you need the generated macros to call something other than EventWriteTransfer.
  • The manifest supports new attributes.
    • Event “name”: non-localized event name.
    • Event “attributes”: additional key-value metadata for an event such as filename, line number, component name, function name.
    • Event “tags”: 28-bit value with user-defined semantics (per-event).
    • Field “tags”: 28-bit value with user-defined semantics (per-field – can be applied to “data” or “struct” elements).
  • You can now define “provider traits” in the manifest (e.g. provider group). If provider traits are used in the manifest, the EventRegister[ProviderName] macro will automatically register them.
  • MC will now report an error if a localized message file is missing a string. (Previously MC would silently generate a corrupt message resource.)
  • MC can now generate Unicode (utf-8 or utf-16) output with the “-cp utf-8” or “-cp utf-16” parameters.

Known Issues:

The SDK headers are generated with types in the “ABI” namespace. This is done to avoid conflicts with C++/CX and C++/WinRT clients that need to consume types directly at the ABI layer[1]. By default, types emitted by MIDL are *not* put in the ABI namespace, however this has the potential to introduce conflicts from teams attempting to consume ABI types from Windows WinRT MIDL generated headers and non-Windows WinRT MIDL generated headers (this is especially challenging if the non-Windows header references Windows types).

To ensure that developers have a consistent view of the WinRT API surface, validation has been added to the generated headers to ensure that the ABI prefix is consistent between the Windows headers and user generated headers. If you encounter an error like:

5>c:program files (x86)windows kits10include10.0.17687.0winrtwindows.foundation.h(83): error C2220: warning treated as error – no ‘object’ file generated

5>c:program files (x86)windows kits10include10.0.17687.0winrtwindows.foundation.h(83): warning C4005: ‘CHECK_NS_PREFIX_STATE’: macro redefinition

5>g:<PATH TO YOUR HEADER HERE>(41): note: see previous definition of ‘CHECK_NS_PREFIX_STATE’

It means that some of your MIDL generated headers are inconsistent with the system generated headers.

There are two ways to fix this:

  • Preferred: Compile your IDL file with the /ns_prefix MIDL command line switch. This will cause all your types to be moved to the ABI namespace consistent with the Windows headers. This may require code changes in your code however.
  • Alternate: Add #define DISABLE_NS_PREFIX_CHECKS before including the Windows headers. This will suppress the validation.

API Updates, Additions and Removals

When targeting new APIs, consider writing your app to be adaptive in order to run correctly on the widest number of Windows 10 devices. Please see Dynamically detecting features with API contracts (10 by 10) for more information.

The following APIs have been added to the platform since the release of 17134. The APIs below have been removed.

Additions:


Found build: \winbuildsreleasers5_release17713.1000.180706-1551 (17713) ***************** New API changes *****************
c:temptmprs4
c:temptmprs5
namespace Windows.AI.MachineLearning {
  public interface ILearningModelFeatureDescriptor
  public interface ILearningModelFeatureValue
  public interface ILearningModelOperatorProvider
  public sealed class ImageFeatureDescriptor : ILearningModelFeatureDescriptor
  public sealed class ImageFeatureValue : ILearningModelFeatureValue
  public interface ITensor : ILearningModelFeatureValue
  public sealed class LearningModel : IClosable
  public sealed class LearningModelBinding : IIterable<IKeyValuePair<string, object>>, IMapView<string, object>
  public sealed class LearningModelDevice
  public enum LearningModelDeviceKind
  public sealed class LearningModelEvaluationResult
  public enum LearningModelFeatureKind
  public sealed class LearningModelSession : IClosable
  public struct MachineLearningContract
  public sealed class MapFeatureDescriptor : ILearningModelFeatureDescriptor
  public sealed class SequenceFeatureDescriptor : ILearningModelFeatureDescriptor
  public sealed class TensorBoolean : ILearningModelFeatureValue, ITensor
  public sealed class TensorDouble : ILearningModelFeatureValue, ITensor
  public sealed class TensorFeatureDescriptor : ILearningModelFeatureDescriptor
  public sealed class TensorFloat : ILearningModelFeatureValue, ITensor
  public sealed class TensorFloat16Bit : ILearningModelFeatureValue, ITensor
  public sealed class TensorInt16Bit : ILearningModelFeatureValue, ITensor
  public sealed class TensorInt32Bit : ILearningModelFeatureValue, ITensor
  public sealed class TensorInt64Bit : ILearningModelFeatureValue, ITensor
  public sealed class TensorInt8Bit : ILearningModelFeatureValue, ITensor
  public enum TensorKind
  public sealed class TensorString : ILearningModelFeatureValue, ITensor
  public sealed class TensorUInt16Bit : ILearningModelFeatureValue, ITensor
  public sealed class TensorUInt32Bit : ILearningModelFeatureValue, ITensor
  public sealed class TensorUInt64Bit : ILearningModelFeatureValue, ITensor
  public sealed class TensorUInt8Bit : ILearningModelFeatureValue, ITensor
}
namespace Windows.AI.MachineLearning.Preview {
  public interface DummyInterfaceToFixBuildBreak
}
namespace Windows.ApplicationModel {
  public sealed class AppInstallerInfo
  public sealed class LimitedAccessFeatureRequestResult
  public static class LimitedAccessFeatures
  public enum LimitedAccessFeatureStatus
  public sealed class Package {
    IAsyncOperation<PackageUpdateAvailabilityResult> CheckUpdateAvailabilityAsync();
    AppInstallerInfo GetAppInstallerInfo();
  }
  public enum PackageUpdateAvailability
  public sealed class PackageUpdateAvailabilityResult
}
namespace Windows.ApplicationModel.Calls {
  public sealed class VoipCallCoordinator {
    IAsyncOperation<VoipPhoneCallResourceReservationStatus> ReserveCallResourcesAsync();
  }
}
namespace Windows.ApplicationModel.Chat {
  public static class ChatCapabilitiesManager {
    public static IAsyncOperation<ChatCapabilities> GetCachedCapabilitiesAsync(string address, string transportId);
    public static IAsyncOperation<ChatCapabilities> GetCapabilitiesFromNetworkAsync(string address, string transportId);
  }
  public static class RcsManager {
    public static event EventHandler<object> TransportListChanged;
  }
}
namespace Windows.ApplicationModel.DataTransfer {
  public static class Clipboard {
    public static event EventHandler<ClipboardHistoryChangedEventArgs> HistoryChanged;
    public static event EventHandler<object> HistoryEnabledChanged;
    public static event EventHandler<object> RoamingEnabledChanged;
    public static bool ClearHistory();
    public static bool DeleteItemFromHistory(ClipboardHistoryItem item);
    public static IAsyncOperation<ClipboardHistoryItemsResult> GetHistoryItemsAsync();
    public static bool IsHistoryEnabled();
   public static bool IsRoamingEnabled();
    public static bool SetContentWithOptions(DataPackage content, ClipboardContentOptions options);
    public static SetHistoryItemAsContentStatus SetHistoryItemAsContent(ClipboardHistoryItem item);
  }
  public sealed class ClipboardContentOptions
  public sealed class ClipboardHistoryChangedEventArgs
  public sealed class ClipboardHistoryItem
  public sealed class ClipboardHistoryItemsResult
  public enum ClipboardHistoryItemsResultStatus
  public sealed class DataPackagePropertySetView : IIterable<IKeyValuePair<string, object>>, IMapView<string, object> {
    bool IsFromRoamingClipboard { get; }
    string SourceDisplayName { get; }
  }
  public enum SetHistoryItemAsContentStatus
}
namespace Windows.ApplicationModel.Store.Preview {
  public enum DeliveryOptimizationDownloadMode
  public enum DeliveryOptimizationDownloadModeSource
  public sealed class DeliveryOptimizationSettings
  public static class StoreConfiguration {
    public static bool IsPinToDesktopSupported();
    public static bool IsPinToStartSupported();
    public static bool IsPinToTaskbarSupported();
    public static void PinToDesktop(string appPackageFamilyName);
    public static void PinToDesktopForUser(User user, string appPackageFamilyName);
  }
}
namespace Windows.ApplicationModel.Store.Preview.InstallControl {
  public enum AppInstallationToastNotificationMode
  public sealed class AppInstallItem {
    AppInstallationToastNotificationMode CompletedInstallToastNotificationMode { get; set; }
   AppInstallationToastNotificationMode InstallInProgressToastNotificationMode { get; set; }
    bool PinToDesktopAfterInstall { get; set; }
    bool PinToStartAfterInstall { get; set; }
    bool PinToTaskbarAfterInstall { get; set; }
  }
  public sealed class AppInstallManager {
    bool CanInstallForAllUsers { get; }
  }
  public sealed class AppInstallOptions {
    string CampaignId { get; set; }
    AppInstallationToastNotificationMode CompletedInstallToastNotificationMode { get; set; }
    string ExtendedCampaignId { get; set; }
    bool InstallForAllUsers { get; set; }
    AppInstallationToastNotificationMode InstallInProgressToastNotificationMode { get; set; }
    bool PinToDesktopAfterInstall { get; set; }
    bool PinToStartAfterInstall { get; set; }
    bool PinToTaskbarAfterInstall { get; set; }
    bool StageButDoNotInstall { get; set; }
  }
  public sealed class AppUpdateOptions {
    bool AutomaticallyDownloadAndInstallUpdateIfFound { get; set; }
  }
}
namespace Windows.ApplicationModel.UserActivities {
  public sealed class UserActivity {
    bool IsRoamable { get; set; }
  }
}
namespace Windows.Data.Text {
  public sealed class TextPredictionGenerator {
    CoreTextInputScope InputScope { get; set; }
    IAsyncOperation<IVectorView<string>> GetCandidatesAsync(string input, uint maxCandidates, TextPredictionOptions predictionOptions, IIterable<string> previousStrings);
    IAsyncOperation<IVectorView<string>> GetNextWordCandidatesAsync(uint maxCandidates, IIterable<string> previousStrings);
  }
  public enum TextPredictionOptions : uint
}
namespace Windows.Devices.Display.Core {
  public sealed class DisplayAdapter
  public enum DisplayBitsPerChannel : uint
  public sealed class DisplayDevice
  public enum DisplayDeviceCapability
  public sealed class DisplayFence
  public sealed class DisplayManager : IClosable
  public sealed class DisplayManagerChangedEventArgs
  public sealed class DisplayManagerDisabledEventArgs
  public sealed class DisplayManagerEnabledEventArgs
  public enum DisplayManagerOptions : uint
  public sealed class DisplayManagerPathsFailedOrInvalidatedEventArgs
  public enum DisplayManagerResult
  public sealed class DisplayManagerResultWithState
  public sealed class DisplayModeInfo
  public enum DisplayModeQueryOptions : uint
 public sealed class DisplayPath
  public enum DisplayPathScaling
  public enum DisplayPathStatus
  public struct DisplayPresentationRate
  public sealed class DisplayPrimaryDescription
  public enum DisplayRotation
  public sealed class DisplayScanout
  public sealed class DisplaySource
  public sealed class DisplayState
  public enum DisplayStateApplyOptions : uint
  public enum DisplayStateFunctionalizeOptions : uint
  public sealed class DisplayStateOperationResult
  public enum DisplayStateOperationStatus
  public sealed class DisplaySurface
  public sealed class DisplayTarget
  public enum DisplayTargetPersistence
  public sealed class DisplayTask
  public sealed class DisplayTaskPool
  public enum DisplayTaskSignalKind
  public sealed class DisplayView
  public sealed class DisplayWireFormat
  public enum DisplayWireFormatColorSpace
  public enum DisplayWireFormatEotf
  public enum DisplayWireFormatHdrMetadata
  public enum DisplayWireFormatPixelEncoding
}
namespace Windows.Devices.Enumeration {
  public enum DeviceInformationKind {
    DevicePanel = 8,
  }
  public sealed class DeviceInformationPairing {
    public static bool TryRegisterForAllInboundPairingRequestsWithProtectionLevel(DevicePairingKinds pairingKindsSupported, DevicePairingProtectionLevel minProtectionLevel);
  }
}
namespace Windows.Devices.Enumeration.Pnp {
  public enum PnpObjectType {
    DevicePanel = 8,
  }
}
namespace Windows.Devices.Lights {
  public sealed class LampArray
  public enum LampArrayKind
  public sealed class LampInfo
  public enum LampPurposes : uint
}
namespace Windows.Devices.Lights.Effects {
  public interface ILampArrayEffect
  public sealed class LampArrayBitmapEffect : ILampArrayEffect
  public sealed class LampArrayBitmapRequestedEventArgs
  public sealed class LampArrayBlinkEffect : ILampArrayEffect
  public sealed class LampArrayColorRampEffect : ILampArrayEffect
  public sealed class LampArrayCustomEffect : ILampArrayEffect
  public enum LampArrayEffectCompletionBehavior
  public sealed class LampArrayEffectPlaylist : IIterable<ILampArrayEffect>, IVectorView<ILampArrayEffect>
  public enum LampArrayEffectStartMode
  public enum LampArrayRepetitionMode
  public sealed class LampArraySolidEffect : ILampArrayEffect
  public sealed class LampArrayUpdateRequestedEventArgs
}
namespace Windows.Devices.PointOfService {
  public sealed class BarcodeScannerCapabilities {
    bool IsVideoPreviewSupported { get; }
  }
  public sealed class ClaimedBarcodeScanner : IClosable {
    event TypedEventHandler<ClaimedBarcodeScanner, ClaimedBarcodeScannerClosedEventArgs> Closed;
  }
  public sealed class ClaimedBarcodeScannerClosedEventArgs
  public sealed class ClaimedCashDrawer : IClosable {
    event TypedEventHandler<ClaimedCashDrawer, ClaimedCashDrawerClosedEventArgs> Closed;
  }
  public sealed class ClaimedCashDrawerClosedEventArgs
  public sealed class ClaimedLineDisplay : IClosable {
    event TypedEventHandler<ClaimedLineDisplay, ClaimedLineDisplayClosedEventArgs> Closed;
  }
  public sealed class ClaimedLineDisplayClosedEventArgs
  public sealed class ClaimedMagneticStripeReader : IClosable {
    event TypedEventHandler<ClaimedMagneticStripeReader, ClaimedMagneticStripeReaderClosedEventArgs> Closed;
  }
  public sealed class ClaimedMagneticStripeReaderClosedEventArgs
  public sealed class ClaimedPosPrinter : IClosable {
    event TypedEventHandler<ClaimedPosPrinter, ClaimedPosPrinterClosedEventArgs> Closed;
  }
  public sealed class ClaimedPosPrinterClosedEventArgs
}
namespace Windows.Devices.PointOfService.Provider {
  public sealed class BarcodeScannerDisableScannerRequest {
    IAsyncAction ReportFailedAsync(int reason);
    IAsyncAction ReportFailedAsync(int reason, string failedReasonDescription);
  }
  public sealed class BarcodeScannerEnableScannerRequest {
    IAsyncAction ReportFailedAsync(int reason);
    IAsyncAction ReportFailedAsync(int reason, string failedReasonDescription);
  }
  public sealed class BarcodeScannerFrameReader : IClosable
  public sealed class BarcodeScannerFrameReaderFrameArrivedEventArgs
  public sealed class BarcodeScannerGetSymbologyAttributesRequest {
    IAsyncAction ReportFailedAsync(int reason);
    IAsyncAction ReportFailedAsync(int reason, string failedReasonDescription);
  }
  public sealed class BarcodeScannerHideVideoPreviewRequest {
    IAsyncAction ReportFailedAsync(int reason);
    IAsyncAction ReportFailedAsync(int reason, string failedReasonDescription);
  }
  public sealed class BarcodeScannerProviderConnection : IClosable {
    IAsyncOperation<BarcodeScannerFrameReader> CreateFrameReaderAsync();
    IAsyncOperation<BarcodeScannerFrameReader> CreateFrameReaderAsync(BitmapPixelFormat preferredFormat);
    IAsyncOperation<BarcodeScannerFrameReader> CreateFrameReaderAsync(BitmapPixelFormat preferredFormat, BitmapSize preferredSize);
  }
  public sealed class BarcodeScannerSetActiveSymbologiesRequest {
    IAsyncAction ReportFailedAsync(int reason);
    IAsyncAction ReportFailedAsync(int reason, string failedReasonDescription);
  }
  public sealed class BarcodeScannerSetSymbologyAttributesRequest {
    IAsyncAction ReportFailedAsync(int reason);
    IAsyncAction ReportFailedAsync(int reason, string failedReasonDescription);
  }
  public sealed class BarcodeScannerStartSoftwareTriggerRequest {
    IAsyncAction ReportFailedAsync(int reason);
    IAsyncAction ReportFailedAsync(int reason, string failedReasonDescription);
  }
  public sealed class BarcodeScannerStopSoftwareTriggerRequest {
    IAsyncAction ReportFailedAsync(int reason);
    IAsyncAction ReportFailedAsync(int reason, string failedReasonDescription);
  }
  public sealed class BarcodeScannerVideoFrame : IClosable
}
namespace Windows.Devices.Sensors {
  public sealed class HingeAngleReading
  public sealed class HingeAngleSensor
  public sealed class HingeAngleSensorReadingChangedEventArgs
  public sealed class SimpleOrientationSensor {
    public static IAsyncOperation<SimpleOrientationSensor> FromIdAsync(string deviceId);
    public static string GetDeviceSelector();
  }
}
namespace Windows.Devices.SmartCards {
  public static class KnownSmartCardAppletIds
  public sealed class SmartCardAppletIdGroup {
    string Description { get; set; }
    IRandomAccessStreamReference Logo { get; set; }
    ValueSet Properties { get; }
    bool SecureUserAuthenticationRequired { get; set; }
  }
  public sealed class SmartCardAppletIdGroupRegistration {
    string SmartCardReaderId { get; }
    IAsyncAction SetPropertiesAsync(ValueSet props);
  }
}
namespace Windows.Devices.WiFi {
  public enum WiFiPhyKind {
    HE = 10,
  }
}
namespace Windows.Foundation {
  public static class GuidHelper
}
namespace Windows.Globalization {
  public static class CurrencyIdentifiers {
    public static string MRU { get; }
    public static string SSP { get; }
    public static string STN { get; }
    public static string VES { get; }
  }
}
namespace Windows.Graphics.Capture {
  public sealed class Direct3D11CaptureFramePool : IClosable {
    public static Direct3D11CaptureFramePool CreateFreeThreaded(IDirect3DDevice device, DirectXPixelFormat pixelFormat, int numberOfBuffers, SizeInt32 size);
  }
  public sealed class GraphicsCaptureItem {
    public static GraphicsCaptureItem CreateFromVisual(Visual visual);
  }
}
namespace Windows.Graphics.Display.Core {
  public enum HdmiDisplayHdrOption {
    DolbyVisionLowLatency = 3,
  }
  public sealed class HdmiDisplayMode {
    bool IsDolbyVisionLowLatencySupported { get; }
  }
}
namespace Windows.Graphics.Imaging {
  public sealed class BitmapDecoder : IBitmapFrame, IBitmapFrameWithSoftwareBitmap {
    public static Guid HeifDecoderId { get; }
    public static Guid WebpDecoderId { get; }
  }
  public sealed class BitmapEncoder {
    public static Guid HeifEncoderId { get; }
  }
}
namespace Windows.Management.Deployment {
  public enum DeploymentOptions : uint {
    ForceUpdateFromAnyVersion = (uint)262144,
  }
  public sealed class PackageManager {
    IAsyncOperationWithProgress<DeploymentResult, DeploymentProgress> DeprovisionPackageForAllUsersAsync(string packageFamilyName);
  }
  public enum RemovalOptions : uint {
    RemoveForAllUsers = (uint)524288,
  }
}
namespace Windows.Management.Policies {
  public static class NamedPolicy {
    public static IAsyncAction ClearAllPoliciesAsync();
    public static IAsyncAction ClearAllPoliciesAsync(string accountId);
    public static NamedPolicySetter TryCreatePolicySetter(string accountId);
    public static NamedPolicySetter TryCreatePolicySetterForUser(User user, string accountId);
  }
  public sealed class NamedPolicySetter
}
namespace Windows.Media.Audio {
  public sealed class CreateAudioDeviceInputNodeResult {
    HResult ExtendedError { get; }
  }
  public sealed class CreateAudioDeviceOutputNodeResult {
    HResult ExtendedError { get; }
  }
  public sealed class CreateAudioFileInputNodeResult {
    HResult ExtendedError { get; }
  }
  public sealed class CreateAudioFileOutputNodeResult {
    HResult ExtendedError { get; }
  }
  public sealed class CreateAudioGraphResult {
    HResult ExtendedError { get; }
  }
  public sealed class CreateMediaSourceAudioInputNodeResult {
    HResult ExtendedError { get; }
  }
  public enum MixedRealitySpatialAudioFormatPolicy
  public sealed class SetDefaultSpatialAudioFormatResult
  public enum SetDefaultSpatialAudioFormatStatus
  public sealed class SpatialAudioDeviceConfiguration
  public sealed class SpatialAudioFormatConfiguration
  public static class SpatialAudioFormatSubtype
}
namespace Windows.Media.Control {
  public sealed class CurrentSessionChangedEventArgs
  public sealed class GlobalSystemMediaTransportControlsSession
  public sealed class GlobalSystemMediaTransportControlsSessionManager
  public sealed class GlobalSystemMediaTransportControlsSessionMediaProperties
  public sealed class GlobalSystemMediaTransportControlsSessionPlaybackControls
  public sealed class GlobalSystemMediaTransportControlsSessionPlaybackInfo
  public enum GlobalSystemMediaTransportControlsSessionPlaybackStatus
  public sealed class GlobalSystemMediaTransportControlsSessionTimelineProperties
  public sealed class MediaPropertiesChangedEventArgs
  public sealed class PlaybackInfoChangedEventArgs
  public sealed class SessionsChangedEventArgs
  public sealed class TimelinePropertiesChangedEventArgs
}
namespace Windows.Media.Core {
  public sealed class MediaStreamSample {
    IDirect3DSurface Direct3D11Surface { get; }
    public static MediaStreamSample CreateFromDirect3D11Surface(IDirect3DSurface surface, TimeSpan timestamp);
  }
}
namespace Windows.Media.Devices {
  public enum AudioRoutingPolicy
  public static class SystemAudioDeviceRoutingManager
  public sealed class SystemAudioDeviceRoutingSession : IClosable
}
namespace Windows.Media.Devices.Core {
  public sealed class CameraIntrinsics {
    public CameraIntrinsics(Vector2 focalLength, Vector2 principalPoint, Vector3 radialDistortion, Vector2 tangentialDistortion, uint imageWidth, uint imageHeight);
  }
}
namespace Windows.Media.Import {
  public enum PhotoImportContentTypeFilter {
    ImagesAndVideosFromCameraRoll = 3,
  }
  public sealed class PhotoImportItem {
    string Path { get; }
  }
}
namespace Windows.Media.MediaProperties {
  public sealed class ImageEncodingProperties : IMediaEncodingProperties {
    public static ImageEncodingProperties CreateHeif();
  }
  public static class MediaEncodingSubtypes {
    public static string Heif { get; }
  }
}
namespace Windows.Media.Protection.PlayReady {
  public static class PlayReadyStatics {
    public static IReference<DateTime> HardwareDRMDisabledAtTime { get; }
    public static IReference<DateTime> HardwareDRMDisabledUntilTime { get; }
    public static void ResetHardwareDRMDisabled();
  }
}
namespace Windows.Media.Streaming.Adaptive {
  public enum AdaptiveMediaSourceResourceType {
    MediaSegmentIndex = 5,
  }
}
namespace Windows.Networking.BackgroundTransfer {
  public enum BackgroundTransferPriority {
    Low = 2,
  }
}
namespace Windows.Networking.Connectivity {
  public sealed class ConnectionProfile {
    bool CanDelete { get; }
    IAsyncOperation<ConnectionProfileDeleteStatus> TryDeleteAsync();
  }
  public enum ConnectionProfileDeleteStatus
}
namespace Windows.Networking.NetworkOperators {
  public enum ESimOperationStatus {
    CardGeneralFailure = 13,
    ConfirmationCodeMissing = 14,
    EidMismatch = 18,
    InvalidMatchingId = 15,
    NoCorrespondingRequest = 23,
    NoEligibleProfileForThisDevice = 16,
    OperationAborted = 17,
    OperationProhibitedByProfileClass = 21,
    ProfileNotAvailableForNewBinding = 19,
    ProfileNotPresent = 22,
    ProfileNotReleasedByOperator = 20,
  }
}
namespace Windows.Perception {
  public sealed class PerceptionTimestamp {
    TimeSpan SystemRelativeTargetTime { get; }
  }
  public static class PerceptionTimestampHelper {
    public static PerceptionTimestamp FromSystemRelativeTargetTime(TimeSpan targetTime);
  }
}
namespace Windows.Perception.Spatial {
  public sealed class SpatialAnchorExporter
  public enum SpatialAnchorExportPurpose
  public sealed class SpatialAnchorExportSufficiency
  public sealed class SpatialLocation {
    Vector3 AbsoluteAngularAccelerationAxisAngle { get; }
    Vector3 AbsoluteAngularVelocityAxisAngle { get; }
  }
}
namespace Windows.Perception.Spatial.Preview {
  public static class SpatialGraphInteropPreview
}
namespace Windows.Security.DataProtection {
  public enum UserDataAvailability
  public sealed class UserDataAvailabilityStateChangedEventArgs
  public sealed class UserDataBufferUnprotectResult
  public enum UserDataBufferUnprotectStatus
  public sealed class UserDataProtectionManager
  public sealed class UserDataStorageItemProtectionInfo
  public enum UserDataStorageItemProtectionStatus
}
namespace Windows.Services.Cortana {
  public sealed class CortanaActionableInsights
  public sealed class CortanaActionableInsightsOptions
}
namespace Windows.Services.Store {
  public sealed class StoreAppLicense {
    bool IsDiscLicense { get; }
  }
  public sealed class StoreContext {
    IAsyncOperation<StoreRateAndReviewResult> RequestRateAndReviewAppAsync();
    IAsyncOperation<IVectorView<StoreQueueItem>> SetInstallOrderForAssociatedStoreQueueItemsAsync(IIterable<StoreQueueItem> items);
  }
  public sealed class StoreQueueItem {
    IAsyncAction CancelInstallAsync();
    IAsyncAction PauseInstallAsync();
    IAsyncAction ResumeInstallAsync();
  }
  public sealed class StoreRateAndReviewResult
  public enum StoreRateAndReviewStatus
}
namespace Windows.Storage.Provider {
  public enum StorageProviderHydrationPolicyModifier : uint {
    AutoDehydrationAllowed = (uint)4,
  }
  public sealed class StorageProviderSyncRootInfo {
    Guid ProviderId { get; set; }
  }
}
namespace Windows.System {
  public sealed class AppUriHandlerHost
  public sealed class AppUriHandlerRegistration
  public sealed class AppUriHandlerRegistrationManager
  public static class Launcher {
    public static IAsyncOperation<bool> LaunchFolderPathAsync(string path);
    public static IAsyncOperation<bool> LaunchFolderPathAsync(string path, FolderLauncherOptions options);
    public static IAsyncOperation<bool> LaunchFolderPathForUserAsync(User user, string path);
    public static IAsyncOperation<bool> LaunchFolderPathForUserAsync(User user, string path, FolderLauncherOptions options);
  }
}
namespace Windows.System.Preview {
  public enum HingeState
  public sealed class TwoPanelHingedDevicePosturePreview
  public sealed class TwoPanelHingedDevicePosturePreviewReading
  public sealed class TwoPanelHingedDevicePosturePreviewReadingChangedEventArgs
}
namespace Windows.System.Profile {
  public enum SystemOutOfBoxExperienceState
  public static class SystemSetupInfo
  public static class WindowsIntegrityPolicy
}
namespace Windows.System.Profile.SystemManufacturers {
  public sealed class SystemSupportDeviceInfo
  public static class SystemSupportInfo {
    public static SystemSupportDeviceInfo LocalDeviceInfo { get; }
  }
}
namespace Windows.System.RemoteSystems {
  public sealed class RemoteSystem {
    IVectorView<RemoteSystemApp> Apps { get; }
  }
  public sealed class RemoteSystemApp
  public sealed class RemoteSystemAppRegistration
  public sealed class RemoteSystemConnectionInfo
  public sealed class RemoteSystemConnectionRequest {
    RemoteSystemApp RemoteSystemApp { get; }
    public static RemoteSystemConnectionRequest CreateForApp(RemoteSystemApp remoteSystemApp);
  }
  public sealed class RemoteSystemWebAccountFilter : IRemoteSystemFilter
}
namespace Windows.System.Update {
  public enum SystemUpdateAttentionRequiredReason
  public sealed class SystemUpdateItem
  public enum SystemUpdateItemState
  public sealed class SystemUpdateLastErrorInfo
  public static class SystemUpdateManager
  public enum SystemUpdateManagerState
  public enum SystemUpdateStartInstallAction
}
namespace Windows.System.UserProfile {
  public sealed class AssignedAccessSettings
}
namespace Windows.UI.Accessibility {
  public sealed class ScreenReaderPositionChangedEventArgs
  public sealed class ScreenReaderService
}
namespace Windows.UI.Composition {
  public enum AnimationPropertyAccessMode
  public sealed class AnimationPropertyInfo : CompositionObject
  public sealed class BooleanKeyFrameAnimation : KeyFrameAnimation
  public class CompositionAnimation : CompositionObject, ICompositionAnimationBase {
    void SetExpressionReferenceParameter(string parameterName, IAnimationObject source);
  }
  public enum CompositionBatchTypes : uint {
    AllAnimations = (uint)5,
    InfiniteAnimation = (uint)4,
  }
  public sealed class CompositionGeometricClip : CompositionClip
  public class CompositionGradientBrush : CompositionBrush {
    CompositionMappingMode MappingMode { get; set; }
  }
  public enum CompositionMappingMode
  public class CompositionObject : IAnimationObject, IClosable {
    void PopulatePropertyInfo(string propertyName, AnimationPropertyInfo propertyInfo);
    public static void StartAnimationGroupWithIAnimationObject(IAnimationObject target, ICompositionAnimationBase animation);
    public static void StartAnimationWithIAnimationObject(IAnimationObject target, string propertyName, CompositionAnimation animation);
  }
  public sealed class Compositor : IClosable {
    BooleanKeyFrameAnimation CreateBooleanKeyFrameAnimation();
    CompositionGeometricClip CreateGeometricClip();
    CompositionGeometricClip CreateGeometricClip(CompositionGeometry geometry);
    RedirectVisual CreateRedirectVisual();
    RedirectVisual CreateRedirectVisual(Visual source);
  }
  public interface IAnimationObject
  public sealed class RedirectVisual : ContainerVisual
}
namespace Windows.UI.Composition.Interactions {
  public sealed class InteractionSourceConfiguration : CompositionObject
  public enum InteractionSourceRedirectionMode
  public sealed class InteractionTracker : CompositionObject {
    bool IsInertiaFromImpulse { get; }
    int TryUpdatePosition(Vector3 value, InteractionTrackerClampingOption option);
    int TryUpdatePositionBy(Vector3 amount, InteractionTrackerClampingOption option);
  }
  public enum InteractionTrackerClampingOption
  public sealed class InteractionTrackerInertiaStateEnteredArgs {
    bool IsInertiaFromImpulse { get; }
  }
  public class VisualInteractionSource : CompositionObject, ICompositionInteractionSource {
    InteractionSourceConfiguration PointerWheelConfig { get; }
  }
}
namespace Windows.UI.Input.Inking.Preview {
  public sealed class PalmRejectionDelayZonePreview : IClosable
}
namespace Windows.UI.Notifications {
  public sealed class ScheduledToastNotificationShowingEventArgs
  public sealed class ToastNotifier {
    event TypedEventHandler<ToastNotifier, ScheduledToastNotificationShowingEventArgs> ScheduledToastNotificationShowing;
  }
}
namespace Windows.UI.Shell {
  public enum SecurityAppKind
  public sealed class SecurityAppManager
  public struct SecurityAppManagerContract
  public enum SecurityAppState
  public enum SecurityAppSubstatus
  public sealed class TaskbarManager {
    IAsyncOperation<bool> IsSecondaryTilePinnedAsync(string tileId);
    IAsyncOperation<bool> RequestPinSecondaryTileAsync(SecondaryTile secondaryTile);
    IAsyncOperation<bool> TryUnpinSecondaryTileAsync(string tileId);
  }
}
namespace Windows.UI.StartScreen {
  public sealed class StartScreenManager {
    IAsyncOperation<bool> ContainsSecondaryTileAsync(string tileId);
    IAsyncOperation<bool> TryRemoveSecondaryTileAsync(string tileId);
  }
}
namespace Windows.UI.Text {
  public sealed class RichEditTextDocument : ITextDocument {
    void ClearUndoRedoHistory();
  }
}
namespace Windows.UI.Text.Core {
  public sealed class CoreTextLayoutRequest {
    CoreTextLayoutBounds LayoutBoundsVisualPixels { get; }
  }
}
namespace Windows.UI.ViewManagement {
  public sealed class ApplicationViewTitleBar {
    void SetActiveIconStreamAsync(RandomAccessStreamReference activeIcon);
  }
  public enum ApplicationViewWindowingMode {
    CompactOverlay = 3,
    Maximized = 4,
  }
  public interface ISystemTray
  public interface ISystemTrayStatics
  public sealed class SystemTray : ISystemTray
}
namespace Windows.UI.ViewManagement.Core {
  public sealed class CoreInputView {
    bool TryHide();
    bool TryShow();
    bool TryShow(CoreInputViewKind type);
  }
  public enum CoreInputViewKind
}
namespace Windows.UI.WebUI {
  public sealed class BackgroundActivatedEventArgs : IBackgroundActivatedEventArgs
  public delegate void BackgroundActivatedEventHandler(object sender, IBackgroundActivatedEventArgs eventArgs);
  public sealed class NewWebUIViewCreatedEventArgs
  public static class WebUIApplication {
    public static event BackgroundActivatedEventHandler BackgroundActivated;
    public static event EventHandler<NewWebUIViewCreatedEventArgs> NewWebUIViewCreated;
  }
  public sealed class WebUIView : IWebViewControl, IWebViewControl2
}
namespace Windows.UI.Xaml {
  public class BrushTransition
  public class ColorPaletteResources : ResourceDictionary
  public class DataTemplate : FrameworkTemplate, IElementFactory {
    UIElement GetElement(ElementFactoryGetArgs args);
    void RecycleElement(ElementFactoryRecycleArgs args);
  }
  public sealed class DebugSettings {
    bool FailFastOnErrors { get; set; }
  }
  public sealed class EffectiveViewportChangedEventArgs
  public class ElementFactoryGetArgs
  public class ElementFactoryRecycleArgs
  public class FrameworkElement : UIElement {
    bool IsLoaded { get; }
    event TypedEventHandler<FrameworkElement, EffectiveViewportChangedEventArgs> EffectiveViewportChanged;
    void InvalidateViewport();
  }
  public interface IElementFactory
  public class ScalarTransition
  public class UIElement : DependencyObject, IAnimationObject {
    bool CanBeScrollAnchor { get; set; }
    public static DependencyProperty CanBeScrollAnchorProperty { get; }
    Vector3 CenterPoint { get; set; }
    ScalarTransition OpacityTransition { get; set; }
    float Rotation { get; set; }
    Vector3 RotationAxis { get; set; }
    ScalarTransition RotationTransition { get; set; }
    Vector3 Scale { get; set; }
    Vector3Transition ScaleTransition { get; set; }
    Shadow Shadow { get; set; }
    public static DependencyProperty ShadowProperty { get; }
    Matrix4x4 TransformMatrix { get; set; }
    Vector3 Translation { get; set; }
    Vector3Transition TranslationTransition { get; set; }
    void PopulatePropertyInfo(string propertyName, AnimationPropertyInfo propertyInfo);
    virtual void PopulatePropertyInfoOverride(string propertyName, AnimationPropertyInfo animationPropertyInfo);
    void StartAnimation(ICompositionAnimationBase animation);
    void StopAnimation(ICompositionAnimationBase animation);
  }
  public class UIElementWeakCollection : IIterable<UIElement>, IVector<UIElement>
  public class Vector3Transition
  public enum Vector3TransitionComponents : uint
}
namespace Windows.UI.Xaml.Automation {
  public sealed class AutomationElementIdentifiers {
    public static AutomationProperty IsDialogProperty { get; }
  }
  public sealed class AutomationProperties {
    public static DependencyProperty IsDialogProperty { get; }
    public static bool GetIsDialog(DependencyObject element);
    public static void SetIsDialog(DependencyObject element, bool value);
  }
}
namespace Windows.UI.Xaml.Automation.Peers {
  public class AppBarButtonAutomationPeer : ButtonAutomationPeer, IExpandCollapseProvider {
    ExpandCollapseState ExpandCollapseState { get; }
    void Collapse();
    void Expand();
  }
  public class AutomationPeer : DependencyObject {
    bool IsDialog();
    virtual bool IsDialogCore();
  }
  public class MenuBarAutomationPeer : FrameworkElementAutomationPeer
  public class MenuBarItemAutomationPeer : FrameworkElementAutomationPeer, IExpandCollapseProvider, IInvokeProvider
}
namespace Windows.UI.Xaml.Controls {
  public sealed class AnchorRequestedEventArgs
  public class AppBarElementContainer : ContentControl, ICommandBarElement, ICommandBarElement2
  public sealed class AutoSuggestBox : ItemsControl {
    object Description { get; set; }
    public static DependencyProperty DescriptionProperty { get; }
    ControlHeaderPlacement HeaderPlacement { get; set; }
    public static DependencyProperty HeaderPlacementProperty { get; }
  }
  public enum BackgroundSizing
  public sealed class Border : FrameworkElement {
    BackgroundSizing BackgroundSizing { get; set; }
    public static DependencyProperty BackgroundSizingProperty { get; }
    BrushTransition BackgroundTransition { get; set; }
  }
  public class CalendarDatePicker : Control {
    object Description { get; set; }
    public static DependencyProperty DescriptionProperty { get; }
    ControlHeaderPlacement HeaderPlacement { get; set; }
    public static DependencyProperty HeaderPlacementProperty { get; }
  }
  public class ComboBox : Selector {
    object Description { get; set; }
    public static DependencyProperty DescriptionProperty { get; }
    ControlHeaderPlacement HeaderPlacement { get; set; }
    public static DependencyProperty HeaderPlacementProperty { get; }
    bool IsEditable { get; set; }
    public static DependencyProperty IsEditableProperty { get; }
    string Text { get; set; }
    Style TextBoxStyle { get; set; }
    public static DependencyProperty TextBoxStyleProperty { get; }
    public static DependencyProperty TextProperty { get; }
    event TypedEventHandler<ComboBox, ComboBoxTextSubmittedEventArgs> TextSubmitted;
  }
  public sealed class ComboBoxTextSubmittedEventArgs
  public class CommandBarFlyout : FlyoutBase
  public class ContentPresenter : FrameworkElement {
    BackgroundSizing BackgroundSizing { get; set; }
    public static DependencyProperty BackgroundSizingProperty { get; }
    BrushTransition BackgroundTransition { get; set; }
  }
  public class Control : FrameworkElement {
    BackgroundSizing BackgroundSizing { get; set; }
    public static DependencyProperty BackgroundSizingProperty { get; }
    CornerRadius CornerRadius { get; set; }
    public static DependencyProperty CornerRadiusProperty { get; }
  }
  public enum ControlHeaderPlacement
  public class DataTemplateSelector : IElementFactory {
    UIElement GetElement(ElementFactoryGetArgs args);
    void RecycleElement(ElementFactoryRecycleArgs args);
  }
  public class DatePicker : Control {
    ControlHeaderPlacement HeaderPlacement { get; set; }
    public static DependencyProperty HeaderPlacementProperty { get; }
    IReference<DateTime> SelectedDate { get; set; }
    public static DependencyProperty SelectedDateProperty { get; }
    event TypedEventHandler<DatePicker, DatePickerSelectedValueChangedEventArgs> SelectedDateChanged;
  }
  public sealed class DatePickerSelectedValueChangedEventArgs
  public class DropDownButton : Button
  public class DropDownButtonAutomationPeer : ButtonAutomationPeer, IExpandCollapseProvider
  public class Frame : ContentControl, INavigate {
    bool IsNavigationStackEnabled { get; set; }
    public static DependencyProperty IsNavigationStackEnabledProperty { get; }
    bool NavigateToType(TypeName sourcePageType, object parameter, FrameNavigationOptions navigationOptions);
  }
  public class Grid : Panel {
    BackgroundSizing BackgroundSizing { get; set; }
    public static DependencyProperty BackgroundSizingProperty { get; }
  }
  public class IconSourceElement : IconElement
  public sealed class InputPropertyAttribute : Attribute
  public interface IScrollAnchorProvider
  public class MenuBar : Control
  public class MenuBarItem : Control
  public class MenuBarItemFlyout : MenuFlyout
  public class NavigationView : ContentControl {
    UIElement ContentOverlay { get; set; }
    public static DependencyProperty ContentOverlayProperty { get; }
    bool IsPaneVisible { get; set; }
    public static DependencyProperty IsPaneVisibleProperty { get; }
    NavigationViewOverflowLabelMode OverflowLabelMode { get; set; }
    public static DependencyProperty OverflowLabelModeProperty { get; }
    UIElement PaneCustomContent { get; set; }
    public static DependencyProperty PaneCustomContentProperty { get; }
    NavigationViewPaneDisplayMode PaneDisplayMode { get; set; }
    public static DependencyProperty PaneDisplayModeProperty { get; }
    UIElement PaneHeader { get; set; }
    public static DependencyProperty PaneHeaderProperty { get; }
    NavigationViewSelectionFollowsFocus SelectionFollowsFocus { get; set; }
    public static DependencyProperty SelectionFollowsFocusProperty { get; }
    NavigationViewShoulderNavigationEnabled ShoulderNavigationEnabled { get; set; }
    public static DependencyProperty ShoulderNavigationEnabledProperty { get; }
    NavigationViewTemplateSettings TemplateSettings { get; }
    public static DependencyProperty TemplateSettingsProperty { get; }
  }
  public class NavigationViewItem : NavigationViewItemBase {
    bool SelectsOnInvoked { get; set; }
    public static DependencyProperty SelectsOnInvokedProperty { get; }
  }
  public sealed class NavigationViewItemInvokedEventArgs {
    NavigationViewItemBase InvokedItemContainer { get; }
    NavigationTransitionInfo RecommendedNavigationTransitionInfo { get; }
  }
  public enum NavigationViewOverflowLabelMode
  public enum NavigationViewPaneDisplayMode
  public sealed class NavigationViewSelectionChangedEventArgs {
    NavigationTransitionInfo RecommendedNavigationTransitionInfo { get; }
    NavigationViewItemBase SelectedItemContainer { get; }
  }
  public enum NavigationViewSelectionFollowsFocus
  public enum NavigationViewShoulderNavigationEnabled
  public class NavigationViewTemplateSettings : DependencyObject
  public class Panel : FrameworkElement {
    BrushTransition BackgroundTransition { get; set; }
  }
  public sealed class PasswordBox : Control {
    bool CanPasteClipboardContent { get; }
    public static DependencyProperty CanPasteClipboardContentProperty { get; }
    object Description { get; set; }
    public static DependencyProperty DescriptionProperty { get; }
    ControlHeaderPlacement HeaderPlacement { get; set; }
    public static DependencyProperty HeaderPlacementProperty { get; }
    FlyoutBase SelectionFlyout { get; set; }
    public static DependencyProperty SelectionFlyoutProperty { get; }
    void PasteFromClipboard();
  }
  public class RelativePanel : Panel {
    BackgroundSizing BackgroundSizing { get; set; }
    public static DependencyProperty BackgroundSizingProperty { get; }
  }
  public class RichEditBox : Control {
    object Description { get; set; }
    public static DependencyProperty DescriptionProperty { get; }
    ControlHeaderPlacement HeaderPlacement { get; set; }
    public static DependencyProperty HeaderPlacementProperty { get; }
    FlyoutBase ProofingMenuFlyout { get; }
    public static DependencyProperty ProofingMenuFlyoutProperty { get; }
    FlyoutBase SelectionFlyout { get; set; }
    public static DependencyProperty SelectionFlyoutProperty { get; }
    RichEditTextDocument TextDocument { get; }
    event TypedEventHandler<RichEditBox, RichEditBoxSelectionChangingEventArgs> SelectionChanging;
  }
  public sealed class RichEditBoxSelectionChangingEventArgs
  public sealed class RichTextBlock : FrameworkElement {
    FlyoutBase SelectionFlyout { get; set; }
    public static DependencyProperty SelectionFlyoutProperty { get; }
    void CopySelectionToClipboard();
  }
  public sealed class ScrollContentPresenter : ContentPresenter {
    bool CanContentRenderOutsideBounds { get; set; }
    public static DependencyProperty CanContentRenderOutsideBoundsProperty { get; }
    bool SizesContentToTemplatedParent { get; set; }
    public static DependencyProperty SizesContentToTemplatedParentProperty { get; }
  }
  public sealed class ScrollViewer : ContentControl, IScrollAnchorProvider {
    bool CanContentRenderOutsideBounds { get; set; }
    public static DependencyProperty CanContentRenderOutsideBoundsProperty { get; }
    UIElement CurrentAnchor { get; }
    double HorizontalAnchorRatio { get; set; }
    public static DependencyProperty HorizontalAnchorRatioProperty { get; }
    bool ReduceViewportForCoreInputViewOcclusions { get; set; }
    public static DependencyProperty ReduceViewportForCoreInputViewOcclusionsProperty { get; }
    double VerticalAnchorRatio { get; set; }
    public static DependencyProperty VerticalAnchorRatioProperty { get; }
    event TypedEventHandler<ScrollViewer, AnchorRequestedEventArgs> AnchorRequested;
    public static bool GetCanContentRenderOutsideBounds(DependencyObject element);
    void RegisterAnchorCandidate(UIElement element);
    public static void SetCanContentRenderOutsideBounds(DependencyObject element, bool canContentRenderOutsideBounds);
    void UnregisterAnchorCandidate(UIElement element);
  }
  public class Slider : RangeBase {
    ControlHeaderPlacement HeaderPlacement { get; set; }
    public static DependencyProperty HeaderPlacementProperty { get; }
  }
  public class SplitButton : ContentControl
  public class SplitButtonAutomationPeer : FrameworkElementAutomationPeer, IExpandCollapseProvider, IInvokeProvider
  public sealed class SplitButtonClickEventArgs
  public class StackPanel : Panel, IInsertionPanel, IScrollSnapPointsInfo {
    BackgroundSizing BackgroundSizing { get; set; }
    public static DependencyProperty BackgroundSizingProperty { get; }
  }
  public sealed class TextBlock : FrameworkElement {
    FlyoutBase SelectionFlyout { get; set; }
    public static DependencyProperty SelectionFlyoutProperty { get; }
    void CopySelectionToClipboard();
  }
  public class TextBox : Control {
    bool CanPasteClipboardContent { get; }
    public static DependencyProperty CanPasteClipboardContentProperty { get; }
    bool CanRedo { get; }
    public static DependencyProperty CanRedoProperty { get; }
    bool CanUndo { get; }
    public static DependencyProperty CanUndoProperty { get; }
    object Description { get; set; }
    public static DependencyProperty DescriptionProperty { get; }
    ControlHeaderPlacement HeaderPlacement { get; set; }
    public static DependencyProperty HeaderPlacementProperty { get; }
    FlyoutBase ProofingMenuFlyout { get; }
    public static DependencyProperty ProofingMenuFlyoutProperty { get; }
    FlyoutBase SelectionFlyout { get; set; }
    public static DependencyProperty SelectionFlyoutProperty { get; }
    event TypedEventHandler<TextBox, TextBoxSelectionChangingEventArgs> SelectionChanging;
    void ClearUndoRedoHistory();
    void CopySelectionToClipboard();
    void CutSelectionToClipboard();
    void PasteFromClipboard();
    void Redo();
    void Undo();
  }
  public sealed class TextBoxSelectionChangingEventArgs
  public class TextCommandBarFlyout : CommandBarFlyout
  public class TimePicker : Control {
    ControlHeaderPlacement HeaderPlacement { get; set; }
    public static DependencyProperty HeaderPlacementProperty { get; }
    IReference<TimeSpan> SelectedTime { get; set; }
    public static DependencyProperty SelectedTimeProperty { get; }
    event TypedEventHandler<TimePicker, TimePickerSelectedValueChangedEventArgs> SelectedTimeChanged;
  }
  public sealed class TimePickerSelectedValueChangedEventArgs
  public class ToggleSplitButton : SplitButton
  public class ToggleSplitButtonAutomationPeer : FrameworkElementAutomationPeer, IExpandCollapseProvider, IToggleProvider
  public sealed class ToggleSplitButtonIsCheckedChangedEventArgs
  public sealed class ToggleSwitch : Control {
    ControlHeaderPlacement HeaderPlacement { get; set; }
    public static DependencyProperty HeaderPlacementProperty { get; }
  }
  public class ToolTip : ContentControl {
    IReference<Rect> PlacementRect { get; set; }
    public static DependencyProperty PlacementRectProperty { get; }
  }
  public class TreeView : Control {
    bool CanDragItems { get; set; }
    public static DependencyProperty CanDragItemsProperty { get; }
    bool CanReorderItems { get; set; }
    public static DependencyProperty CanReorderItemsProperty { get; }
    Style ItemContainerStyle { get; set; }
    public static DependencyProperty ItemContainerStyleProperty { get; }
    StyleSelector ItemContainerStyleSelector { get; set; }
    public static DependencyProperty ItemContainerStyleSelectorProperty { get; }
    TransitionCollection ItemContainerTransitions { get; set; }
    public static DependencyProperty ItemContainerTransitionsProperty { get; }
    object ItemsSource { get; set; }
    public static DependencyProperty ItemsSourceProperty { get; }
    DataTemplate ItemTemplate { get; set; }
    public static DependencyProperty ItemTemplateProperty { get; }
    DataTemplateSelector ItemTemplateSelector { get; set; }
    public static DependencyProperty ItemTemplateSelectorProperty { get; }
    event TypedEventHandler<TreeView, TreeViewDragItemsCompletedEventArgs> DragItemsCompleted;
    event TypedEventHandler<TreeView, TreeViewDragItemsStartingEventArgs> DragItemsStarting;
    DependencyObject ContainerFromItem(object item);
    DependencyObject ContainerFromNode(TreeViewNode node);
    object ItemFromContainer(DependencyObject container);
    TreeViewNode NodeFromContainer(DependencyObject container);
  }
  public sealed class TreeViewCollapsedEventArgs {
    object Item { get; }
  }
  public sealed class TreeViewDragItemsCompletedEventArgs
  public sealed class TreeViewDragItemsStartingEventArgs
  public sealed class TreeViewExpandingEventArgs {
    object Item { get; }
  }
  public class TreeViewItem : ListViewItem {
    bool HasUnrealizedChildren { get; set; }
    public static DependencyProperty HasUnrealizedChildrenProperty { get; }
    object ItemsSource { get; set; }
    public static DependencyProperty ItemsSourceProperty { get; }
  }
  public class TwoPaneView : Control
  public enum TwoPaneViewMode
  public enum TwoPaneViewPriority
  public enum TwoPaneViewTallModeConfiguration
  public enum TwoPaneViewWideModeConfiguration
  public sealed class WebView : FrameworkElement {
    event TypedEventHandler<WebView, WebViewWebResourceRequestedEventArgs> WebResourceRequested;
  }
  public sealed class WebViewWebResourceRequestedEventArgs
}
namespace Windows.UI.Xaml.Controls.Maps {
  public enum MapTileAnimationState
  public sealed class MapTileBitmapRequestedEventArgs {
    int FrameIndex { get; }
  }
  public class MapTileSource : DependencyObject {
    MapTileAnimationState AnimationState { get; }
    public static DependencyProperty AnimationStateProperty { get; }
    bool AutoPlay { get; set; }
    public static DependencyProperty AutoPlayProperty { get; }
    int FrameCount { get; set; }
    public static DependencyProperty FrameCountProperty { get; }
    TimeSpan FrameDuration { get; set; }
    public static DependencyProperty FrameDurationProperty { get; }
    void Pause();
    void Play();
    void Stop();
  }
  public sealed class MapTileUriRequestedEventArgs {
    int FrameIndex { get; }
  }
}
namespace Windows.UI.Xaml.Controls.Primitives {
  public class CommandBarFlyoutCommandBar : CommandBar
  public sealed class CommandBarFlyoutCommandBarTemplateSettings : DependencyObject
  public class FlyoutBase : DependencyObject {
    bool AreOpenCloseAnimationsEnabled { get; set; }
    public static DependencyProperty AreOpenCloseAnimationsEnabledProperty { get; }
    bool InputDevicePrefersPrimaryCommands { get; }
    public static DependencyProperty InputDevicePrefersPrimaryCommandsProperty { get; }
    bool IsOpen { get; }
    public static DependencyProperty IsOpenProperty { get; }
    FlyoutShowMode ShowMode { get; set; }
    public static DependencyProperty ShowModeProperty { get; }
    public static DependencyProperty TargetProperty { get; }
    void ShowAt(DependencyObject placementTarget, FlyoutShowOptions showOptions);
  }
  public enum FlyoutPlacementMode {
    Auto = 13,
    BottomEdgeAlignedLeft = 7,
    BottomEdgeAlignedRight = 8,
    LeftEdgeAlignedBottom = 10,
    LeftEdgeAlignedTop = 9,
    RightEdgeAlignedBottom = 12,
    RightEdgeAlignedTop = 11,
    TopEdgeAlignedLeft = 5,
    TopEdgeAlignedRight = 6,
  }
  public enum FlyoutShowMode
  public class FlyoutShowOptions
  public class NavigationViewItemPresenter : ContentControl
}
namespace Windows.UI.Xaml.Core.Direct {
  public interface IXamlDirectObject
  public sealed class XamlDirect
  public enum XamlEventIndex
  public enum XamlPropertyIndex
  public enum XamlTypeIndex
}
namespace Windows.UI.Xaml.Hosting {
  public class DesktopWindowXamlSource : IClosable
  public sealed class DesktopWindowXamlSourceGotFocusEventArgs
  public sealed class DesktopWindowXamlSourceTakeFocusRequestedEventArgs
  public sealed class WindowsXamlManager : IClosable
  public enum XamlSourceFocusNavigationReason
  public sealed class XamlSourceFocusNavigationRequest
  public sealed class XamlSourceFocusNavigationResult
}
namespace Windows.UI.Xaml.Input {
  public sealed class CanExecuteRequestedEventArgs
  public sealed class ExecuteRequestedEventArgs
  public sealed class FocusManager {
    public static event EventHandler<GettingFocusEventArgs> GettingFocus;
    public static event EventHandler<FocusManagerGotFocusEventArgs> GotFocus;
    public static event EventHandler<LosingFocusEventArgs> LosingFocus;
    public static event EventHandler<FocusManagerLostFocusEventArgs> LostFocus;
  }
  public sealed class FocusManagerGotFocusEventArgs
  public sealed class FocusManagerLostFocusEventArgs
  public sealed class GettingFocusEventArgs : RoutedEventArgs {
    Guid CorrelationId { get; }
  }
  public sealed class LosingFocusEventArgs : RoutedEventArgs {
    Guid CorrelationId { get; }
  }
  public class StandardUICommand : XamlUICommand
  public enum StandardUICommandKind
  public class XamlUICommand : DependencyObject, ICommand
}
namespace Windows.UI.Xaml.Markup {
  public sealed class FullXamlMetadataProviderAttribute : Attribute
  public interface IXamlBindScopeDiagnostics
  public interface IXamlType2 : IXamlType
}
namespace Windows.UI.Xaml.Media {
  public class Brush : DependencyObject, IAnimationObject {
    void PopulatePropertyInfo(string propertyName, AnimationPropertyInfo propertyInfo);
    virtual void PopulatePropertyInfoOverride(string propertyName, AnimationPropertyInfo animationPropertyInfo);
  }
  public class Shadow : DependencyObject
  public class ThemeShadow : Shadow
}
namespace Windows.UI.Xaml.Media.Animation {
  public class BasicConnectedAnimationConfiguration : ConnectedAnimationConfiguration
  public sealed class ConnectedAnimation {
    ConnectedAnimationConfiguration Configuration { get; set; }
  }
  public class ConnectedAnimationConfiguration
  public class DirectConnectedAnimationConfiguration : ConnectedAnimationConfiguration
  public class GravityConnectedAnimationConfiguration : ConnectedAnimationConfiguration
  public enum SlideNavigationTransitionEffect
  public sealed class SlideNavigationTransitionInfo : NavigationTransitionInfo {
    SlideNavigationTransitionEffect Effect { get; set; }
    public static DependencyProperty EffectProperty { get; }
  }
}
namespace Windows.UI.Xaml.Navigation {
  public class FrameNavigationOptions
}
namespace Windows.Web.UI {
  public interface IWebViewControl2
  public sealed class WebViewControlNewWindowRequestedEventArgs {
    IWebViewControl TargetWebViewControl { get; set; }
    Deferral GetDeferral();
  }
  public enum WebViewControlPermissionType {
    ImmersiveView = 6,
  }
}
namespace Windows.Web.UI.Interop {
  public sealed class WebViewControl : IWebViewControl, IWebViewControl2 {
    event TypedEventHandler<WebViewControl, object> GotFocus;
    event TypedEventHandler<WebViewControl, object> LostFocus;
    void AddPreLoadedScript(string script);
  }
  public sealed class WebViewControlProcess {
    string Partition { get; }
    string UserAgent { get; }
  }
  public sealed class WebViewControlProcessOptions {
    string Partition { get; set; }
    string UserAgent { get; set; }
  }
}
 

Removals

namespace Windows.Gaming.UI {
  public sealed class GameMonitor
  public enum GameMonitoringPermission
}

The post Windows 10 SDK Preview Build 17713 available now! appeared first on Windows Developer Blog.

Protecting our users from the ESLint NPM package breach

$
0
0
On the 12th of July 2018, malicious code was detected in two popular open-source NPM packages, eslint-scope (version 3.7.2) and eslint-config-eslint (version 5.0.2). As a result, developers who downloaded and installed these packages may have had credentials stored in their .npmrc file compromised. This may include credentials required to access package feeds hosted in Visual Studio Team Services. ... Read More

Dashboard Updates in Public Preview

$
0
0
We’re excited to announce updates to the new dashboard experience. This new experience lets you: Easily switch between your team’s dashboards Fine tune team permissions on individual dashboards Find and favorite the dashboards you need It is now available in public preview for VSTS customers and coming to TFS in the next major version. Get... Read More

Foretell and prevent downtime with predictive maintenance

$
0
0

The story of predictive maintenance (PdM) starts back in the 1990s. Technologies began to arrive that sense the world in new ways: ultrasound, infrared, thermal, vibration, to name a few. However, until recently the technology has not been available to make predictive maintenance a reality. But now, with advances in cloud storage, machine learning, edge computing, and the Internet of Things — predictive maintenance looms as the next step for the manufacturing industry.

What is predictive maintenance?

There are three strategies for machine maintenance:

  • Reactive — the “don’t fix what isn’t broken” approach. This means you extract the maximum possible lifetime from a machine. However, costs balloon with unexpected downtime and collateral damage from failures.
  • Preventative — service on a fixed schedule based on the regularity of previous failures. You maximize up-time by fixing machines before they fail. The downside is that components may have life left, and there is still a chance that they will fail before the scheduled maintenance.
  • Predictive — where we use data about previous breakdowns to model when failures are about to occur, and intervene just as sensors detect the same conditions. Until recently this has not been a realistic option, as modeling did not exist, and real-time processing power was too expensive. But Azure solves that problem.

The figure below shows how the three strategies differ.

image

It is clear that predictive maintenance is superior by far to the other methods. It allows you to maximize uptime while getting the most value out of your machinery. Also, using machine learning, the model can continuously be refined; over time, you will experience fewer failures.

How Azure can help

To use machine learning for a PdM solution, there are three requirements: a machine learning model, data used to train the model, and a data ingestion mechanism to gather the training data. Once you have an ingestion point, you need to collect data from a normally operating machine until the machine fails. You then can then characterize the received data as normal, failing, and failed. This data is used to train the model, which means the model is successively adjusted until it can predict failure with some certainty.

To accurately assess the state of a system which leads to failure, as much data as possible needs to be collected. In other words, start collecting your data now. The more comprehensive the data used to train the model, the more accurate the analysis will be.

Azure options for data ingestion

Azure offers these options for data ingestion: Event Hubs, Azure IoT Hub, and Kafka on HDInsight. (For more information, see Choosing a real-time message ingestion technology in Azure.) Ingesting data from distributed systems is often not a sustainable approach. As more systems talk to each other, the system builds a Ο(n2) complexity. A much better architecture is to have all your systems talking to a central hub. This can be implemented efficiently using the Azure IoT Hub. All your systems can speak to the IoT Hub, and the hub feeds the data into Azure. Loading the data into Azure Data Factory is a great option, as it can move and transform data as part of an automated pipeline.
 
Once the data has been ingested, it is then used to train your machine learning model. Azure options for doing this include Azure Machine Learning Studio, Azure Databricks, Data Science Virtual Machine, and Azure Batch AI — to name a few. The choice depends on the complexity of your problem, the experience of your team, and the size of the data to be processed.

Once the model has been trained and is ready for use, the results can be presented. This means building a mechanism to predict future failures and generating notifications for action. The workflow looks something like this:

image In a working system, the results are presented to the maintenance team in real-time, along with recommendations for action. The team can decide the best course of action.

Overall, Azure can provide your predictive maintenance solution with the following:

  • Scalability, as storage and processing power, is easily scalable.
  • Availability and resilience, through the fact that you can provision resources as needed.
  • Management, through a variety of options including ARM, PowerShell, and management APIs.
  • Security, via IoT Hub keys, encryption and much more.
  • Cost-effectiveness, as resources can be provisioned and discarded, as necessary.

Read the Predictive Maintenance overview for more detailed information about creating your predictive maintenance solution on Azure.

Viewing all 10804 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>