Uestc95的空间站 - 火星就是地球的未来?...

如果你有一个苹果,我有一个苹果,我们交换以后还是一人一个苹果,但如果你有一种思想,我有一种思想,我们交换以后,每个人便拥有了两种思想。

随笔 - 129, 评论 - 1290, 引用 - 44

导航

关于


MSN:
uestc95 at GMail.com

Mail: 
uestc95 at GMail.com

另一个博客
博思 - 汇聚思想间的碰撞

欢迎交流!

标签

每月存档

最新留言

广告

【第1页/共2页,19条】
首页
前页
1

Microsoft "Indigo" Frequently Asked Questions

Microsoft "Indigo" Frequently Asked Questions

Microsoft Corporation
October 2003

Applies to:
   Microsoft® "Indigo"
   Microsoft .NET Common Language Runtime
   Microsoft Windows® XP
   Microsoft Windows Server 2003

Summary: Find out the answers to some common questions about Microsoft "Indigo," including what it is, the features and benefits of it, and more.

Contents

The Basics
Migration and Interoperability
Release Plans: Schedules, Vehicles, Features, Quality

The Basics

What is Microsoft Indigo?

Indigo is a set of .NET technologies for building and running connected systems.

Indigo is a new breed of communications infrastructure built around the Web services architecture. Advanced Web services support in Indigo provides secure, reliable, and transacted messaging along with interoperability. Indigo's service-oriented programming model is built on the .NET Framework and simplifies development of connected systems. Indigo unifies a broad array of distributed systems capabilities in a composable and extensible architecture, spanning transports, security systems, messaging patterns, encodings, network topologies, and hosting models. Indigo will be an integral capability of Windows "Longhorn" and will also be supported on Windows XP and Windows Server 2003.

Microsoft has also done significant work to integrate Indigo with existing Microsoft technologies for building distributed systems including COM+, MSMQ, and ASP.NET Web services. Applications built with those existing technologies can now be exposed as services without modification to the application.  This infrastructure-level solution greatly assists developers in exposing existing applications as services.  Indigo also provides simple and mechanical mechanisms to migrate applications that use .NET Remoting, ASP.NET Web services, and .NET Enterprise Services to natively use the Indigo programming model.

How will Indigo change the way developers build applications?

Indigo is built from the ground up on the principle of service-orientation. Service-orientation differs from object-orientation primarily in how it defines the term "system." Object-oriented development views a system as a set of class libraries communicating directly in a tightly coupled fashion over a network. Service-oriented development views a system as a set of autonomous services that can easily communicate across both private and public networks.

What is "service-orientation"?

Service-orientation describes a new method for architecting connected systems, and is based upon three simple concepts:

  • A service is a program that other programs interact with using messages.
  • A client is a program that makes services usable to people.
  • A connected system is a collection of inter-connected services and clients.

Instead of integrating disparate applications via direct object activations as in distributed object systems, applications expose a set of "services" that other applications can utilize.  With service-orientation, applications running on different platforms and programmed using different development platforms can fully interoperate. In addition, application developers and system integrators do not require specific knowledge of the underlying object models, type systems and protocols of the software being integrated. Instead, all applications expose their services using standards-based protocols and policy definitions that can be dynamically acquired.  This 'uncoupling' of the applications that comprise connected systems enables simpler integration, more flexibility in adapting systems to changes over time, and also enables more reliable operations.

Why is service-orientation important?

Service-orientation, as opposed to distributed object architectures such as J2EE, more closely reflect real-world processes and relationships. Hence, service-orientation represents a much more natural way to model and build software that solves real-world business processing needs. For example, distributed object systems are tightly coupled, and modifying one part of a distributed object system will break other parts of the system unless these other parts are modified as well and then the changes are deployed in unison. But such an approach is not practical, especially when different parts of the system are developed and operated by different organizations, such as in B2B scenarios. In addition, typically distributed object systems require that different parts of the system be created using the same underlying development language and object architecture—again an unrealistic requirement. Service-oriented systems, however, are loosely coupled and designed to support change. Services can be programmed in any language using any development tool, and can run on different platforms yet still be easily integrated.

Does service-oriented development conflict with object-oriented development?

No. Service-oriented development complements OO development. OO continues to fulfill an important role in the internal design of services. Service-orientation deals with how to interconnect services to build connected systems. To use an architecture analogy, OO addresses the architecture within a single building (a "service"), while service-orientation addresses the issues around city planning (a "system").

What is hard about service-oriented development today, and how specifically will Indigo make service-oriented development easier?

Today, it is difficult to model and build service-oriented systems due to the lack of a service-oriented programming model and the required communications infrastructure for interconnecting services within and across organizational and platform boundaries. Web services have provided a great start based upon standards such as SOAP v1.1, XML, and WSDL, and .NET today provides the best development platform for building Web services. But as the services get more complex and are used to solve bigger business problems, it is clear that both the Web service standards and the programming model needs to continue to evolve. For example, robust connected systems need transactions, reliable messaging, and integrated security—features that Indigo fully incorporates within its communication infrastructure. In addition, developers need a simple programming model for building services and clients in a productive way, another critical requirement Indigo addresses.

How is Indigo different than J2EE for building service-oriented applications?

J2EE is deeply rooted in a classic distributed object architecture (based on EJBs)—an architecture that has proven to be complex and brittle for Internet and enterprise-scale business integration scenarios. Service-oriented development is a fundamentally better way for building connected systems. But with its distributed object architecture, J2EE is not designed for service-oriented development. Indigo builds on .NET's leading-edge support for Web services, and provides a complete service-oriented programming model and integrated communications infrastructure for building and running connected systems in a productive and reliable way.

Migration and Interoperability

How will Indigo be made available to developers?

Indigo is part of Windows Longhorn and is available to every Longhorn application. Indigo will also be available as a separate download for Windows XP and Windows Server 2003.

How hard will it be to migrate to Indigo?

Indigo is designed to enable smooth migration of existing applications, and allows organizations the flexibility to migrate applications if and when they choose.  All Indigo features are exposed via .NET managed APIs, and Indigo applications are built using the .NET framework. Indigo extends and enhances the .NET infrastructure technologies including ASP.NET Web services/ASMX, Web Service Enhancements (WSE), .NET Remoting, System.Messaging, and Enterprise services. From a scenario perspective, Indigo will also provide a superset of the functionality provided by MSMQ and COM+. In many cases the Indigo infrastructure can upgrade these features with few changes to existing .NET applications. In addition, new Indigo applications will interoperate with applications that use current .NET Framework 1.1 technologies, MSMQ, and COM+ via wire-level interoperability. This means that existing applications and Web services can be upgraded incrementally with new Indigo features or integrated "as-is" with no changes. Finally, all existing technologies will remain in place as fully supported .NET technologies. This strategy ensures that customer investments in existing Microsoft technologies are fully preserved.

How much of a learning curve will developers experience in adopting Indigo as a way to build connected systems?

Developers will be able to quickly and easily take advantage of the Indigo programming model because it is designed to fit naturally with existing .NET programming concepts while dramatically simplifying service-oriented development. Indigo is based on the .NET CLR and the Indigo programming model is accessible via any .NET language (C#, VB.NET, J#, COBOL, etc.). In addition, the Indigo communications infrastructure dramatically reduces the amount of manual development that is today required to build transacted, reliable, and secure service-oriented applications.

For developers building applications today, what should they do to insure an easy transition to exploit Indigo when it ships?

Developers should do the following to build applications today that can easily transition to the Indigo communications infrastructure and programming constructs in the future:

  1. Build services using the ASP.NET (ASMX) Web service model.
    • Enhance your ASMX service with WSE if you need the WSE feature set.
  2. Use object technology in a service's implementation.
  3. Use System.Messaging if you need the reliable messaging and queuing features in MSMQ.

Specific Caveats:

  1. ASMX
    • Avoid or abstract using low-level extensibility such as the HTTP Context object.
  2. .NET Remoting
    • Avoid or abstract using low-level extensibility such as .NET Remoting sinks and channels.
  3. Enterprise services
    • Avoid passing object references inside of ES.
  4. Do not use COM+ APIs—use System.EnterpriseServices.
  5. Do not use MSMQ APIs—use System.Messaging.

Will Indigo replace ASP.NET Web services? How will I convert my existing ASMX-based applications?

Indigo will not replace ASP.NET Web services. Existing ASP.NET Web services will interoperate with services and clients built on Indigo. For developers who want to migrate ASP.NET Web services to Indigo, the migration will be simple and straightforward, with the caveats noted above.

Will Indigo replace Enterprise services? How will I convert my existing ES applications?

Indigo will not replace Enterprise services (such as transactions). Existing ES applications will interoperate with services and clients built on Indigo. For developers who want to migrate ES applications to Indigo, the migration will be simple and straightforward, with the caveats noted above.

Will Indigo replace COM+?

COM+ is a feature of Windows and will continue to be supported. Existing COM+ components can be integrated within Indigo applications via the existing .NET/COM+ interoperability, or COM+ components can be migrated incrementally to .NET including the new Indigo features. In addition, the Longhorn version of COM+ will be upgraded to support Indigo services.

Will Indigo replace MSMQ? How easily will MSMQ applications transition to take advantage of the Indigo message infrastructure?

Indigo will not replace MSMQ. MSMQ will continue to be supported as a part of Windows, and the Longhorn version of MSMQ will be upgraded to fully support Indigo services such that MSMQ applications can communicate with Indigo services and vice versa.

Will Indigo replace WSE? How easily will WSE applications transition to take advantage of the Indigo infrastructure?

WSE is a vehicle for early adopters to take advantage of leading edge Service Oriented technology, such as the latest standards for transactions and security for Web services. Indigo provides a better, more complete communications infrastructure and programming model for building service-oriented programs than WSE. While Indigo applications will interoperate with applications built on the last version of WSE, WSE should only be used when gaining a first mover advantage is more important than having code portability to the next major revision of the platform. Migrating WSE code to Indigo may require a non-trivial development investment.

How does Indigo relate to SOAP? Will Indigo applications interoperate with Web services built in J2EE, or built with other technologies?

Indigo includes support for the latest Web services standards, including SOAP. Applications built with Indigo will interoperate with any application built on infrastructure that also conforms to these standards. This includes IBM WebSphere, BEA WebLogic and other Web services built in J2EE that are SOAP-standards compliant. Microsoft is deeply committed to platform interoperability, and an active member of the key standards organizations defining the latest standards for Web services including SOAP and XML.

Release Plans: Schedules, Vehicles, Features, Quality

When will Indigo ship?

We have not announced a release date for Indigo. A developer preview version is being made available to developers attending the Professional Developers Conference in the fall of 2003.

How does Indigo relate to Longhorn?

Indigo is a major feature of the Longhorn version of Windows. Indigo will be available to all Longhorn applications.

When can developers start building Indigo applications?

Developers can start learning about Indigo and building working prototypes using the preview release provided at the Professional Developers Conference.

Will Indigo be made available only through Longhorn?

Indigo will also be provided as a separate download for Windows XP and Windows Server 2003.

How does Indigo relate to "Whidbey"?

"Whidbey" is the code name of the next release of the .NET Framework and Visual Studio® .NET development tools, incorporating new features such as support for 64-bit platforms. "Whidbey" is still in development and is being made available in developer preview form at the Professional Developers Conference 2003. Indigo is a set of additional .NET managed class libraries, and is fully compatible with the "Whidbey" Visual Studio tools. A developer preview of Indigo is also being provided at the Professional Developers Conference 2003.

Is the PDC preview release of Indigo feature complete?

No. The version of Indigo being delivered at the PDC is a developer preview. Later releases will incorporate new functionality into Indigo, although no specific announcements are being made at this time. Also, Microsoft continues to work with a broad set of customers to ensure Indigo meets their core requirements before it ships.

posted on 2003-10-30 14:48:00 by uestc95  评论(0) 阅读(1901)

A Guide to Developing and Running Connected Systems with Indigo

Code Name Indigo

A Guide to Developing and Running Connected Systems with Indigo


Don Box

 

This article was based on a pre-PDC build of Microsoft Windows Code Name "Longhorn" and all information contained herein is subject to change.

Note: This document was developed prior to the product's release to manufacturing and, as such, we cannot guarantee that any details included herein will be exactly the same as those found in the shipping product. The information represents the product at the time this document was printed and should be used for planning purposes only. Information subject to change at any time without prior notice.


SUMMARY This article describes a collection of new programming frameworks that are part of "Longhorn," the upcoming version of Windows. "Indigo," the code name for this framework, provides rich support for service-oriented design that is complementary to traditional object-oriented approaches. Indigo marries the best features of .NET Remoting, ASMX, and .NET Enterprise Services into a unified programming and administration model. Indigo's deep support for standard protocols, including HTTP, XML, and SOAP, makes it easier to integrate applications and services without sacrificing security or reliability.


 

he upcoming version of Microsoft Windows code-named "Longhorn" will include a unified programming model and communications infrastructure for developing connected systems. This infrastructure, code-named "Indigo," simplifies development through a service-oriented programming model in which autonomous programs are composed using asynchronous message passing. To enable this programming model, Indigo provides a rich set of technologies for creating, consuming, processing, and transmitting messages.
  One of the key benefits of Indigo is that it provides a unified programming model and protocol stack for all common language runtime (CLR)-based remoting technologies. Indigo marries the best of .NET Remoting, ASMX, System.Messaging, and .NET Enterprise Services into a single framework, allowing developers to freely combine features such as declarative transactions, pluggable interceptors and transports, and XML Schema-based serialization.
  Moreover, Indigo unifies a wide range of transports (HTTP, TCP, UDP, IPC), security mechanisms (public and symmetric keys, certificates), topologies (point-to-point, end-to-end through intermediaries, peer-to-peer, publish-and-subscribe), and assurances (transacted, reliable, durable) enabling Indigo to provide rich connectivity to many existing systems.
  Indigo makes service-oriented programming viable in a broad spectrum of mainstream applications. By taking advantage of various facilities of both the CLR and Windows, Indigo can be used in performance-sensitive situations such as single-host and even single-process integration. This scale-invariance makes Indigo-based services accessible to a broader range of deployment options than current technologies.
  Because interoperability and reach are important, Indigo has deep support for both XML and SOAP, as well as for the emerging advanced Web Service protocols that add security, reliability, and transactions to SOAP-based applications.
  As part of Windows Longhorn, Indigo is available to every Longhorn application. Indigo will also be available as a separate download for Windows XP and Windows Server 2003. A small number of advanced features or optimizations of Indigo may only be available on Longhorn due to intrinsic differences between the operating systems. However, Indigo provides a consistent service-oriented programming model no matter which operating system it is deployed on.

Service-orientation Fundamentals
  Indigo is based on the principles of service-oriented architecture and programming. Service-orientation is an important complement to object-orientation that applies the lessons learned from component software, message-oriented middleware and distributed object computing. Service-orientation differs from object-orientation primarily in how it defines the term "application." Object-oriented development focuses on applications that are built from interdependent class libraries. Service-oriented development focuses on systems that are built from a set of autonomous services. This difference has a profound impact on the assumptions one makes about the development experience.
  In Indigo, a service is simply a program that one interacts with via message exchanges. A set of deployed services is a system. Individual services are built to last—the availability and stability of a given service is critical. The aggregate system of services is built to change—the system must adapt to the presence of new services that appear a long time after the original services and clients have been deployed.
  Service-oriented development is based on the four fundamental tenets that follow:
Boundaries are explicit A service-oriented application often consists of services that are spread over large geographical distances, multiple trust authorities, and distinct execution environments. The cost of traversing these various boundaries is nontrivial in terms of complexity and performance. Service-oriented designs acknowledge these costs by putting a premium on boundary crossings. Because each cross-boundary communication is potentially costly, service-orientation is based on a model of explicit message passing rather than implicit method invocation. Compared to distributed objects, the service-oriented model views cross-service method invocation as a private implementation technique, not as a primitive construct—the fact that a given interaction may be implemented as a method call is a private implementation detail that is not visible outside the service boundary.
  Though service-orientation does not impose the RPC-style notion of a network-wide call stack, it can support a strong notion of causality. It is common for messages to explicitly indicate which chain弯月 of messages a particular message belongs to. This indication is useful for message correlation and for implementing several common concurrency models.
  The notion that boundaries are explicit applies not only to inter-service communication but also to inter-developer communication. Even in scenarios in which all services are deployed in a single location, it is commonplace for the developers of each service to be spread across geographical, cultural, and/or organizational boundaries. Each of these boundaries increases the cost of communication between developers. Service orientation adapts to this model by reducing the number and complexity of abstractions that must be shared across service boundaries. By keeping the surface area of a service as small as possible, the interaction and communication between development organizations is reduced. One theme that is consistent in service-oriented designs is that simplicity and generality aren't a luxury but rather a critical survival skill.
Services are autonomous Service-orientation mirrors the real world in that it does not assume the presence of an omniscient or omnipotent oracle that has awareness and control over all parts of a running system. This notion of service autonomy appears in several facets of development, the most obvious place being the area of deployment and versioning.
  Object-oriented programs tend to be deployed as a unit. Despite the Herculean efforts made in the 1990s to enable classes to be independently deployed, the discipline required to enable object-oriented interaction with a component proved to be impractical for most development organizations. When coupled with the complexities of versioning object-oriented interfaces, many organizations have become extremely conservative in how they roll out object-oriented code. The popularity of the XCOPY deployment and private assemblies capabilities of the .NET Framework is indicative of this trend.
  Service-oriented development departs from object-orientation by assuming that atomic deployment of an application is the exception, not the rule. While individual services are almost always deployed atomically, the aggregate deployment state of the overall system/application rarely stands still. It is common for an individual service to be deployed long before any consuming applications are even developed, let alone deployed into the wild. Amazon.com is one example of this build-it-and-they-will-come philosophy. There was no way the developers at Amazon could have known the multitude of ways their service would be used to build interesting and novel applications.
  It is common for the topology of a service-oriented application to evolve over time, sometimes without direct intervention from an administrator or developer. The degree to which new services may be introduced into a service-oriented system depends on both the complexity of the service interaction and the ubiquity of services that interact in a common way. Service-orientation encourages a model that increases ubiquity by reducing the complexity of service interactions. As service-specific assumptions leak into the public facade of a service, fewer services can reasonably mimic that facade and stand in as a reasonable substitute.
  The notion of autonomous services also impacts the way failures are handled. Objects are deployed to run in the same execution context as the consuming application. Service-oriented designs assume that this situation is the exception, not the rule. For that reason, services expect that the consuming application can fail without notice and often without any notification. To maintain system integrity, service-oriented designs use a variety of techniques to deal with partial failure modes. Techniques such as transactions, durable queues, and redundant deployment and failover are quite common in a service-oriented system.
  Because many services are deployed to function over public networks (such as the Internet), service-oriented development assumes not only that incoming message data may be malformed but also that it may have been transmitted for malicious purposes. Service-oriented architectures protect themselves by placing the burden of proof on all message senders by requiring applications to prove that all required rights and privileges have been granted. Consistent with the notion of service autonomy, service-oriented architectures invariably rely on administratively managed trust relationships in order to avoid per-service authentication mechanisms common in classic Web applications.
Services share schema and contract, not class Object-oriented programming encourages developers to create new abstractions in the form of classes. Most modern development environments not only make it trivial to define new classes, modern IDEs do a better job guiding you through the development process as the number of classes increases (as features like IntelliSense provide a more specific list of options for a given scenario).
  Classes are convenient abstractions as they share both structure and behavior in a single named unit. Service-oriented development has no such construct. Rather, services interact based solely on schemas (for structures) and contracts (for behaviors). Every service advertises a contract that describes the structure of messages it can send and/or receive as well as some degree of ordering constraints over those messages. This strict separation between structure and behavior vastly simplifies deployment, as distributed object concepts such as marshal-by-value require a common execution and security environment which is in direct conflict with the goals of autonomous computing.
  Services do not deal in types or classes per se; rather, only with machine readable and verifiable descriptions of the legal "ins and outs" the service supports. The emphasis on machine verifiability and validation is important given the inherently distributed nature of how a service-oriented application is developed and deployed. Unlike a traditional class library, a service must be exceedingly careful about validating the input data that arrives in each message. Basing the architecture on machine-validatible schema and contract gives both developers and infrastructure the hints they need to protect the integrity of an individual service as well as the overall application.
  Because the contract and schema for a given service are visible over broad ranges of both space and time, service-orientation requires that contracts and schema remain stable over time. In the general case, it is impossible to propagate changes in schema and/or contract to all parties who have ever encountered a service. For that reason, the contract and schema used in service-oriented designs tend to have more flexibility than traditional object-oriented interfaces. It is common for services to use features such as XML element wildcards (like xsd:any) and optional SOAP header blocks to evolve a service in ways that do not break already deployed code.
Service compatibility is determined based on policy Object-oriented designs often confuse structural compatibility with semantic compatibility. Service-orientation deals with these two axes separately. Structural compatibility is based on contract and schema and can be validated (if not enforced) by machine-based techniques (such as packet-sniffing, validating firewalls). Semantic compatibility is based on explicit statements of capabilities and requirements in the form of policy.
  Every service advertises its capabilities and requirements in the form of a machine-readable policy expression. Policy expressions indicate which conditions and guarantees (called assertions) must hold true to enable the normal operation of the service. Policy assertions are identified by a stable and globally unique name whose meaning is consistent in time and space no matter which service the assertion is applied to. Policy assertions may also have parameters that qualify the exact interpretation of the assertion. Individual policy assertions are opaque to the system at large, which enables implementations to apply simple propositional logic to determine service compatibility.

What is Indigo?
  Indigo is a set of .NET Framework-based technologies for building and running connected systems. Indigo is the next step in the evolutionary path that started with COM, COM+, and MSMQ, and continues through .NET Remoting, ASMX, System.Messaging, and .NET Enterprise Services. Indigo subsumes these technologies and offers a single unified programming experience for developing services using any CLR-compliant language.
  As shown in Figure 1, the major subsystems of Indigo are the Indigo service model, the Indigo connector, hosting environments, and system and messaging services.

Figure 1 Indigo Architecture
Figure 1 Indigo Architecture

Indigo service model The Indigo service model makes service-oriented development explicit and simple from any CLR-targeted language. Developers use declarative attributes to mark up which aspects of their type should form the external contract of a service. The Indigo service model supports two kinds of contracts: data contracts and service contracts. Data contracts are structural in nature and describe the external format of a CLR type. A data contract is analogous to an XML Schema definition. A service contract is behavioral in nature and describes the pattern of message exchanges that are used to interact with a service. Service contracts are analogous to WSDL portType definitions. The Indigo service model supports both code-first and contract-first development models, including support for Web Service Description Language (WSDL) and XML Schema import/export.
  The primary function of the Indigo service model is to associate user-defined code with incoming messages. This is accomplished using the [ServiceMethod] attribute. Methods marked with this attribute support either one-way messaging or correlated request/reply messaging, depending on the value of the OneWay property. Methods marked as service methods can be declared to work in terms of the entire message or (if desired) in terms of typed parameters. The messages themselves can be viewed as either strongly-typed objects or as XML information sets (infosets).
  The Indigo service model provides instance and context management for a service. Indigo routes incoming messages to instances of user-defined service types. Developers use declarative attributes to control how instances are associated with incoming messages as well as how the session management feature of Indigo routes multiple messages to a common session object. Additionally, the Indigo service model provides developers with explicit control over the propagation of execution context (causality, call context, transactions) between cooperative services.
  Finally, the Indigo service model provides declarative behaviors that automate security and reliability. These attributes influence the behavior of Indigo as methods enter and leave a service, enforcing the policies that are initially declared by the developer and then made concrete through configuration by the administrator.
  Like ASMX, Indigo enables services to be consumed without sharing assemblies or source code. Additionally, Indigo provides support for ASMX compatibility that will allow many ASMX-based Web Services to become Indigo-based services with relatively little modification.
The Indigo connector The Indigo connector is a managed framework that provides secure and reliable message-based connectivity. The Indigo connector is a layered I/O framework that is based on the SOAP data and processing model. The Indigo connector allows you to build message-based applications independent of transport or target platform using a small number of concepts (port, message, channel) all of which are described later in this article. The Indigo connector is designed to have a small footprint and excellent throughput and latency characteristics, which enables it to be used in performance-sensitive systems.
  The Indigo connector is based on ports and channels. A port represents a location in network space and provides a base Uniform Resource Identifier (URI) for all services that it hosts. A channel is an I/O device that services use to send and receive messages through their port. Some channels are transport channels that map underlying communication mechanisms to Indigo. Other channels are messaging channels that provide a particular messaging discipline or quality of service on top of one or more transport channels. The connector also includes a message encoder that allows encodings to be added to the system to translate between the abstract data model used internally by Indigo and byte sequences used by a specific transport. The serialization layer takes the world of CLR objects and classes and distills them to a simple data model suitable for sharing across service boundaries.
  The Indigo connector has explicit support for intermediaries that include firewalls, proxies, and gateways. The intermediary model of the Indigo connector is consistent with the SOAP processing model. While direct communication with a service is supported, Indigo assumes that a direct connection is the exceptional circumstance, not the rule. Instead, Indigo adapts to configuration, metadata, and service policy to determine the best route for a message and will take advantage of gateways or proxies as needed. Moreover, the Indigo connector vastly simplifies the creation of application-level gateways that can offload work from back-end services by providing message validation, security enforcement, and content-based load balancing.
  The presence of intermediaries often means that there is no single end-to-end transport connection between the sender and ultimate receiver. To ensure that message delivery is reliable in these situations, Indigo implements end-to-end reliable messaging over SOAP using the WS-ReliableMessaging protocol. The Indigo connector provides two modes of reliable messaging: express and durable. Express messaging uses in-memory buffers to hold messages in transit as they travel from the source to the destination. There are no guarantees that an express message will be sent if the sender crashes immediately after sending the message. In contrast, durable messages use on-disk buffers and provide delivery guarantees even in the face of system crashes.
  The Indigo connector provides intrinsic support for secure messaging that provides end-to-end protection independent of message transport. Both message-based and session-based modes are supported. Session-based security is the preferred model as both signing and encryption can use a more lightweight session key that is negotiated as part of session establishment. Message-based security is needed for disconnected or datagram scenarios in which the receiver of the message is not available at the time of transmission. Both modes support the WS-Security family of protocols (WS-Trust and WS-Federation), ensuring interoperation with non-Indigo Web Services even in the face of intermediaries. Indigo also takes advantage of transport-level security when possible (for example, when a direct TCP/SSL connection between sender and receiver is used).
Hosting environments The Indigo connector and service model can be explicitly loaded and used in any AppDomain on the system. This makes Indigo well suited for exposing a service-oriented facade to any piece of managed code. Initializing the Indigo connector in your AppDomain provides you with basic "service dialtone" independent of how your AppDomain is created. In fact, how your AppDomain is started is completely outside the scope of the Indigo connector.
  To make Indigo accessible to the widest possible range of developers, various hosting systems currently used on the Windows platform (such as svchost.exe and dllhost.exe) have been adapted to specifically support Indigo-based services. The most interesting of these hosting sytems is ASP.NET and IIS.
  With the release of Indigo, ASP.NET now provides a system-wide facility for managing AppDomains and OS processes. This allows Indigo-based services to be demand-started based on messages that arrive on any properly configured transport. Indigo has built-in support for TCP, HTTP, and Interprocess Communication (IPC) transports. Indigo hosting allows applications to be associated with URI suffixes much like the IIS model for mapping URI suffixes to VRoots. Unlike IIS, however, Indigo is not tied to a particular transport protocol or programming model.
  Indigo-based services that are hosted using ASP.NET gain an additional set of management services , including configurable recycling and passivation both at the process/AppDomain level as well as at the individual service level. Indigo also supports basic health monitoring for processes, and AppDomains. A notable new feature to ASP.NET's hosting facilities is the ability for service code to participate in service management (start, stop) requests. This helps services that have intermediate work avoid process recycling at inopportune moments. Most new server-based Indigo services are expected to use ASP.NET hosting, which results in a common configuration and management experience for all managed middle-tier code.
System and messaging services An Indigo-based system has several system services that provide essential functionality to all services. One of these services is identity federation. An upcoming version of the security system in Windows supports a federation service that allows identities from foreign trust boundaries to be managed and validated. The Windows federation service uses WS-Federation to securely broker the authentication between the service and the corresponding trust authority.
  Indigo also provides significant support for transactional programming. Indigo-enabled versions of Windows support a service-based transaction manager that may be accessed via the System.Transactions framework or the WS-AtomicTransactions protocol. The new System.Transactions framework makes transactional programming simple and efficient throughout the platform (it supports SQL Server, ADO.NET, MSMQ, distributed transaction coordinator (DTC), etc). System.Transactions supports both an explicit programming model based on the ITransaction interface as well as an implicit programming model in which transactions are automatically managed by Indigo. Both models are available to Indigo-based apps.
  System.Transactions provides a new in-memory transaction manager that allows volatile transactions (that is, transactions that do not involve durable resources) to commit or roll back efficiently without incurring any disk I/O. To support durability, the in-memory transaction manager will transparently promote volatile transactions to durable transactions by coordinating through a disk-based transaction manager like the DTC the moment a durable resource manager enlists itself with a transaction.
  System.Transactions defines a simple managed interface for writing both volatile and durable resource managers. System.Transactions also supports any resource manager that can speak either OLE transactions or the broadly adopted WS-AtomicTransaction protocol. To enable efficient transacted access to the file system, the Longhorn version of System.Transactions directly supports the Kernel Transaction Manager (KTM) and Transactional NTFS (TxNTFS).
  Indigo also provides implementations of many of the common abstractions used in messaging applications. Specifically, Indigo provides simple yet extensible versions of queues, eventing, and content-based routing that can be used in any Indigo-based app.

Programming Indigo
  The Indigo model is based on four simple concepts. First, a message is a transmissible piece of data that adheres to the SOAP data model. Messages have zero or more headers and a body and in Indigo are represented by the concrete Message class. Though Indigo allows objects with arbitrary methods to be stored in a message, all message parts may be interacted with uniformly according to the SOAP and XML data models.
  Second, messages flow between ports. Indigo ports are endpoints for communications between services. A port can send and receive messages independent of transport. Ports come in two flavors: anonymous and named. Named ports can be explicitly addressed independent of any session or connection. Anonymous ports can only be addressed implicitly as part of an established communication session. The only messages an anonymous port will receive are responses to messages sent from that port.
  Third, a service is an opaque piece of code behind a port. Indigo refers to the executable code that resides behind a port as a service. Services have both policy and contract; policy indicates the capabilities and requirements of the service and contract indicates the acceptable message exchanges that the service can participate in.
  Fourth, services communicate with their ports via channels. Services can create and use a range of channels to build an application; the properties, policies, and behaviors of a channel vary based on the characteristics of the communication services the channel provides. For example, a dialog channel can be created that connects another service (identified by a URL). The dialog channel provides the ability to set a transfer assurance policy of "exactly-once, in-order" delivery; such a channel can be used to ensure messages are delivered reliably.
  The diagram in Figure 2 shows the relationship between messages, ports, channels, and services.

Figure 2 Relationships
Figure 2 Relationships

  The easiest way to make these concepts concrete is to look at some code. The code shown in this section is written against the PDC build of Indigo—naturally the details are subject to change between now and the final release. Here is the smallest possible Indigo service written in C# using only the Indigo connector:

using System;

using System.MessageBus;

 

class app {

  static void Main() {

// create and open a named port

    Port port = new Port(new

                 Uri("soap://localhost/simple"));

    port.Open();

// wait forever

    Console.ReadLine();

  }

}


  This service creates a new named port whose relative URI is "/simple" and is accessible over all installed transports. Indigo treats the "soap:" URI scheme as the transport-neutral address of the service. The Indigo connector will project this address onto both TCP and HTTP transports automatically, enabling the service to be addressed via any of these URIs:

soap://localhost/simple

http://localhost/simple

soap.tcp://localhost/simple

Unless an application needs to explicitly control transport selection, soap: is the preferred URI scheme and therefore is used throughout the remainder of this article.
  The service just shown is extremely flexible—you can send it any sort of message over any transport and it will silently drop the message onto the floor. Writing code that touches the message requires a little more work. Figure 3 shows a service that when sent a message whose content is a simple string, prints that string to the console.This service assumes that the body of the message is a simple string and will consistently and reliably fail if the body of the message is anything else.
  To allow services to cope with the body in a more data-oriented form, Indigo also gives you access to message content as raw XML-structured data using System.Xml. The service in Figure 4 dumps the content of every message into an XML text file.
  This program takes advantage of the fact that the body of the message is always accessible via a streaming XmlReader interface. This capability is important when dealing with large messages, as the forward-only traversal model of XmlReader allows incremental processing to take place along the way as message data is streamed into memory.
  The Indigo connector defines a small kernel of managed types for processing messages. The most central of these types is the concrete Message class, which is shown in Figure 5. The Message class maintains an ordered list of headers and a single body which represents the content of the message. For convenience, the Action header (as defined by WS-Addressing as well as the HTTP bindings for SOAP) is called out as a distinguished property. Each message header implements the abstract MessageHeader interface (shown in Figure 6) that exposes core SOAP-isms such as mustUnderstand and actor/role. The body of the message must implement the abstract MessageContent interface which supports both object-based and XML-based access.
  Next to the Message class, the most important message processing type is easily IMessageHandler. The IMessageHandler interface represents a piece of message processing code and has a single method that that is used to invoke the message processor: ProcessMessage.

public interface IMessageHandler {

  bool ProcessMessage(Message msg);

// async support elided for clarity

}


  In addition to the primary ProcessMessage method, the IMessageHandler interface also provides several methods for interacting with the IAsyncResult idiom used by asynchronous method execution. Implementations that want the default asynchronous behavior (such as the examples shown at the beginning of this section) often derive from the SyncMessageHandler abstract base class and provide only a ProcessMessage method body.
  Recall that messages support streaming I/O over the body of the message. This means that message handlers that traverse the body effectively render the message useless for all subsequent use. For this reason, the ProcessMessage method returns a boolean indicating whether or not the message has been "consumed." If the body has not been consumed, handlers return true from ProcessMessage indicating that the message is still viable for further processing. If a handler consumes the message body, it is required to return false from ProcessMessage and is required to call Close on the message object as well, freeing up any of the underlying resources held by the message.
  The following example demonstrates how to consume a message using a series of message handlers:

static void

ConsumeMessage(IList code,

               Message data) {

  bool live = true;

  for (int i=0; i < code.Count && live; i++)

    live = code[i].ProcessMessage(data);

 

  if (live)

    data.Close();

}


  The third and final core message processing type is IMessageProducer. IMessageProducer is a simple interface that models message sources and, as shown here, has only one public member, the Handler property:

public interface IMessageProducer {

  IMessageHandler Handler { get; set; }

}


  You've already seen an implementation of this interface. The Port.ReceiveChannel property used in the previous service examples implements the IMessageProducer interface. Code that wants to process messages that arrive on a port simply attach themselves through the Handler property of the receive channel.
  Up to this point, you have only seen how messages are received. Indigo obviously allows messages to be sent as well—this capability is exposed via a port's send channels. Every port has a default send channel (exposed via the Port.SendChannel property) that can be used to send a message that is explicitly addressed using a To header (per the WS-Addressing specification). This channel is typically only used to send reply messages created by the Message.CreateReply method:

static bool Process(Port port, Message request)

{

    Message data = request.CreateReply(null,

                                       "Blue");

    IMessageHandler channel = port.SendChannel;

    if (channel.ProcessMessage(data))

      data.Close();

}


  The more common usage is to create a per-address send channel by calling the Port.CreateSendChannel method as follows:

static void SendAMessage(Port source,

                         Uri target) {

{

    Message data = new Message(null, "Cyan");

    IMessageHandler channel =

            source.CreateSendChannel(target);

    if (channel.ProcessMessage(data))

      data.Close();

}

In this case, the send channel will add the required addressing headers to the message prior to handing it off to the underlying transport manager.

Where are We?
  This article has provided a glimpse into the capabilities of, and the motivations behind Indigo. Given the scope of the Indigo project, many aspects of the Indigo programming experience have been glossed over by this introductory article. As the beta release of Indigo grows nearer, watch the MSDN Web Services Developer Center for more complete coverage of Indigo.

 

 

Figure 3 Print Single Message
using System;
using System.MessageBus;

class MsgPrint : SyncMessageHandler {
  public override bool ProcessMessage(Message msg)
  {
    Console.WriteLine(
        msg.Content.GetObject(typeof(string))
    );
    msg.Close();
    return false;
  }  
}

class app {
  static void Main() {
    Port port = new Port(new 
                 Uri("soap://localhost/simple"));
    port.ReceiveChannel.Handler = new MsgPrint();
    port.Open();
// wait forever
    Console.ReadLine();
  }
}

Figure 4 Dump Message to File
using System;
using System.Xml;
using System.MessageBus;

class MsgDump : SyncMessageHandler {
  public override bool ProcessMessage(Message msg)
  {
    string fn = String.Format("output{0}.xml",
                              DateTime.Now.Ticks);
    XmlWriter xw = new XmlTextWriter(fn, null);
    xw.WriteNode(msg.Content.Reader, false);
    xw.Close(); 
    msg.Close();   
    return false;
  }  
}

class app {
  static void Main() {
    Port port = new Port(new 
                 Uri("soap://localhost/simple"));
    port.ReceiveChannel.Handler = new MsgDump();
    port.Open();
// wait forever
    Console.ReadLine();
  }
}

Figure 5 The Message Class
public class Message  {

// public constructors
  public Message();
  public Message(Uri action);
  public Message(Uri action, object obj);
  public Message(Uri action, MessageContent content);
  public Message(MessageException exception);

// create message targeted at sender
  public Message CreateReverse();
  public Message CreateReverse(Uri action);
  public Message CreateReverse(Uri action, object obj);
  public Message CreateReverse(Uri action, MessageContent content);
  public Message CreateReverse(MessageException exception);

// create correlated reply targeted at sender
  public Message CreateReply();
  public Message CreateReply(Uri action);
  public Message CreateReply(Uri action, object obj);
  public Message CreateReply(Uri action, MessageContent content);
  public Message CreateReply(MessageException exception);

// public operations
  public Message Clone();
  public void Close();

// public properties
  public Uri Action { get; set; }
  public MessageHeaderCollection Headers { get; }
  public MessageContent Content { get; set; }
}

Figure 6 Message Headers and Body
public abstract class MessageHeader {
// protected constructors
  protected MessageHeader(bool mustUnderstand, Uri role);
  protected MessageHeader(MessageHeader source);

// SOAP processing/data model properties
  public abstract string Name { get; }
  public abstract string Namespace { get; }
  public bool MustUnderstand { get; }
  public Uri Role { get; }
  public bool DidUnderstand { get; set; }

// header serialization methods and properties
  public abstract MessageHeader Clone();
  public virtual XmlElement Element { get; }
  public abstract void WriteTo(XmlWriter writer);
  public abstract bool CanWrite { get; }
  public virtual bool CanTransmit { get; }
}

public abstract class MessageContent {
// object I/O
  public abstract object GetObject(Type type);

// XML I/O
  public virtual XmlReader Reader { get; }
  public abstract void WriteTo(XmlWriter writer);

// async XML I/O support
  public virtual IAsyncResult BeginWriteTo(XmlWriter writer, 
                                           AsyncCallback callback, 
                                           object state);
  public virtual void EndWriteTo(IAsyncResult result);

// public properties and methods
  public virtual bool IsEmpty { get; }
  public virtual bool IsException { get; }

  public abstract MessageContent Clone();
  public virtual void Close();

}


Don Box is an architect on the Indigo project at Microsoft, working on next generation Web Service protocols and plumbing. His interests include type systems for XML and Web Services, metadata, discovery, and service-oriented software integration. Don's work with Web Services began in 1998 as one of the original authors of the SOAP specification. Don's latest book is Essential .NET Volume 1: The Common Language Runtime (Addison-Wesley, 2002).


From the January 2004 issue of MSDN Magazine.
Get it at your local newsstand, or better yet, subscribe.

 

posted on 2003-10-30 14:46:00 by uestc95  评论(0) 阅读(1990)

Microsoft "Indigo" Frequently Asked Questions

Microsoft "Indigo" Frequently Asked Questions

 

 

posted on 2003-10-30 14:41:00 by uestc95  评论(0) 阅读(1191)

Some of the new features from ASP.NET 2.0 (Whidbey Alpha)

Some of the new features from ASP.NET 2.0 (Whidbey Alpha)

 

posted on 2003-10-27 21:10:00 by uestc95  评论(0) 阅读(1203)

PDC 2003上一些产品/技术的研发代号

Longhorn: Next version of Windows; will come in both client and server flavors. Client is expected in 2006

Yukon: Next version of SQL Server database, expected to ship in latter half of 2004

Whidbey: Next version of Visual Studio tool suite; expected to ship in latter half of 2004

Aero: Longhorn 3D-rendering user interface

Avalon: Core set of Longhorn application programming interfaces (APIs) for handling graphics/presentation chores

Indigo: Next release of Microsoft's Web-services infrastructure that will underlie Longhorn ; will include .NET Remoting + MSMQ + ASMX + .NET Enterprise Services (a k a COM+)

WinFS: Windows File System data-store that Longhorn will borrow from Microsoft's SQL Server Yukon database; will be able to store XML and metadata in a single place

Palladium : Microsoft's Next Generating Secure Computing Base (NGSCB) secure-OS subsystem that will debut in Longhorn

Source: Microsoft Watch

posted on 2003-10-26 14:38:00 by uestc95  评论(4) 阅读(1288)

MS后台智能传送服务(BITS,Background Intelligent Transfer Service)

我想有些朋友可能在某些需要实现客户端/服务器端传输文件的项目中会需要到。

后台智能传送服务 (BITS) 是一个 Windows 组件,它可以在前台或后台异步传输文件,为保证其他网络应用程序获得响应而调整传输速度,并在重新启动计算机或重新建立网络连接之后自动恢复文件传输。

通过BITS可以实现与IIS服务器相互传输文件,但是不影响你浏览叶面,也就是可以做到同步或者异步。

Microsoft 后台智能传输服务 (BITS) 自述文件
2003 年 8 月

本文档提供 Microsoft 后台智能传输服务文档中未能包括的一些最新信息或其他补充信息。

目录

  1. 简介
  2. 安装
    • BITS 客户端组件
    • BITS 服务器组件
  3. 已知问题

1. 简介

感谢您安装后台智能传输服务 (BITS) 版本 1.5。 应用程序使用 BITS 通过 HTTP 进行后台或前台文件传输。 BITS 在后台传输文件,可以使其他网络应用程序保持响应。 BITS 要求安装有与 HTTP 1.1 兼容的服务器才能下载文件,要求安装有 BITS Internet 信息服务 (IIS) 扩展才能上载文件。 有关完整的文档,请参阅 Platform SDK 或 MSDN 中的 BITS。

2. 安装

BITS 要求安装 WinHttp。 在安装 BITS 时,安装程序会同时安装 WinHttp。 可以从命令行运行安装程序, 并且可以使用下列可选开关:

  • -q
    以无提示模式运行安装程序,忽略所有用户界面对话框。
  • -z
    阻止安装程序在安装结束时自动重新启动系统。

注意:使用任何一个命令行选项时,意味着最终用户同意 BITS 1.5 EULA 中的条件。 如果随产品安装重新分发此软件包,请参阅“BITS 1.5 SDK 补充许可协议”。

安装时会写入两个日志文件:

  • %windir%\bitssetup.log
  • %windir%\setupapi.log

BITS 客户端组件

客户端组件可以安装在运行 Microsoft Windows XP 或 Windows 2000 操作系统的计算机上。 如果计算机运行的是 Windows Server 2003 家族的某个成员,则不需要安装此组件: 该操作系统中附带有此组件。 BITS 1.5 不能在以下操作系统上运行: Windows Millennium Edition、Windows NT、Windows 98/SE、Windows 95 和 Windows 3.1。

安装 BITS 1.5 客户端组件之后,如果将 Windows 2000 Professional 升级到 Windows 2000 Service Pack 3 或 Service Pack 4,或者升级到 Windows XP(或 Windows XP Service Pack 1),此版本的 BITS 不会被其早期版本(在 Windows XP 中)取代。 但是,随 BITS 1.5 安装的其他系统组件可能会被其早期版本取代。 因此,我们建议在完成此类升级后重新安装 BITS 1.5。 如果安装的 Windows 版本包含更高版本的 BITS,BITS 会进行相应的升级。 请注意,在运行 Windows XP 的计算机上运行该安装程序时会创建一个还原点。

在 Windows 2000 上,如果客户端安装失败,并出现错误“指定的服务已标记为删除”,其错误代码为 0x80070430(十进制: -2147023824),重新启动计算机即可解决此问题。

安装程序将 BITS 1.5 客户端 EULA 安装在以下位置: %windir%\system32\bits\BITS_v15_Client_EULA.txt。

BITS 服务器组件

BITS 服务器扩展只能安装在运行 Windows 2000 Server 家族的某个成员的计算机上。 BITS 服务器组件要求 Windows 2000 Server 上安装有 IIS。 如果计算机运行的是 Windows Server 2003 家族的某个成员,那么可以使用“可选组件管理器”来安装此版本的 BITS。

请注意,如果未配置虚拟目录来使用 BITS 服务器组件,将不会启动该组件。 可以使用“添加或删除程序”来删除服务器组件。 如果将服务器组件安装在运行 Windows Server 2003 家族的某个成员的计算机上,请使用“可选组件管理器”来删除此组件。

安装程序将 BITS 1.5 服务器 EULA 安装在以下位置:%windir%\system32\bits\BITS_v15_Server_EULA.txt。

3. 已知问题

将计算机还原到安装 BITS 1.5 客户端之前的还原点时,那时处于活动状态的任何 BITS 作业都会产生一些仅完成部分下载的临时文件。在回滚到还原点时,不会删除这些临时文件(如果有)。 如果存在此类仅完成部分下载的文件,它们将很难被发现,并且会占用系统上的一些磁盘空间,但是对整个系统没有其他影响。 要检查 BITS 队列中的作业,请运行 bitsadmin.exe /list /allusers。 如果队列中包含作业,请对每个作业运行下列命令来取消作业: bitsadmin.exe /cancel job_name

有关其他已知问题,请参阅 Microsoft 知识库 http://support.microsoft.com 中的 KB 文章 #331716:“List of Known Issues for Background Intelligent Transfer Service (BITS)”(英文)。 您也可以在 microsoft.public.windows.backgroundtransfer 新闻组中张贴与 BITS 有关的问题和建议。

如果希望就某问题向 Microsoft 产品支持服务咨询,请提供 %windir%\bitssetup.log 和 %windir%\setupapi.log 文件的副本。

 

后台智能传送服务版本 1.5(客户端组件)

后台智能传送服务版本 1.5(服务器组件)

后台智能传送服务版本 1.5 (SDK 包)

posted on 2003-10-26 01:48:00 by uestc95  评论(63) 阅读(32028)

JAVA社区在Web Service规范实现方面已经先行一步了

一直以来微软的WSE都是目前实现WS-I规范比较好的一个技术框架,但是目前至少IBM已经给出了基于java的WS-AT规范的实现,也就是:Web Services Atomic Transaction for WebSphere Application Server,而在WSE2.0技术预览版本中我还没有真正看到这方面的实现。

在以前无论是DCOM结构还是J2EE结构都提供基于分布式的事务控制,但是自从WS出现以来,一直没有很好的解决WS的事务问题,尤其是基于WS的分布式事务控制问题,也就是说如果我在一个应用中调用了WS A和WS B,那么很不幸的告诉你,你将没有办法控制使得WS A和WS B做到同一个事务中,如果执行完毕A,之后执行B的时候出现了异常,你只能接受无法回滚的现实,笑脸

但现在IBM至少已经给出了解决此问题的一个技术预览,他在WAS(WebSphere Application Server)中提供对了对于WS-AT(WS-AtomicTransaction)以及WS-COOR规范的支持。

Web Services Coordination

WS-AtomicTransaction

因为WS-I组织的发起人就是Microsoft和IBM,当然BEA也在内,所以我想WSE2.x版本一定会很快支持此协议,但是这并不能确定,因为至少在Web Services Enhancements 2.0 Technology Preview
中没有看到此迹象。

 

posted on 2003-10-26 01:19:00 by uestc95  评论(6) 阅读(3732)

PDC2003 上的Indigo架构

"Indigo"是微软为了真正推进Web Service所作的一个支撑架构。

Web Service之所以这几年一直雷声大雨点小,是因为WS领域很多的问题都没有彻底解决,比如事务控制,安全机制,消息控制等等,我想这个微软打算要在2006年和Longhorn一同推出的这个WS解决方案架构如果真的能解决这些问题,那么才是WS真正走向成熟商业应用的时候。

但是我们还要等待至少2年,不知道这两年内JAVA世界是否会静静的等待?NO。

MS要加把劲了阿。

 

下面是在PDC2003上的有关"Indigo"的会议,我想我们应当尽可能的在PDC2003期间关注这些事情。

"Indigo": Building Peer-to-Peer Applications
Track: Web/Services   Code: WSV306
Room: Room501ABC   Time Slot: Wed, October 29 5:00 PM-6:15 PM
Speakers: Daniel Jette, Todd Manion
Peer-to-Peer networking provides an infrastructure that enables people to communicate and share information securely with one another while being mobile. Learn how "Indigo" enables ISVs and corporate developers to easily develop, deploy and operate applications and services that work well together and scale without limit. Focus on the peer-to-peer landscape, the underlying technologies, and get an overview of the managed APIs developers can use to write applications.


"Indigo": Building Secure Distributed Applications with Web Services
Track: Web/Services   Code: WSV304
Room: Room 411-Theater    Time Slot: Wed, October 29 3:30 PM-4:45 PM
Speakers: Steve Millet
Learn how to develop, deploy and administer secure Web service applications using "Indigo". See the default security behavior of an "Indigo" application; then learn how to secure specific methods and classes of a Web application using code attributes and configuration settings--how these facilities can be varied for different deployment (single node, Web farm, etc.) and security infrastructures (intranet, Internet and b2b). This session briefly discusses the security object model and architectural details of how message bus supports familiar security services such as identity, authentication, authorization, confidentiality and integrity. Explore the extensibility of some of these security services (authentication, authorization and token frameworks) with the goal of demonstrating how a Web service developer can integrate their existing deployments with a new Web service-based application and explain how developers can extend their Web applications to facilitate federation across organizations in different trust domains.


"Indigo": Coming Attractions
Track: Web/Services   Code: WSV403
Room: Room 408AB   Time Slot: Thu, October 30 1:45 PM-3:00 PM
Speakers: Steve Swartz
Even as you read these words, the development team back in Redmond is hard at work on the next "Indigo" milestone. Come to this talk and get a sneak peak at how "Indigo" is evolving. Focus on the changes Microsoft is implementing that simultaneously simplify "Indigo" and make it more powerful.


"Indigo": The Web Services Protocols and Architecture
Track: Web/Services   Code: WSV404
Room: Room 411-Theater    Time Slot: Wed, October 29 2:00 PM-3:15 PM
Speakers: Omri Gazitt
Web Services are the foundation for the way developers will build distributed applications going forward. "Indigo" is Microsoft's programming model and framework for building connected applications and Web services, and is built on top of the WS protocols, a suite of specifications that will power the next phase of the Internet, much like TCP and HTTP powered the Web we have today. Learn about the architecture behind this protocol framework, and drill into the specifications: Security, Transaction, Reliable Messaging, Addressing, and Policy. See how vertical infrastructures can be built on top of this architecture.


"Indigo": Using XSD, CLR Types, and Serialization in Web Services
Track: Web/Services   Code: WSV303
Room: Room501ABC   Time Slot: Tue, October 28 5:15 PM-6:30 PM
Speakers: Doug Purdy
Serialization is one of the most important areas of any Web services platform infrastructure. Joining the worlds of XSD and CLR, serialization works to ensure the creation of interoperable and flexible Web services using the .Net languages and tools you are familiar with. This talk will focus on the next generation serialization support found in Indigo. Learn the new mechanisms for importing & exporting schemas, customizing Web service schemas, and controlling the serialization of CLR types. Whether you write schemas by hand or generate them from classes, this session will help you to design and implement world-class Web services


Architecting End-to-End Enterprise Solutions: InfoPath with BizTalk 2004, SQL Server, "Indigo", WSE and Line-of-Business Applications
Track: Data Systems   Code: DAT350
Room: Room 152/153   Time Slot: Wed, October 29 3:30 PM-4:45 PM
Speakers: Kamaljit Bath
Learn how to use InfoPath .NET support to architect compelling end-to-end enterprise solutions. Learn about key design principles and get guidelines to solve the integration challenge. Learn about integrating InfoPath with Web Services, Biz-Talk 2004, SQL Server, Share Point, Indigo, Siebel and SAP.

posted on 2003-10-23 02:36:00 by uestc95  评论(3) 阅读(1529)

看到ccBoy的评测网推荐的一本书《.NET Patterns: Architecture, Design, and Process 》

.NET Patterns: Architecture, Design, and Process
by Christian Thilmany (Author)


List Price:   $49.99
Price:   $49.99 & This item ships for FREE with Super Saver Shipping. See details.

Availability: Usually ships within 24 hours


13 used & new from $39.00

Edition: Paperback
连接地址

应当是一本不错的书籍,据ccBoy讲中文版11月中旬提交给出版社,不知道何时正式出版了。

 

posted on 2003-10-22 08:31:00 by uestc95  评论(2) 阅读(1650)

你知道AD & D 吗?

        最近看到一些好的书籍,都是关于游戏方面的。以前关注游戏也只是空闲的时候上网打一下而已,也没有了解到什么冬冬。只是最近打算做一个私人性质的东西时候才发现三本非常好的书籍:《龙与地下城玩家手册》《龙与地下城城主指南》《龙与地下城怪物图鉴》。这是一个拥有广大玩家的世界,自己以前竟然一点儿都没有了解甚至听说过,惭愧啊。。。

posted on 2003-10-17 21:53:00 by uestc95  评论(8) 阅读(1890)

一个很好的ASP.NET控件资源站点

这个站点提供了很多开放源代码的小控件,在我们使用ASP.NET编程的时候会有很好的效果,比如:如何控制表单的多次提交,如何提供类似WinForm下对话框等等。

关键是他还提供了所有的控件源代码,并持续的在主页更新。

::URL::http://www.metabuilders.com/default.aspx

posted on 2003-10-17 21:43:00 by uestc95  评论(4) 阅读(11570)

实现真正意义上的Web进度条

在到处浏览老外的Blogs的时候发现的一个咚咚,各位有兴趣的朋友可以看看,用的ASP.NET来实现真正意义上的进度条。

整理之后的文章和源代码:  Click Here

原文:Click Here

演示:Click Here

posted on 2003-10-17 21:43:00 by uestc95  评论(15) 阅读(6623)

直接操纵GAC目录

我们如果直接在浏览器中察看C:\Winnt\Assembly\  只能发现她成了一个特殊的目录,但是实际上她仍然是一个物理目录,我们可以通过如下的方法直接访问到她的本来面目:

C:\>subst T: c:\winnt\assembly\gac

注意后面有一个“\gac”,这样你直接访问磁盘T就好了。但是要小心操纵这个目录,否则出了问题就麻烦了。

在.NET 1.1 /1.2验证过了。

posted on 2003-10-17 21:42:00 by uestc95  评论(4) 阅读(2382)

非常有用的一些 .NET Tools 连接!

一个国外的BLog摘录下来的

Click Here

posted on 2003-10-17 21:40:00 by uestc95  评论(1) 阅读(1301)

Microsoft SQL Server 2004 (Yukon) Beta 1

今天终于拿到了寻觅已久的Microsoft SQL Server 2004 (Yukon) Beta 1。

这个版本是Yukon Private Beta 1,提供给指定客户测试用,里面包含了.NET Frameword 1.2 Alpha。
Yukon可以和已经存在的SQL Server2000共存,只是一定要先安装SQL Server 2000,之后再安装Yukon Beta1,这一点我在Windows Server 2003中测试通过了。


整个安装过程没什么意外,只是安装程序在最后配置Server的时候,由于我配置的模式是混合验证,并给sa指定了密码,但是总提示密码过期,后来在微软的新闻组microsoft.beta.yukon.setup才了解到原来是Yukon采用了新的安全机制导致的,并且由于Yukon在编译时作了限制,因此要将系统时间调整到7/10号之前,如果你在局域网内的话,还要将Windows Time Service停止,否则会被系统同步时钟。

这两天将会详细的研究一下Yukon Beta1,不过在PDC将会公布一个PDC版本的Yukon,应当也是Beta1,但是不知道区别有多大。而Yukon Beta2要等到2004年初才能发布,至于正式版本的Yukon我估计要到2004年中下旬了吧,:)

虽然我并没有签订微软关于Yukon的NDA(Non-Disclosure Agreement,不公开测试内容的协议),但是经ccBoy的提醒,我暂时将图片移除,:)

posted on 2003-10-17 21:39:00 by uestc95  评论(1) 阅读(2061)

【第1页/共2页,19条】
首页
前页
1

Powered by: Joycode.MVC引擎 0.5.2.0